Server Kicad
FreeNot checkedMCP servers for KiCad schematic, PCB, symbol, footprint, and project automation, enabling AI-assisted electronic design via tools for read/write, analysis, and
About
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
PyPI version License: MIT Tests
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
Install Server Kicad in Claude Desktop, Claude Code & Cursor
unyly install mcp-server-kicadInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add mcp-server-kicad -- uvx mcp-server-kicadFAQ
Is Server Kicad MCP free?
Yes, Server Kicad MCP is free — one-click install via Unyly at no cost.
Does Server Kicad need an API key?
No, Server Kicad runs without API keys or environment variables.
Is Server Kicad hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Server Kicad in Claude Desktop, Claude Code or Cursor?
Open Server Kicad on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
LibreOffice Tools
Enables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, a
by passerbyflutterdannote/figma-use
Full Figma control: create shapes, text, components, set styles, auto-layout, variables, export. 80+ tools.
by dannoteLogo.dev
Search and retrieve company logos by brand or domain. Customize size, format, and theme to match your design needs. Accelerate design, prototyping, and content
by NOVA-3951PIX4Dmatic
Enables GUI automation for controlling PIX4Dmatic on Windows through MCP. Supports launching, focusing, capturing screenshots, sending hotkeys, clicking UI elem
by jangjo123Compare Server Kicad with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All design MCPs
