kicad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| kicad_statusA | Report the KiCad environment: install, versions, live connection, and which capabilities are available. Call this first when anything behaves unexpectedly. |
| get_board_summaryA | Summarise the board open in KiCad: name, layer count, item counts, title block, and origin. A cheap orientation call before more specific queries. |
| list_footprintsA | List footprints on the open board. Filter with glob patterns on reference (e.g. 'R*') or value (e.g. '10k'). Positions are millimetres. |
| get_footprintA | Full detail for one footprint on the open board, including every pad with its net, position, and layer. |
| list_netsB | List nets on the open board, optionally filtered by a glob pattern on the net name. |
| get_layersA | List the board's enabled, visible, and active layers with their names. |
| get_stackupA | The board's physical stackup: layer order, materials, and thicknesses. |
| get_selectionA | What the user currently has selected in the KiCad GUI. Use this to act on 'the thing I'm looking at'. |
| list_tracks_viasA | List tracks and vias on the open board, optionally filtered by net name. |
| list_zonesB | List copper zones on the open board with their nets and layers. |
| open_schematicA | Open a .kicad_sch file and summarise it: title block, counts, and child sheets. Works with KiCad closed - schematic access is file-based because KiCad 10 has no schematic IPC API. |
| list_schematic_symbolsA | List symbols placed in a .kicad_sch file, with reference, value, lib_id, position and footprint. Filter with glob patterns. |
| find_project_filesB | List KiCad project files in a directory: schematics, boards, and project files. |
| schematic_netlistA | Export and parse a schematic's netlist via kicad-cli: every component and every net with its connected pins. The most complete view of schematic connectivity available in KiCad 10. |
| run_ercA | Run Electrical Rules Check on a schematic via kicad-cli and return the report. A non-zero violation count is a result, not a failure. |
| run_drcA | Run Design Rules Check on a .kicad_pcb file via kicad-cli and return the report. |
| export_bomB | Export a Bill of Materials from a schematic to CSV via kicad-cli. |
| export_schematicB | Plot a schematic to pdf, svg, dxf, ps, or hpgl via kicad-cli. |
| list_symbol_librariesA | List the symbol libraries available, resolving KiCad's global and project sym-lib-tables. |
| search_symbolsA | Search symbol libraries by name substring, e.g. 'ESP32-S3' or 'LM358'. Returns lib_ids usable with get_symbol_pins and create_pinout_schematic. |
| get_symbol_pinsB | Every pin of a library symbol: number, name, electrical type, and position. Use this to learn a part's pinout before wiring it. |
| create_pinout_schematicA | Create a .kicad_sch from a firmware pinout by importing a symbol from a KiCad library.
|
| run_kicad_scriptA | Execute Python with the KiCad API pre-imported. Use this for anything the curated tools do not cover. Available names: This runs arbitrary local code with your privileges. Do not import kipy.schematic - it is broken in kipy 0.7.1 and KiCad 10 has no schematic API anyway. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Each tool targets a distinct resource and action: schematic vs board vs library vs project vs status. The few symbol-related tools are clearly differentiated by their purpose (listing placed symbols, searching libraries, getting pin data).
The majority follow a consistent verb_noun pattern (list_*, get_*, run_*, export_*, search_*, open_*, find_*, create_*). Two tools deviate slightly: 'schematic_netlist' and 'kicad_status' are noun_noun, but they remain readable and the overall style is uniform.
At 23 tools, this sits at the high end of the expected range. The count is justified by KiCad's breadth (schematic, board, libraries, execution), but it feels slightly heavy for a single server and will require careful descriptions to avoid overwhelming agents.
The tool surface covers the key read/analyze operations for schematics, boards, and libraries, plus generation via create_pinout_schematic and arbitrary extension via run_kicad_script. Missing are explicit edit/update operations for board or schematic elements, but the script runner mitigates those gaps.