KiCad MCP Pro
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_list_tool_categoriesA | List all available tool categories and capabilities. |
| kicad_get_tools_in_categoryC | Get the tool names available in a specific category. |
| kicad_set_projectC | Set the active KiCad project directory and file paths. |
| kicad_get_project_infoA | Show the currently configured KiCad project paths. |
| project_set_design_intentC | Store high-level design intent used by placement, routing, and release-quality gates. v1 parameters (all boards): connector_refs, decoupling_pairs, critical_nets, power_tree_refs, analog_refs, digital_refs, sensor_cluster_refs, rf_keepout_regions, manufacturer, manufacturer_tier. v2 parameters (professional projects): power_rails (list of PowerRailSpec dicts), interfaces (list of InterfaceSpec dicts), mechanical (MechanicalConstraint dict), compliance (list of ComplianceTarget dicts), cost (CostTarget dict), thermal (ThermalEnvelope dict). |
| project_get_design_intentA | Show the persisted project design intent used by placement and release gates. |
| project_get_design_specA | Return the resolved project design spec with explicit and inferred fields. |
| project_infer_design_specA | Infer a design spec from the active PCB without writing it to disk. |
| project_validate_design_specB | Validate the resolved design spec against the active project PCB. |
| project_get_next_actionB | Return the next high-priority action derived from the current project gate. |
| project_auto_fix_loopA | Run the project quality gate and automatically apply server-side fixes. Each iteration:
The loop runs up to Args: max_iterations: Maximum number of auto-fix + re-evaluate cycles to attempt before returning control to the agent (1–20). |
| project_design_reportA | Generate a comprehensive design-status report. Combines intent summary, v2 spec richness, project gate evaluation, and a prioritised list of next steps into a single structured report. This is the recommended first call after opening a project to understand its current state. |
| kicad_list_recent_projectsA | List recently opened KiCad projects from KiCad's config files. |
| kicad_scan_directoryA | Scan a directory and report any KiCad project files it contains. |
| kicad_create_new_projectC | Create a new minimal KiCad project structure and activate it. |
| kicad_get_versionA | Get KiCad version information and current connection status. |
| kicad_helpA | Show a concise startup guide and all tool categories. |
| pcb_get_board_summaryA | Summarize the current board. |
| pcb_get_tracksC | List board tracks. |
| pcb_get_viasA | List board vias. |
| pcb_get_footprintsC | List board footprints. |
| pcb_get_footprint_layersB | List every layer referenced by a footprint block, including inner layers. |
| pcb_get_netsA | List all board nets. |
| pcb_get_zonesA | List all board copper zones. |
| pcb_get_shapesB | List graphical board shapes. |
| pcb_get_padsA | List board pads. |
| pcb_get_layersA | List enabled board layers. |
| pcb_get_stackupA | Show the current stackup. |
| pcb_set_stackupB | Set the active board stackup using a file-backed profile. |
| pcb_get_impedance_for_traceB | Estimate trace impedance for the supplied width on the named stackup layer. |
| pcb_check_creepage_clearanceC | Run a heuristic creepage clearance review against pad spacing. |
| pcb_get_selectionA | List currently selected items in the PCB editor. |
| pcb_get_board_as_stringA | Return the current board as a bounded S-expression string. |
| pcb_get_ratsnestA | Report currently unconnected board items using the latest DRC view. |
| pcb_get_design_rulesA | Read the active board design rules file when available. |
| pcb_set_design_rulesC | Write board-level manufacturing constraints into the active .kicad_dru file. |
| pcb_add_trackC | Add a single track segment. |
| pcb_add_tracks_bulkA | Add multiple tracks in a single operation. |
| pcb_add_viaC | Add a via. |
| pcb_add_blind_viaC | Add a blind or buried via between the requested copper layers. |
| pcb_add_microviaA | Add a microvia between adjacent copper layers. |
| pcb_add_segmentC | Add a board graphic segment. |
| pcb_add_circleC | Add a board graphic circle. |
| pcb_add_rectangleC | Add a board graphic rectangle. |
| pcb_set_board_outlineC | Draw a rectangular board outline on Edge.Cuts. |
| pcb_add_textC | Add board text. |
| pcb_add_barcodeC | Add a production barcode marker to the board file. |
| pcb_delete_itemsB | Delete items by UUID. |
| pcb_saveA | Save the active board. |
| pcb_refill_zonesB | Refill all copper zones. |
| pcb_highlight_netC | Attempt to highlight a net in the GUI when supported. |
| pcb_set_net_classC | Assign a net class when the runtime supports it. |
| pcb_move_footprintC | Move a footprint to an absolute location. |
| pcb_set_footprint_layerC | Set the footprint copper side. |
| add_footprint_inner_layer_graphicC | Inject an inner-layer graphic primitive into a footprint block. |
| pcb_sync_from_schematicA | Sync missing PCB footprints from schematic footprint assignments. This is a file-based operation intended for initial board bring-up. It adds
missing footprint instances to the |
| pcb_auto_place_by_schematicB | Place PCB footprints from the current schematic using deterministic heuristics. |
| pcb_place_decoupling_capsC | Move capacitor footprints into a tight row near a target IC footprint. |
| pcb_group_by_functionC | Cluster existing footprints into named functional groups. |
| pcb_align_footprintsC | Arrange selected footprints into a straight row or column. |
| pcb_add_zoneC | Add a copper zone with an arbitrary polygon outline on one copper layer. |
| pcb_add_copper_zoneD | Backward-compatible alias for pcb_add_zone(). |
| pcb_set_keepout_zoneA | Add a rectangular PCB keepout / rule area to the active board. |
| pcb_add_mounting_holesA | Append standard mounting-hole footprints around the current board frame. |
| pcb_add_fiducial_marksB | Append simple fiducial footprints near the board corners. |
| pcb_block_listB | List stored PCB design blocks created from selected footprints. |
| pcb_block_create_from_selectionB | Capture a reusable PCB design block from selected footprint references. |
| pcb_block_placeA | Place a stored PCB design block by cloning its saved footprint blocks. |
| pcb_add_teardropsB | Create small copper helper zones at simple pad-to-track junctions. |
| pcb_auto_place_force_directedA | Run a force-directed spring-embedder placement algorithm on a set of components. This tool computes optimised X/Y positions for components based on their net connectivity without requiring KiCad to be open. Use it to get a placement suggestion, then apply the result with pcb_move_footprint for each component. Args: component_positions: List of component dicts with keys: ref (str), x (float, mm), y (float, mm), w (float, mm, optional default 2), h (float, mm, optional default 2), fixed (bool, optional default false). nets: List of net dicts with keys: name (str), refs (list[str]), weight (float, optional default 1.0). board_width_mm: Soft boundary width in mm (default 100). board_height_mm: Soft boundary height in mm (default 80). iterations: Number of spring-embedder iterations (default 300). k_spring: Spring attraction coefficient (default 0.4). k_repel: Coulomb repulsion coefficient (default 80.0). Returns: JSON string with optimised positions for each component. |
| pcb_bga_fanoutA | Generate a BGA fanout via-placement plan (dog-ear or inline strategy). Returns per-ball via coordinates and suggested track widths so the agent can call pcb_add_via and pcb_add_track to physically fanout the BGA. Actual pad coordinates must come from the board footprint (use pcb_get_pads). Args: balls: List of ball dicts with keys: row (str, e.g. "A"), col (int, 1-based), net (str), x_mm (float, ball centre X), y_mm (float, ball centre Y). pitch_mm: Ball pitch in mm (e.g. 0.5, 0.65, 0.8, 1.0). via_drill_mm: Via drill diameter in mm (default 0.2). via_annular_mm: Via annular ring width in mm (default 0.1). escape_layer: Inner copper layer to fan out to (default "In1.Cu"). strategy: "dog_ear" (diagonal escape, most common) or "inline" (horizontal escape, for large pitch). Returns: JSON string with via placement plan for each ball. |
| sch_get_symbolsA | List all schematic symbols. |
| sch_get_wiresA | List all wires in the schematic. |
| sch_get_labelsA | List all labels in the schematic. |
| sch_get_net_namesA | List unique net names derived from labels. |
| sch_add_symbolA | Add a schematic symbol at an absolute coordinate. Coordinates snap to the 2.54 mm schematic grid by default; set snap_to_grid=False only when an exact off-grid coordinate is intentional. |
| sch_add_wireB | Add a schematic wire, snapping endpoints to the 2.54 mm grid by default. |
| sch_add_labelC | Add a schematic label, snapping its anchor to the 2.54 mm grid by default. |
| sch_add_power_symbolB | Add a power symbol, snapping its anchor to the 2.54 mm grid by default. |
| sch_add_busB | Add a schematic bus, snapping endpoints to the 2.54 mm grid by default. |
| sch_add_bus_wire_entryA | Add a bus wire entry marker, snapping its anchor to the 2.54 mm grid by default. |
| sch_add_no_connectA | Add a no-connect marker, snapping it to the 2.54 mm grid by default. |
| sch_list_swappable_pinsA | List candidate pins and units that can participate in a swap workflow. |
| sch_swap_pinsC | Record a pin-swap back-annotation intent for a component. |
| sch_swap_gatesC | Record a gate-swap back-annotation intent for a multi-unit component. |
| sch_add_jumperC | Add a jumper symbol to the schematic. |
| sch_update_propertiesC | Update a property on a placed symbol. |
| sch_move_symbolA | Move an existing symbol instance to a new absolute coordinate. |
| sch_delete_wireA | Remove a specific wire segment using its UUID or unique UUID prefix. |
| sch_delete_symbolA | Remove a placed symbol and any directly attached wire segments. |
| sch_analyze_net_compilationC | Preview how netlist-aware schematic compilation will resolve endpoints and wires. |
| sch_build_circuitA | Build (overwrite) the active schematic from structured symbol, wire, and label inputs. IMPORTANT: This tool replaces the entire schematic content. Any symbols
already placed in the schematic will be lost. To add symbols to an existing
schematic without erasing it use Coordinates are snapped to the 2.54 mm grid by default. When no coordinates
are provided for a symbol, set Recommended workflow:
|
| sch_get_pin_positionsA | Calculate absolute pin positions for a given symbol placement. |
| sch_check_power_flagsB | Check whether common power nets appear to be flagged. |
| sch_annotateB | Renumber schematic references sequentially. |
| sch_reloadA | Ask KiCad to reload the active schematic. |
| sch_create_sheetB | Create a child schematic sheet and add it to the active top-level schematic. |
| sch_add_hierarchical_labelB | Add a hierarchical label, preserving the requested shape and rotation. |
| sch_add_global_labelC | Add a global label, preserving the requested shape and rotation. |
| sch_list_sheetsA | List child sheets from the active top-level schematic. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| first_pcb | Guide an agent through a first-board workflow. |
| schematic_to_pcb | Guide an agent from schematic capture to PCB layout. |
| manufacturing_export | Checklist for manufacturing exports. |
| design_review_loop | Closed-loop inspection workflow driven by quality gates. |
| fix_blocking_issues | Prompt focused on consuming the fix queue and clearing blockers. |
| manufacturing_release_checklist | Final release checklist for fab-ready handoff. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| board_summary_resource | Live PCB board summary. |
| project_info_resource | Current project configuration. |
| project_spec_resource | Resolved project design spec including explicit and inferred fields. |
| project_next_action_resource | Server-recommended next action derived from the fix queue. |
| board_netlist_resource | Current board S-expression, bounded for safety. |
| project_quality_gate_resource | Latest full project quality gate report. |
| project_fix_queue_resource | Prioritized blocking issues derived from the project quality gate. |
| schematic_connectivity_resource | Latest schematic connectivity gate report. |
| board_placement_quality_resource | Latest placement score and hard-fail placement findings. |
| get_studio_context | Return the latest KiCad Studio IDE context. |
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/Valxyria/kicad-mcp-pro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server