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.
README
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)
| Tool | Description |
|---|---|
kicad.get_session_state |
Current session state and capabilities |
kicad.create_project |
Create a new KiCad project |
kicad.open_project |
Open an existing project |
kicad.list_projects |
Find projects in a directory |
kicad.save_project |
Save all project files |
kicad.help |
Workflow and tool documentation |
Schematic (13)
| Tool | Description |
|---|---|
kicad.add_component |
Add a symbol to the schematic |
kicad.add_power_symbol |
Add VCC, GND, +3V3, etc. |
kicad.set_value |
Set component value (10k, 100nF) |
kicad.set_reference |
Change reference designator |
kicad.set_component_field |
Set custom fields (MPN, supplier) |
kicad.delete_component |
Remove a component |
kicad.move_component |
Reposition a component |
kicad.add_wire |
Connect two points with a wire |
kicad.add_net_label |
Add a named net label |
kicad.add_global_label |
Add a cross-sheet label |
kicad.add_no_connect |
Mark unused pins |
kicad.annotate_schematic |
Auto-assign reference designators |
kicad.list_components |
List all components with details |
PCB (10)
| Tool | Description |
|---|---|
kicad.create_board_outline |
Draw the PCB boundary |
kicad.set_design_rules |
Set min trace/clearance/drill |
kicad.create_net_class |
Create net class with specific rules |
kicad.route_trace |
Route a copper trace |
kicad.place_via |
Place a via |
kicad.fill_zones |
Fill copper zones |
kicad.add_text |
Add silkscreen text |
kicad.add_line |
Add lines/shapes to layers |
kicad.design_summary |
Board statistics and sanity check |
kicad.list_footprints |
List all footprints on the PCB |
Export (7)
| Tool | Description |
|---|---|
kicad.export_netlist |
Export netlist from schematic |
kicad.export_gerbers |
Export Gerber manufacturing files (DRC-gated) |
kicad.export_bom |
Export Bill of Materials |
kicad.export_pdf |
Export schematic/PCB to PDF |
kicad.export_svg |
Export schematic/PCB to SVG |
kicad.run_drc |
Design Rules Check |
kicad.run_erc |
Electrical Rules Check |
Library (3)
| Tool | Description |
|---|---|
kicad.search_symbols |
Search component symbols |
kicad.search_footprints |
Search PCB footprints |
kicad.get_symbol_info |
Get 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_schfiles 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.