MCP server for controlling KiCad EDA software — IPC API + CLI + SWIG, with auto-launch.
Server has 7 tools with significant definition gaps. Meta-tools (kicad_discover, kicad_load_toolset, etc.) have minimal descriptions (10-50 chars) and lack parameter details. kicad_analysis_tools is a monolithic 14-parameter tool combining SI, PI, EMC, and design lint operations, violates single-responsibility principle. Most tools lack output schema documentation. No error handling guidance visible. Tool names follow verb_noun pattern but descriptions are too terse for LLM selection.
Signal integrity, power integrity, EMC compliance, design lint, SPICE simulation, and board analysis tools. All use standard physics formulas — no hardcoded manufacturer values.
Discover available toolsets and their descriptions
Get server capabilities and current configuration
Load a toolset by name (makes its routers visible in dynamic mode)
Search for tools by keyword or operation name
Switch to a pre-defined profile (loads/unloads toolsets as a group)
Unload a toolset by name (hides its routers in dynamic mode)
kicad_analysis_tools combines 14+ operations (SI, PI, EMC, design lint, SPICE, board analysis) into a single tool with overloaded 'operation' parameter. Violates single-responsibility principle, should split into separate tools (si_trace_width, pi_voltage_drop, emc_check, etc.) so LLM can compose them independently.
Meta-tool descriptions are under 50 characters and lack context for LLM selection. 'Discover available toolsets and their descriptions' (47 chars) does not explain WHEN to call it or what structure it reveals. Should be 100-200 chars with dependency hints.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does kicad_discover return? Is it a list of toolset names, or objects with descriptions?). All tools need explicit return type documentation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
kicad_set_profile parameter 'name' has no enum constraint. Description says '(read-only, build, manufacturing, expert, etc.)' but uses 'etc.', LLM cannot determine valid values. Should declare enum: ['read-only', 'build', 'manufacturing', 'expert', ...] in schema.
No error handling guidance visible. Tools return ok() or error() but no documentation on what errors are retryable, what the LLM should do next, or how to recover from missing toolsets/invalid operations. Error responses must guide recovery.