Model Context Protocol server for connecting AI agents to a running KiCad instance.
kipilot-mcp provides 39 tools with consistent naming (verb_noun pattern: get_, set_, export_, etc.) and descriptions for all tools. However, parameter descriptions are sparse or missing for many tools. Input schemas are present but lack detail: many parameters use generic 'object' or 'null' types without field-level documentation. Output schemas are not documented. Error handling is minimal, tools return {ok, message, error} but lack recovery guidance or actionable error messages. The server follows a reasonable structure but falls short of production-grade quality due to incomplete parameter documentation and missing output schema specifications.
Get the path to a KiCad binary executable.
Return KiCad and IPC API version information when the active endpoint exposes it.
Get KiCad system paths.
Return high-level counts and metadata for the currently open PCB.
Return the active board/project documents or query explicit document types.
Add embedded files to the current PCB.
Export 3D model from the current PCB.
Parameter descriptions missing or generic for 25+ tools. Parameters like 'plot_settings', 'format_settings', 'field_settings' are typed as 'object|null' with no field-level documentation. LLMs cannot infer what keys/values are valid.
Output schemas not documented. Tools return dict[str, Any] with no specification of response fields, structure, or pagination. Agents cannot plan downstream calls or extract required data reliably.
Error handling lacks recovery guidance. Tools return {ok, message, error} but do not categorize errors as retryable/user-fixable/fatal or suggest next steps. LLMs cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Export drill files from the current PCB.
Export Gerber files from the current PCB.
Return high-level counts and metadata for the currently open PCB.
Get the bounding box for items on the current PCB.
Return the design rules for the current PCB.
Return the list of embedded files in the current PCB.
Return the list of net classes on the current PCB.
Return the list of nets on the current PCB.
Return the current PCB selection.
Import a netlist into the current PCB.
Update custom design rules on the current PCB.
Update design rules on the current PCB.
Update net classes on the current PCB.
Update the current PCB selection.
Export the current schematic BOM to one output file.
Export the current schematic to DXF files inside output_dir.
Export the current schematic netlist to one output file.
Export the current schematic to one PDF file using optional schematic plot settings.
Export the current schematic to PostScript files inside output_dir.
Export the current schematic to SVG files inside output_dir.
Return the top-level schematic hierarchy tree for the current schematic.
Return the current schematic netlist, optionally filtered by item types.
Return the current schematic page settings.
Return the current schematic selection.
Return the current schematic title block information.
Run a hit test against one schematic item at a schematic-space position.
Update one or more page settings fields on the current schematic.
Update the current schematic selection.
Update one or more title block fields on the current schematic.
Open a document in KiCad.
Check whether a user-running KiCad IPC endpoint is reachable.
Run a KiCad action by name.
Generic parameter names without type suffixes. 'mode' parameter in kicad_sch_set_selection and kicad_pcb_set_selection lacks description of valid values (enum). 'item_types' and 'document_types' accept integer arrays but do not document what integers map to.
Dry-run parameters present but not consistently applied. Some write tools (kicad_sch_set_page_settings, kicad_pcb_import_netlist) support dry_run, but others (kicad_sch_export_svg, kicad_pcb_export_gerbers) do not. Inconsistency confuses agents about which operations are reversible.