mcp-server-kicad
MCP servers for KiCad schematic, PCB, symbol, footprint, and project automation, enabling AI-assisted electronic design via tools for read/write, analysis, and exports.
README
mcp-server-kicad
MCP servers for KiCad schematic, PCB, symbol, footprint, and project automation.
Servers
| Server | Tools | Description |
|---|---|---|
mcp-server-kicad-schematic |
40 | Schematic read/write, ERC analysis, hierarchical labels, and exports (PDF, SVG, DXF, netlist, BOM) |
mcp-server-kicad-pcb |
29 | PCB read/write, DRC analysis, autorouting, and exports (Gerber, drill, 3D models, pick-and-place) |
mcp-server-kicad-symbol |
5 | Symbol library browsing, creation, SVG export, and library upgrade |
mcp-server-kicad-footprint |
4 | Footprint library browsing, SVG export, and library upgrade |
mcp-server-kicad-project |
24 | Project scaffolding, hierarchical sheets, hierarchy validation, annotation, and exports |
Installation
pip install mcp-server-kicad
Or run directly with uvx:
uvx --from mcp-server-kicad mcp-server-kicad-schematic
uvx --from mcp-server-kicad mcp-server-kicad-pcb
uvx --from mcp-server-kicad mcp-server-kicad-symbol
uvx --from mcp-server-kicad mcp-server-kicad-footprint
uvx --from mcp-server-kicad mcp-server-kicad-project
Claude Code Plugin
For Claude Code users, install the plugin to get MCP server configuration and schematic design skills bundled together:
claude plugin marketplace add ProductOfAmerica/mcp-server-kicad
claude plugin install kicad
The plugin automatically configures all five MCP servers and includes skills that teach layout conventions for schematic design. See skills/schematic-design/SKILL.md for details.
Configuration
Add the servers to your Claude Desktop or Claude Code MCP config. Set cwd to your KiCad project directory so the servers can auto-detect project files.
{
"mcpServers": {
"kicad-schematic": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-schematic"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-pcb": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-pcb"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-symbol": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-symbol"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-footprint": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-footprint"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-project": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-project"],
"cwd": "/path/to/your/kicad/project"
}
}
}
Project Path Resolution
The servers resolve file paths in this order:
- Auto-detect: Scans the current working directory for a
.kicad_profile and derives schematic, PCB, symbol library, and footprint library paths from it. - Environment variables:
KICAD_SCH_PATH,KICAD_PCB_PATH,KICAD_SYM_LIB,KICAD_FP_LIB, andKICAD_OUTPUT_DIRoverride auto-detected values. - Tool parameters: Every tool accepts an explicit path parameter that takes highest priority.
Environment Variables
| Variable | Description |
|---|---|
KICAD_SCH_PATH |
Path to .kicad_sch schematic file |
KICAD_PCB_PATH |
Path to .kicad_pcb PCB file |
KICAD_SYM_LIB |
Path to .kicad_sym symbol library file |
KICAD_FP_LIB |
Path to .pretty footprint library directory |
KICAD_OUTPUT_DIR |
Output directory for exports and reports |
Available Tools
Schematic Tools (40 tools)
Read Tools
| Tool | Description |
|---|---|
get_schematic_summary |
Get item counts for a schematic sheet |
list_schematic_components |
List all components (symbols) on a schematic sheet |
list_schematic_labels |
List all net labels on a schematic sheet |
list_schematic_wires |
List all wires on a schematic sheet |
list_schematic_global_labels |
List all global labels on a schematic sheet |
list_schematic_hierarchical_labels |
List all hierarchical labels on a schematic sheet |
list_schematic_sheets |
List all hierarchical sheet blocks on a schematic sheet |
list_schematic_junctions |
List all junctions on a schematic sheet |
list_schematic_no_connects |
List all no-connect flags on a schematic sheet |
list_schematic_bus_entries |
List all bus entries on a schematic sheet |
get_symbol_pins |
Get pin info for a symbol in the schematic's lib_symbols |
get_pin_positions |
Get absolute pin positions for a placed component (accounts for rotation/mirror) |
get_net_connections |
Get all connections for a named net (multi-hop BFS wire tracing) |
list_unconnected_pins |
List unconnected pins from ERC data |
Write Tools
| Tool | Description |
|---|---|
place_component |
Place a component in the schematic |
remove_component |
Remove a component by reference designator |
add_wires |
Add one or more wires between points (auto-creates junctions on T-connections) |
add_label |
Add a net label at a position |
add_junctions |
Add one or more junction dots |
add_lib_symbol |
Load a symbol definition from a .kicad_sym library into the schematic |
move_component |
Move a placed component to a new position |
set_component_property |
Set any property (Value, Reference, Footprint, etc.) on a placed component |
set_page_size |
Set the schematic page size |
add_global_label |
Add a global net label visible across all sheets |
add_hierarchical_label |
Add a hierarchical label for sheet-to-sheet connections |
remove_hierarchical_label |
Remove a hierarchical label by name or UUID |
modify_hierarchical_label |
Modify text, shape, or position of a hierarchical label |
add_power_symbol |
Place a power symbol (VCC, GND, +3V3, etc.) with auto PWR_FLAG |
add_text |
Add a text annotation to the schematic |
wire_pins_to_net |
Wire one or more pins to a named net |
auto_place_decoupling_cap |
Automatically place a decoupling capacitor near an IC |
connect_pins |
Wire two component pins together |
no_connect_pin |
Place a no-connect flag on an unused pin |
remove_label |
Remove a net label |
remove_wire |
Remove a wire segment |
remove_junction |
Remove a junction dot |
ERC Analysis
| Tool | Description |
|---|---|
run_erc |
Run Electrical Rules Check (ERC) on a schematic (supports project_path for hierarchy) |
Schematic Export Tools
| Tool | Description |
|---|---|
export_schematic |
Export schematic to PDF, SVG, or DXF format |
export_netlist |
Export schematic netlist |
export_bom |
Export Bill of Materials (BOM) as CSV |
PCB Tools (29 tools)
Read Tools
| Tool | Description |
|---|---|
list_pcb_footprints |
List all footprints on the PCB |
list_pcb_traces |
List all traces on the PCB |
list_pcb_nets |
List all nets on the PCB |
list_pcb_zones |
List all zones on the PCB |
list_pcb_layers |
List all layers on the PCB |
list_pcb_graphic_items |
List all graphic items on the PCB |
get_board_info |
Get board summary: footprint count, trace count, net count, thickness |
get_footprint_pads |
Get pad info for a placed footprint on the PCB |
Write Tools
| Tool | Description |
|---|---|
place_footprint |
Place a footprint on the PCB |
move_footprint |
Move a footprint to a new position |
remove_footprint |
Remove a footprint by reference designator |
add_trace |
Add a trace segment between two points |
add_via |
Add a via at a position |
add_pcb_text |
Add text to the PCB (silkscreen, fab layer, etc.) |
add_pcb_line |
Add a graphic line to the PCB (edge cuts, silkscreen, etc.) |
add_copper_zone |
Create an unfilled copper zone |
fill_zones |
Fill all copper zones on the board |
set_trace_width |
Change the width of existing traces |
remove_traces |
Remove trace segments matching filters |
add_thermal_vias |
Add a grid of thermal vias under a footprint pad |
set_net_class |
Create or update a net class with design rules |
remove_dangling_tracks |
Detect and remove trace segments with unconnected endpoints |
DRC Analysis
| Tool | Description |
|---|---|
run_drc |
Run Design Rules Check (DRC) on a PCB |
PCB Export Tools
| Tool | Description |
|---|---|
export_pcb |
Export PCB layers to PDF, SVG, or DXF |
export_gerbers |
Export Gerber files (all layers or specific layer list) |
export_3d |
Export PCB 3D model (STEP/STL/GLB) or render 3D view to PNG |
export_positions |
Export component position file (pick and place) |
export_ipc2581 |
Export PCB in IPC-2581 format for manufacturing data exchange |
autoroute_pcb |
Autoroute PCB traces using the Freerouting autorouter |
Symbol Tools (5 tools)
| Tool | Description |
|---|---|
list_lib_symbols |
List all symbols in a .kicad_sym library file |
get_symbol_info |
Get detailed pin and property info for a symbol in a library |
add_symbol |
Add a new symbol to a .kicad_sym library |
export_symbol_svg |
Export symbol library to SVG images |
upgrade_symbol_lib |
Upgrade a symbol library to current KiCad format |
Footprint Tools (4 tools)
| Tool | Description |
|---|---|
list_lib_footprints |
List all footprints in a .pretty library directory |
get_footprint_info |
Get pad and outline details for a footprint .kicad_mod file |
export_footprint_svg |
Export footprint to SVG |
upgrade_footprint_lib |
Upgrade a footprint library to current KiCad format |
Project Tools (24 tools)
Scaffolding
| Tool | Description |
|---|---|
create_project |
Create a KiCad 9 project (.kicad_pro + .kicad_prl + .kicad_sch) |
create_schematic |
Create a blank schematic file |
create_symbol_library |
Create a blank symbol library file |
create_sym_lib_table |
Create a sym-lib-table file |
Sheet Management
| Tool | Description |
|---|---|
add_hierarchical_sheet |
Add a hierarchical sheet with matching labels in the child |
remove_hierarchical_sheet |
Remove a hierarchical sheet block from a parent |
modify_hierarchical_sheet |
Modify sheet name, file, width, or height |
add_sheet_pin |
Add a pin to an existing hierarchical sheet block |
remove_sheet_pin |
Remove a pin from a hierarchical sheet block |
move_hierarchical_sheet |
Move a sheet block to a new position (including pins) |
duplicate_sheet |
Duplicate a sheet, copying the child file with new UUIDs |
reorder_sheet_pages |
Reorder sheets by specifying desired UUID order |
Hierarchy Inspection
| Tool | Description |
|---|---|
is_root_schematic |
Check if a schematic is the root or a sub-sheet |
list_hierarchy |
List the full sheet hierarchy tree from root |
get_sheet_info |
Get sheet details with pin/label matching status |
validate_hierarchy |
Check for orphaned labels/pins, direction mismatches, duplicate refs |
Cross-Sheet Analysis
| Tool | Description |
|---|---|
trace_hierarchical_net |
Trace a net across the hierarchy through pins and labels |
list_cross_sheet_nets |
List all nets crossing sheet boundaries |
get_symbol_instances |
List symbol instances from root schematic |
Annotation
| Tool | Description |
|---|---|
annotate_schematic |
Auto-assign reference designators respecting hierarchy |
Export & Utilities
| Tool | Description |
|---|---|
export_hierarchical_netlist |
Export netlist with hierarchy info (requires kicad-cli) |
flatten_hierarchy |
Flatten a hierarchical schematic into a single sheet |
run_jobset |
Run a KiCad jobset file |
get_version |
Get KiCad version information |
System Requirements
- Python 3.10+
- KiCad 9.x -- required for CLI-based tools (ERC, DRC, exports). The
kicad-clibinary must be onPATH. - The schematic and PCB read/write tools use kiutils for file parsing and do not require a KiCad installation.
Debugging
Use the MCP Inspector to test and debug the servers interactively:
npx @modelcontextprotocol/inspector mcp-server-kicad
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
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.