A professional Model Context Protocol server for KiCad EDA.
Project description
KiCad MCP Pro Server
AI-powered PCB and schematic design with KiCad. Works with Claude, Cursor, VS Code, Claude Code, and any MCP-compatible client.
Primary CI/CD and release automation runs in Azure DevOps. GitHub Actions in this repository are manual fallback workflows only.
Features
- Project-first workflow with
kicad_set_project(), recent project discovery, and safe path handling. - KiCad 10.x-first runtime with best-effort 9.x support and cross-platform CLI/library discovery.
- PCB tools for board inspection, tracks, vias, footprints, text, shapes, outline editing, and zone refill.
- Schematic tools for symbols, wires, labels, buses, no-connect markers, property updates, annotation, and IPC reload.
- Library tools for symbol search, footprint search, datasheet lookup, footprint assignment, and custom symbol generation.
- Validation tools for DRC, ERC, DFM, courtyard issues, silk overlaps, and schematic-versus-PCB footprint checks.
- Export tools for Gerber, drill, BOM, PDF, netlist, STEP, render, pick-and-place, IPC-2581, SVG, and DXF.
- MCP resources for live board/project state and prompts for first-board, schematic-to-PCB, and manufacturing workflows.
- Server profiles (
full,minimal,pcb,schematic,manufacturing) to reduce tool surface for clients.
Quick Start
Installation
Option 1: uvx (recommended)
uvx kicad-mcp-pro
Option 2: pip
pip install kicad-mcp-pro
kicad-mcp-pro
Option 3: uv
uv tool install kicad-mcp-pro
VS Code Configuration
Add this to .vscode/mcp.json:
{
"servers": {
"kicad": {
"type": "stdio",
"command": "uvx",
"args": ["kicad-mcp-pro"],
"env": {
"KICAD_MCP_PROJECT_DIR": "/absolute/path/to/your/kicad-project",
"KICAD_MCP_PROFILE": "pcb"
}
}
}
}
Note: ${workspaceFolder} may not be expanded in some VS Code MCP setups. Use an
absolute path for KICAD_MCP_PROJECT_DIR to avoid startup errors.
Codex Configuration
Add this to ~/.codex/config.toml (or project-scoped .codex/config.toml):
[mcp_servers.kicad]
command = "uvx"
args = ["kicad-mcp-pro"]
startup_timeout_sec = 20
tool_timeout_sec = 120
[mcp_servers.kicad.env]
KICAD_MCP_PROJECT_DIR = "/absolute/path/to/your/kicad-project"
KICAD_MCP_PROFILE = "pcb"
Claude Desktop Configuration
Add this to your Claude Desktop config:
{
"mcpServers": {
"kicad": {
"command": "uvx",
"args": ["kicad-mcp-pro"],
"env": {
"KICAD_MCP_PROJECT_DIR": "/path/to/your/project"
}
}
}
}
VS Code / Cline
Use .vscode/mcp.json with the same server shape shown above, and keep
KICAD_MCP_PROJECT_DIR as an absolute path.
Cursor
Add a custom MCP server using uvx as the command and kicad-mcp-pro as the only argument. For remote-style usage, run kicad-mcp-pro --transport http and connect to http://127.0.0.1:3334/mcp.
Claude Code
Launch the server with uvx kicad-mcp-pro, then attach it from your MCP config. The minimal profile is a good default when you mainly want read/export workflows.
More Clients
Copy-ready configuration examples for VS Code, GitHub Copilot in VS Code, Codex, Claude Desktop, Claude Code, Cursor, Gemini CLI, Antigravity-compatible clients, and HTTP transports are available in Client Configuration.
Prerequisites
- KiCad 9.0 or 10.0+ installed.
- Python 3.11+.
- For live IPC tools, KiCad must be running with the IPC API available.
- For HTTP transport, install the
httpextra:pip install "kicad-mcp-pro[http]".
Docker Limitations
- The published container image does not bundle a KiCad installation.
kicad-cli-backed export and validation tools require a KiCad installation inside the container, typically mounted at/usr/bin/kicad-cli, orKICAD_MCP_KICAD_CLIpointed to a valid binary.- Live IPC tools still require a reachable KiCad session with the IPC API enabled.
Configuration
| Variable | Description | Default |
|---|---|---|
KICAD_MCP_KICAD_CLI |
Path to kicad-cli |
Auto-detected |
KICAD_MCP_KICAD_SOCKET_PATH |
Optional KiCad IPC socket path | Unset |
KICAD_MCP_KICAD_TOKEN |
Optional KiCad IPC token | Unset |
KICAD_MCP_KICAD_HEADLESS |
Reserved for future runtime support; currently no-op | false |
KICAD_MCP_PROJECT_DIR |
Active project directory | Unset |
KICAD_MCP_PROJECT_FILE |
Explicit .kicad_pro file |
Auto-detected |
KICAD_MCP_PCB_FILE |
Explicit .kicad_pcb file |
Auto-detected |
KICAD_MCP_SCH_FILE |
Explicit .kicad_sch file |
Auto-detected |
KICAD_MCP_OUTPUT_DIR |
Export output directory | <project>/output |
KICAD_MCP_SYMBOL_LIBRARY_DIR |
KiCad symbol library root | Auto-detected |
KICAD_MCP_FOOTPRINT_LIBRARY_DIR |
KiCad footprint library root | Auto-detected |
KICAD_MCP_TRANSPORT |
stdio, http, sse, or streamable-http |
stdio |
KICAD_MCP_HOST |
HTTP bind host | 127.0.0.1 |
KICAD_MCP_PORT |
HTTP bind port | 3334 |
KICAD_MCP_MOUNT_PATH |
MCP HTTP mount path | /mcp |
KICAD_MCP_PROFILE |
Tool profile | full |
KICAD_MCP_LOG_LEVEL |
Log level | INFO |
KICAD_MCP_LOG_FORMAT |
console or json |
console |
KICAD_MCP_ENABLE_EXPERIMENTAL_TOOLS |
Enable unstable helpers | false |
KICAD_MCP_IPC_CONNECTION_TIMEOUT |
KiCad IPC timeout in seconds | 10.0 |
KICAD_MCP_CLI_TIMEOUT |
kicad-cli timeout in seconds |
120.0 |
KICAD_MCP_MAX_ITEMS_PER_RESPONSE |
Max list items returned | 200 |
KICAD_MCP_MAX_TEXT_RESPONSE_CHARS |
Max text payload length | 50000 |
Tool Reference
Project Management
kicad_set_projectkicad_get_project_infokicad_list_recent_projectskicad_scan_directorykicad_create_new_projectkicad_get_versionkicad_list_tool_categorieskicad_get_tools_in_categorykicad_help
PCB
pcb_get_board_summarypcb_get_trackspcb_get_viaspcb_get_footprintspcb_get_netspcb_get_zonespcb_get_shapespcb_get_padspcb_get_layerspcb_get_stackuppcb_get_selectionpcb_get_board_as_stringpcb_get_ratsnestpcb_get_design_rulespcb_add_trackpcb_add_tracks_bulkpcb_add_viapcb_add_segmentpcb_add_circlepcb_add_rectanglepcb_add_textpcb_set_board_outlinepcb_delete_itemspcb_savepcb_refill_zonespcb_highlight_netpcb_set_net_classpcb_move_footprintpcb_set_footprint_layer
Schematic
sch_get_symbolssch_get_wiressch_get_labelssch_get_net_namessch_add_symbolsch_add_wiresch_add_labelsch_add_power_symbolsch_add_bussch_add_bus_wire_entrysch_add_no_connectsch_update_propertiessch_build_circuitsch_get_pin_positionssch_check_power_flagssch_annotatesch_reload
Library
lib_list_librarieslib_search_symbolslib_get_symbol_infolib_search_footprintslib_list_footprintslib_rebuild_indexlib_get_footprint_infolib_get_footprint_3d_modellib_assign_footprintlib_create_custom_symbollib_get_lcsc_search_urllib_search_lcsc(deprecated alias)lib_get_datasheet_url
LCSC helpers generate browser URLs only. They do not perform live network search.
Export And Validation
run_drcrun_ercvalidate_designcheck_design_for_manufactureget_unconnected_netsget_courtyard_violationsget_silk_to_pad_violationsvalidate_footprints_vs_schematicexport_gerberexport_drillexport_bomexport_netlistexport_spice_netlistexport_pcb_pdfexport_sch_pdfexport_3d_stepexport_stepexport_3d_renderexport_pick_and_placeexport_ipc2581export_svgexport_dxfget_board_statsexport_manufacturing_package
Routing
route_single_trackroute_from_pad_to_padroute_differential_pair[EXPERIMENTAL]tune_track_length[EXPERIMENTAL]tune_diff_pair_length[EXPERIMENTAL]
The experimental routing entries above remain capability markers and currently return boundary/status guidance instead of full automation.
Workflows
Contributing
See CONTRIBUTING.md and the development docs in docs/development.
License
Released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kicad_mcp_pro-1.0.5.tar.gz.
File metadata
- Download URL: kicad_mcp_pro-1.0.5.tar.gz
- Upload date:
- Size: 204.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1057c1b690a40edc6728abef0860794ba7698fc20cc9e894973d05e817a015e8
|
|
| MD5 |
7bfcb80292e22e60a0de5211ca64a0fa
|
|
| BLAKE2b-256 |
72197d53e34c5049a49b4a3f8dc84b18cef4f3fde52fdefc18a79c692ec190da
|
File details
Details for the file kicad_mcp_pro-1.0.5-py3-none-any.whl.
File metadata
- Download URL: kicad_mcp_pro-1.0.5-py3-none-any.whl
- Upload date:
- Size: 50.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aa8a0f246534c87f6c42395eb6d4e9bb57fa68ace4d002cc18816f02712a129
|
|
| MD5 |
75ecbc6eec5f54ce0922b06bbc69e7c2
|
|
| BLAKE2b-256 |
2ef951eb2a708c4cd3ef6f010e93b217af5a6e88c01de9168bbce36809f197fd
|