KiCad MCP server — PCB/schematic design automation via MCP tools and REST API
KiCad MCP has 30 tools with consistent naming (verb_noun pattern: pcb_load, sch_save, etc.) and basic descriptions. However, critical gaps undermine quality: (1) Most parameter descriptions are minimal (1-5 words), far below the 72-char baseline. (2) No visible output schemas documented, tools return data but LLMs cannot predict structure. (3) No error handling guidance, tools fail silently or with generic messages. (4) Parameter constraints missing, numeric ranges (coordinates, widths) unbounded; enums not declared for format/severity. (5) No idempotency or confirmation patterns for destructive ops (pcb_save, fab_order, review_ai_audit). (6) Tool descriptions average ~40 chars, below the 194-char baseline, lacking WHEN/WHY context. Example: 'pcb_add_track' description is 28 chars; LLM cannot infer coordinate units, layer validation, or return structure.
Export BOM to file
Generate Bill of Materials (BOM) from schematic
Zip Gerber outputs for fabrication
Get details of a specific fabrication order
List fabrication order history
Create a fabrication order record
Get footprint details from library
Get symbol details from library
No output schemas documented. Tools return data but LLMs cannot predict field names, types, or structure. Example: pcb_get_tracks returns track objects but schema is invisible.
Parameter descriptions are minimal (1-5 words), far below 72-char baseline. LLMs cannot infer units, constraints, or dependencies. Example: pcb_add_track 'layer' param: 'Layer name (e.g., F.Cu)', no validation rules, no enum, no error guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Search KiCad library for components
Get detailed information about a marketplace part
Search component marketplace for parts
Add a track (trace) to the PCB
Add a via to the PCB
Run Design Rule Check (DRC) on the PCB
Export PCB to Gerber format for fabrication
Get list of layers in the current PCB
Get all tracks (traces) from the current PCB
Get all vias from the current PCB
Load a PCB file (.kicad_pcb) into the active session
Save the current PCB to disk
Run AI audit on a design review
Add an annotation to a design review
Create a new design review session
Get details of a specific design review
List all design reviews
Run Electrical Rule Check (ERC) on the schematic
Get all nets (electrical connections) from the schematic
Get all symbols from the current schematic
Load a schematic file (.kicad_sch) into the active session
Save the current schematic to disk
Numeric parameters lack bounds. pcb_add_track accepts start_x, start_y, end_x, end_y, width with no min/max. LLMs can pass absurd values (negative coords, 1000mm widths) causing silent failures or crashes.
No error handling guidance. Tools fail but do not tell LLM what to do next. Example: pcb_load fails if file not found, no recovery hint like 'Try fab_list_orders() to find available boards.'
Destructive operations (pcb_save, fab_order, review_ai_audit) lack confirmation or dry-run patterns. Agents can irreversibly modify designs without user approval.