kicad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KICAD_MCP_CLI_PATH | No | override for the kicad-cli executable; auto-discovered per platform | |
| KICAD_MCP_CLI_TIMEOUT | No | seconds for kicad-cli subprocess calls | 120 |
| KICAD_MCP_IPC_TIMEOUT | No | seconds for IPC calls | 10 |
| KICAD_MCP_SEARCH_PATHS | No | os.pathsep-separated project roots (also the file-access confinement boundary) | ~/Documents/KiCad,~/KiCad |
| KICAD_MCP_FREEROUTING_JAR | No | Freerouting jar for autoroute (Phase 6) | |
| KICAD_MCP_ALLOW_SCHEMATIC_WRITE | No | 1 to enable experimental schematic writes | 0 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_server_statusA | Report kicad-mcp backend availability, capabilities, and KiCad version. Use this first to see what is possible in the current environment: headless analysis/export (kicad-cli), schematic reads (S-expr), and live board editing (IPC, needs a running KiCad). |
| list_projectsA | List KiCad projects discoverable under the configured search paths. |
| get_project_infoB | Info for a project (.kicad_pro path or its directory): associated files. |
| create_projectB | Create a new, minimal KiCad project under |
| get_board_infoB | Summarize a board: copper layers, thickness, nets, footprints, extents. |
| get_board_stackupB | Ordered physical stackup (dielectric + copper layers with thickness). |
| list_schematic_componentsB | List schematic components (reference, value, lib_id, footprint). |
| list_schematic_netsB | List nets with their fan-out (node count), from the exported netlist. |
| trace_netB | Show every pin (ref + pin number/function) connected to a given net. |
| run_ercB | Run Electrical Rules Check on the schematic; return normalized findings. |
| run_drcC | Run Design Rules Check on the board; return normalized findings. |
| export_gerbersC | Plot gerbers + drill files for the board into a directory. |
| export_bomB | Export the schematic Bill of Materials as CSV. |
| export_netlistC | Export the schematic netlist (KiCad s-expression format). |
| export_stepC | Export a STEP 3D model of the board. |
| render_boardA | Render a 3D PNG of the board from a side (top/bottom/left/right/front/back). |
| export_fab_packageC | Bundle a complete fab package (gerbers + drill + BOM + CPL) into a zip. |
| review_designA | Audit a board against the full Hartley/Phil's Lab rule catalog. Returns findings grouped by severity with rule IDs, one-line physics rationales, and citations, plus a markdown summary. |
| review_topicB | Audit one rule family: stackup, grounding, return_path, decoupling, dfm. |
| set_design_contextC | Provide facts the files cannot contain (rise times, clocks, target impedances, connector-facing nets, fab house) to sharpen the review. |
| get_live_board_statusA | Status of the board open in the running KiCad (via IPC): item counts, layers, KiCad version. Requires the GUI with the API enabled. |
| list_live_footprintsA | List footprints on the live board with position/rotation/layer. |
| move_footprintB | Move a footprint to (x, y) in mm on the live board. Single undo step. |
| rotate_footprintB | Set a footprint's rotation in degrees on the live board. Single undo step. |
| duplicate_footprintA | Copy a placed footprint to a new reference + position (KiCad 9 IPC cannot place from a library, so cloning an on-board part is the supported 'add a part'). Give x_mm/y_mm for an absolute spot, else it offsets. |
| get_netclassesA | List netclasses on the live board with their track/clearance/via/diff- pair constraints and member nets. |
| add_zoneB | Add a copper zone on a layer from a polygon of [x, y] mm points, optionally assigned to a net (e.g. GND). Single undo step. |
| refill_zonesA | Refill all copper zones on the live board. |
| save_boardA | Save the live board to disk — required before render_board / run_drc can see live edits (they read the file). |
| route_traceA | Route a trace along [x, y] mm waypoints on a layer, optionally on a net. Multi-segment, single undo step. |
| add_viaB | Add a via at (x, y) mm. Defaults to the standard 0.7/0.3 mm geometry. |
| route_differential_pairA | Route a differential pair: P and N run parallel to the centerline waypoints, offset by (width+gap)/2 each side. Single undo step. |
| set_symbol_propertyA | [EXPERIMENTAL] Set a property (Value, Footprint, ...) on an existing schematic symbol. Requires KICAD_MCP_ALLOW_SCHEMATIC_WRITE=1 and the file closed in KiCad. Returns the post-edit ERC report. |
| duplicate_symbolA | [EXPERIMENTAL] Clone a placed symbol with a new reference, offset by (dx, dy) mm. Fresh UUIDs; the new part's pins start unconnected. Requires KICAD_MCP_ALLOW_SCHEMATIC_WRITE=1 and the file closed in KiCad. |
| search_symbolsB | Search installed KiCad symbol libraries; returns Lib:Symbol ids. |
| search_footprintsA | Search installed KiCad footprint libraries; returns Lib:Footprint ids. |
| search_jlcpcb_partsA | Search a local JLCPCB parts DB by MPN/description. Needs KICAD_MCP_JLCPCB_DB set to a jlcparts-style SQLite database. |
| get_task_statusC | Poll a background task (autoroute, batch export). Returns the result once status is 'done'. |
| list_tasksA | List background tasks and their statuses (newest first). |
| cleanup_tasksA | Drop finished background tasks from the queue. |
| export_fab_package_asyncA | Start a fab-package export in the background; poll it with get_task_status. Use for large boards that may exceed the request timeout. |
| autoroute_boardA | Autoroute a Specctra .dsn with Freerouting (background task → task_id). Needs KICAD_MCP_FREEROUTING_JAR and Java. Note: KiCad 9 cannot export DSN headlessly, so export the .dsn from the KiCad GUI first. |
| get_review_historyA | Show past review/DRC runs for a project (counts over time). Filter by kind: 'review' or 'drc'. |
| list_tool_categoriesA | List tool categories with a description and tool count. Start here to navigate the tool surface. |
| get_category_toolsB | List the tools in a category with their one-line descriptions. |
| search_toolsB | Search tools by name or description substring. |
| execute_toolB | Dispatch to any tool by name with an arguments object. Convenience for tools reached via the categories above. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| review_board | Guided full design review of a KiCad board using the review engine. |
| plan_stackup | Interview + recommend a stackup following the Hartley/Phil rules. |
| debug_emi | Hartley-style EMI diagnostic tree. |
| prepare_fab | Pre-release DFM checklist before generating fab outputs. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/antonmadto/kicad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server