MCP server that generates JLCPCB-ready KiCad PCB projects from descriptions, BOMs, or existing KiCad projects
The server provides 14 tools with explicit schemas and descriptions, but quality is inconsistent. Most tools have basic descriptions (30-100 chars) that lack actionable context for LLM selection. Schemas are present but many parameters lack descriptions or type constraints. Error handling is minimal, the server wraps exceptions generically without providing recovery guidance. Tool composition shows some logic (project setup → component sourcing → schematic/board → manufacturing), but descriptions don't explain these workflows or dependencies. The codebase is incomplete in the provided snippet (server.py cuts off mid-function), preventing full verification of implementation quality. Schema visibility is good, but parameter documentation and error recovery patterns are weak.
Create a new JLCPCB-ready KiCad project
Detect KiCad installation and CLI availability
Generate EasyEDA-compatible export for interactive design handoff
Fetch LCSC component symbols, footprints, and 3D models
Resolve LCSC parts from a BOM specification
Search LCSC parts library
Load an existing KiCad project
Descriptions lack actionable context. Most are 40-65 chars, stating only WHAT the tool does, not WHEN to use it or WHAT to expect. E.g., 'Generate KiCad schematic from netlist specification' doesn't explain when to call this vs alternatives, or what netlist_spec structure it expects.
Complex parameter 'netlist_spec' (tool: sch_generate) and 'spec' (tool: pcb_generate) are described as 'object' with only 'Netlist specification with components and connections', no documentation of required fields, structure, or example format. LLMs cannot reliably construct these without seeing the schema or examples.
No documented output schema for any tool. The error handling code shows results are JSON-serialized, but tool definitions do not document what fields are returned, which IDs are included for chaining, or what structure to expect. Blocks downstream tool composition planning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Package PCB manufacturing files into JLCPCB-ready zip
Get pin mapping information for an LCSC part
Generate PCB layout from component specification
Generate KiCad schematic from netlist specification
Run electrical rules check on schematic
Confirm and finalize bill of materials for current session
Resume a previous project session
Error handling is generic ('file_not_found', 'invalid_argument', logged traceback) with no recovery guidance. Tools do not tell LLMs what to do next: 'LCSC part not found, try search with a different query?' or 'KiCad not installed, install from https://...?' These would guide agent recovery.
No documentation of tool dependencies or required workflows. 'create_project' must be called before 'sch_generate', and 'fetch_part_library' should precede 'sch_generate' if component symbols are needed. Descriptions do not explain these prerequisites or suggest sequencing.
Session state is managed via _active_project dict but not described in tool documentation. Tools like 'sch_generate' show 'project_path' is optional, implying they use the session, but this is not explicit. LLMs cannot know which calls require prior setup and which don't.
Parameter 'basic_only' (lcsc_search) defaults to true but is not documented as a constraint. What defines 'basic tier'? LLMs may assume all LCSC parts are returned by default and miss the filtering.
No idempotency guarantees documented. Can 'create_project' be called twice with the same name (overwrite existing) or does it fail? Can 'package_for_jlcpcb' be called multiple times safely? Agents need to know whether retries are safe.
Tool 'lcsc_search' accepts 'limit' with no documented constraint. Baselines show result limits should be 20-50 to avoid context bloat. No documentation of default (20) or maximum value prevents LLMs from choosing appropriate limits.