MCP Hub
Back to servers

eda-mcp

An MCP server for Electronic Design Automation that provides comprehensive tools for managing KiCad 9.x PCB design workflows. It enables users to create schematics, layout PCBs, perform design rule checks, and export manufacturing files through a standardized interface.

glama
Stars
1
Updated
Mar 7, 2026

eda-mcp

MCP server for EDA (Electronic Design Automation) tools. Currently supports KiCad 9.x with 39 tools covering the full PCB design workflow.

Requirements

Installation

git clone https://github.com/SaeronLab/eda-mcp.git
cd eda-mcp
uv sync

Claude Code Configuration

Add to your .mcp.json:

{
  "mcpServers": {
    "eda-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": ["--directory", "/path/to/eda-mcp", "run", "eda-mcp"]
    }
  }
}

Tools

Core (6)

ToolDescription
kicad.get_session_stateCurrent session state and capabilities
kicad.create_projectCreate a new KiCad project
kicad.open_projectOpen an existing project
kicad.list_projectsFind projects in a directory
kicad.save_projectSave all project files
kicad.helpWorkflow and tool documentation

Schematic (13)

ToolDescription
kicad.add_componentAdd a symbol to the schematic
kicad.add_power_symbolAdd VCC, GND, +3V3, etc.
kicad.set_valueSet component value (10k, 100nF)
kicad.set_referenceChange reference designator
kicad.set_component_fieldSet custom fields (MPN, supplier)
kicad.delete_componentRemove a component
kicad.move_componentReposition a component
kicad.add_wireConnect two points with a wire
kicad.add_net_labelAdd a named net label
kicad.add_global_labelAdd a cross-sheet label
kicad.add_no_connectMark unused pins
kicad.annotate_schematicAuto-assign reference designators
kicad.list_componentsList all components with details

PCB (10)

ToolDescription
kicad.create_board_outlineDraw the PCB boundary
kicad.set_design_rulesSet min trace/clearance/drill
kicad.create_net_classCreate net class with specific rules
kicad.route_traceRoute a copper trace
kicad.place_viaPlace a via
kicad.fill_zonesFill copper zones
kicad.add_textAdd silkscreen text
kicad.add_lineAdd lines/shapes to layers
kicad.design_summaryBoard statistics and sanity check
kicad.list_footprintsList all footprints on the PCB

Export (7)

ToolDescription
kicad.export_netlistExport netlist from schematic
kicad.export_gerbersExport Gerber manufacturing files (DRC-gated)
kicad.export_bomExport Bill of Materials
kicad.export_pdfExport schematic/PCB to PDF
kicad.export_svgExport schematic/PCB to SVG
kicad.run_drcDesign Rules Check
kicad.run_ercElectrical Rules Check

Library (3)

ToolDescription
kicad.search_symbolsSearch component symbols
kicad.search_footprintsSearch PCB footprints
kicad.get_symbol_infoGet symbol pins and properties

Architecture

src/eda_mcp/
├── server.py              # FastMCP server, tool registration
├── session.py             # Session state management
├── common/
│   ├── types.py           # ToolResponse, Position
│   └── errors.py          # Error hierarchy
└── plugins/
    └── kicad/
        ├── discovery.py   # KiCad path detection
        ├── guardrails.py  # Pre-export safety checks
        ├── worker.py      # Async pcbnew worker manager
        ├── worker_process.py  # Persistent pcbnew subprocess
        ├── sexp/
        │   ├── parser.py  # S-expression parser
        │   └── writer.py  # S-expression writer
        └── tools/
            ├── schematic.py  # Schematic manipulation via sexp
            ├── cli.py        # kicad-cli exports (Gerber, PDF, DRC)
            └── library.py    # Symbol/footprint search

Three integration paths:

  • S-expression parser/writer — Direct manipulation of .kicad_sch files with round-trip fidelity
  • Persistent pcbnew worker — JSON-RPC subprocess using KiCad's Python API for PCB operations
  • kicad-cli — Subprocess calls for exports, DRC, and ERC

Development

uv run pytest tests/ -v          # Run all tests
uv run ruff check src/ tests/    # Lint
uv run pyright src/              # Type check

License

MIT

Reviews

No reviews yet

Sign in to write a review