KiCad MCP Server (IPC API)
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KICAD_API_TOKEN | No | Auth token from KiCad when launched as plugin | |
| KICAD_API_SOCKET | No | Path to KiCad IPC socket (auto-detected if unset) | |
| KICAD_IPC_TIMEOUT_MS | No | Request timeout in ms (default: 5000) |
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 |
|---|---|
| ping_kicadA | Check connectivity to the running KiCad IPC server. |
| get_kicad_statusA | Get KiCad connection status and version information. |
| list_open_documentsA | List documents currently open in KiCad. |
| get_kicad_versionA | Get KiCad and API version details. |
| run_kicad_actionC | Run a KiCad editor action by name (unstable API). |
| get_board_infoA | Get summary information about the open PCB. |
| get_board_sizeA | Get bounding box size of the board outline in mm. |
| get_board_as_stringA | Get the board file contents as a KiCad S-expression string. |
| get_selection_as_stringA | Get current selection as KiCad S-expression string. |
| list_componentsC | List all footprint instances on the board. |
| get_componentA | Get a component by reference designator. |
| list_tracksA | List all tracks and arc tracks. |
| list_viasC | List all vias. |
| list_padsA | List all pads on the board. |
| list_netsA | List all nets, optionally filtered by net class. |
| list_zonesA | List all copper and rule zones. |
| list_groupsB | List all item groups on the board. |
| list_dimensionsB | List all dimension objects. |
| list_board_textA | List all board text and text boxes. |
| list_board_shapesB | List graphic shapes (segments, arcs, rects, etc.). |
| list_barcodesB | List barcode objects on the board. |
| get_items_by_idB | Retrieve board items by their KiCad UUID. |
| get_items_by_netC | Retrieve items belonging to a net. |
| get_connected_itemsB | Get all copper-connected items from a starting item. |
| get_stackupA | Get the board layer stackup. |
| get_title_blockA | Get board title block fields. |
| save_boardA | Save the current board, optionally to a new path. |
| revert_boardA | Revert board to last saved state. |
| place_componentC | Place a footprint on the board. |
| move_componentC | Move a component to a new position. |
| rotate_componentC | Rotate a component by a relative angle. |
| delete_componentB | Delete a component by reference. |
| route_traceC | Add a copper trace between two points. |
| add_viaC | Add a through-hole via. |
| add_copper_pourC | Add a copper pour zone from polygon points. |
| refill_zonesC | Refill all copper zones. |
| add_board_textC | Add silkscreen or copper text. |
| add_board_outlineC | Add board outline segments on Edge.Cuts. |
| add_mounting_holeC | Add circular mounting hole on Edge.Cuts. |
| set_board_sizeC | Create rectangular board outline. |
| delete_items_by_idC | Delete board items by UUID. |
| set_title_blockC | Update board title block fields. |
| get_layer_listA | List all enabled board layers. |
| get_visible_layersA | List layers visible in the editor. |
| get_active_layerA | Get the active drawing layer. |
| set_active_layerC | Set the active drawing layer. |
| set_visible_layersC | Set which layers are visible in the editor. |
| get_copper_layer_countA | Get number of copper layers. |
| set_enabled_layersB | Set copper layer count and enabled non-copper layers (destructive). |
| get_layer_nameB | Get display name for a layer. |
| get_selectionA | Get currently selected board items. |
| add_to_selectionC | Add items to selection by UUID. |
| remove_from_selectionB | Remove items from selection. |
| clear_selectionA | Clear the editor selection. |
| get_item_bounding_boxC | Get bounding box for a board item. |
| hit_testC | Test if a point hits a board item. |
| get_board_originB | Get grid or drill origin. |
| set_board_originC | Set grid or drill origin. |
| get_editor_appearanceB | Get PCB editor appearance settings. |
| get_net_classesA | Get project net classes. |
| get_text_variablesB | Get project text variables. |
| set_text_variablesC | Set project text variables. |
| expand_text_variablesB | Expand ${VAR} placeholders in text strings. |
| export_gerbersC | Export Gerber manufacturing files. |
| export_drillC | Export Excellon drill files. |
| export_pdfC | Export board as PDF. |
| export_svgC | Export board as SVG. |
| export_dxfC | Export board as DXF. |
| export_3dC | Export 3D model (STEP, GLB, STL, etc.). |
| export_positionC | Export pick-and-place position files. |
| export_ipc2581C | Export IPC-2581 package. |
| export_odbC | Export ODB++ package. |
| export_statsC | Export board statistics report. |
| list_tool_categoriesB | Browse all KiCad IPC tool categories and their tools. |
| search_toolsB | Search KiCad IPC tools by name, description, or category. |
| get_tool_schemaB | Get the parameter schema for a KiCad IPC tool. |
| execute_kicad_toolC | Execute any KiCad IPC tool by name with a JSON arguments object. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
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/lmaag182/kicad_mcp_server_ipc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server