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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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