ClassCAD MCP
OFFICIAL SERVERModel, inspect, render and export parametric CAD parts and assemblies with the ClassCAD engine
Review, check, edit and export KiCad schematics and PCBs from an MCP client
By Osman Aslan (individual) Python Local · stdio Design
65 popularity score ★ 186 ↓ 13k/mo
Opens the app, which asks before it adds the server.
claude mcp add kicad-pro -- npx -y kicad-mcp-pro{
"mcpServers": {
"kicad-pro": {
"command": "npx",
"args": [
"-y",
"kicad-mcp-pro"
]
}
}
}{
"mcpServers": {
"kicad-pro": {
"command": "npx",
"args": [
"-y",
"kicad-mcp-pro"
]
}
}
}{
"servers": {
"kicad-pro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"kicad-mcp-pro"
]
}
}
}[mcp_servers.kicad-pro]
command = "npx"
args = ["-y", "kicad-mcp-pro"]gemini mcp add --scope user kicad-pro npx -- -y kicad-mcp-proOpens the app, which asks before it adds the server.
claude mcp add kicad-pro -- uvx kicad-mcp-pro{
"mcpServers": {
"kicad-pro": {
"command": "uvx",
"args": [
"kicad-mcp-pro"
]
}
}
}{
"mcpServers": {
"kicad-pro": {
"command": "uvx",
"args": [
"kicad-mcp-pro"
]
}
}
}{
"servers": {
"kicad-pro": {
"type": "stdio",
"command": "uvx",
"args": [
"kicad-mcp-pro"
]
}
}
}[mcp_servers.kicad-pro]
command = "uvx"
args = ["kicad-mcp-pro"]gemini mcp add --scope user kicad-pro uvx -- kicad-mcp-proKICAD_MCP_PROJECT_DIR |
Optional: Absolute path of the KiCad project to work on; can be left out and set at run time with kicad_set_project. |
|---|---|
KICAD_MCP_PROFILE |
Optional: Which tool set is offered: default (24 read-only tools), review, build, release, expert/full, or focused ones such as pcb_only. |
KICAD_MCP_OPERATING_MODE |
Optional: Risk gate on top of the profile: readonly, write, manufacturing or experimental. |
KICAD_MCP_WORKSPACE_ROOT |
Optional: Directory that all project reads and writes must stay inside. |
KICAD_MCP_OUTPUT_DIR |
Optional: Directory for exported files. |
KICAD_CLI_PATH |
Optional: Path to kicad-cli when it is not on PATH; KICAD_MCP_KICAD_CLI is read too. |
KICAD_MCP_LOG_LEVEL |
Optional: Log level. |
| Set together: ipc | |
KICAD_API_SOCKET |
Optional: KiCad IPC endpoint (socket path or URI) for live editing; auto-discovered when unset. |
KICAD_API_TOKEN secret |
Optional: KiCad IPC token for live editing. |
| Set together: http | |
KICAD_MCP_TRANSPORT |
Optional: stdio, http, sse or streamable-http. |
KICAD_MCP_HOST |
Optional: Address the HTTP transport binds to; beyond loopback it needs KICAD_MCP_AUTH_TOKEN. |
KICAD_MCP_AUTH_TOKEN secret |
Optional: Bearer token of at least 32 characters, required when HTTP listens beyond loopback. |
KiCad MCP Pro is a local server for KiCad electronics projects. It reads schematics and boards, runs KiCad's own ERC and DRC through kicad-cli, checks a board for manufacturability, prices a bill of materials and exports Gerbers, drill and placement files as one package. With write mode turned on it can also change a schematic through a plan you preview, apply, verify and roll back, edit a board live in a running KiCad over its IPC interface, and keep git checkpoints of the project.
Two switches decide what a client gets. The profile picks which tools are offered, and the operating mode decides which of those may run. Unless you change them, you get the default profile in readonly mode, which is 24 review tools. The project's own snapshot of its profiles counts 388 tools in the expert profile, so most of the catalog stays hidden until you ask for it (docs/evidence/progressive-disclosure-profile-snapshot.json). The build profile pairs with write mode and release pairs with manufacturing mode, and each of those also offers 24 tools.
The quickstart command finds a supported agent on your machine, writes its MCP entry in readonly mode with a backup of the old settings, and tests the saved command over stdio. There is also an optional cloud service run by the author at kicad-mcp-pro.oaslananka.dev, which you sign in to and pair a computer with through the cloud subcommands (src/kicad_mcp/cloud_user_cli.py). Local use never needs it.
The Python package is the server. The npm package only starts the matching Python version through uvx. It talks over stdio unless you ask for Streamable HTTP, and if you expose HTTP beyond loopback the code refuses to start without a bearer token of at least 32 characters (src/kicad_mcp/config.py).
| Runtime | Python 3.13+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
uv can install the needed Python version itself. The npm launcher does not install uv or the Python package, so uv must already be on PATH. KiCad 10.0.x is the main supported line (10.0.7 is the last verified patch). KiCad 8 files can only be read and migrated, and KiCad 9 support was dropped in 3.9.0. HTTP transport needs the [http] extra when installed with pip.
Its signal-integrity, power-integrity, EMC and thermal tools give closed-form estimates (the docs say roughly 5-10% accuracy), not field-solver results, and its makers say outputs need human review before fabrication. Live editing tools are hidden when KiCad's IPC is not reachable. Only one project is active per server process, so one HTTP server should not be shared between users or projects. Part pricing uses the public JLCPCB catalog unless Nexar, DigiKey or Mouser credentials are set. Its own client examples set the pcb_only profile, not the default one.
Hardware engineers who already design in KiCad 10 and want an assistant to review a board, run ERC and DRC, check manufacturability and prepare fabrication files on their own machine. Because it starts read-only, it can review a project without touching the files, and write or manufacturing mode has to be switched on by hand. It is a community project and KiCad does not publish it. Teams on other EDA tools, or still on KiCad 9 or earlier, should look elsewhere.
38 only read, 7 change things, 3 can delete or overwrite. A ? marks an optional parameter.
kicad_get_server_infokicad_get_versionkicad_get_project_infokicad_set_projectkicad_list_tool_categorieskicad_get_tools_in_categorykicad_capability_parityrun_ercrun_drcvalidate_designvalidate_footprints_vs_schematicproject_quality_gateproject_design_workflowproject_get_next_actionproject_get_design_specproject_validate_design_specproject_assess_edit_impactsch_get_symbolssheet?: stringsheet_file?: stringsch_get_connectivity_graphsch_get_bounding_boxessch_visual_qasch_plan_from_specsch_preview_plansch_apply_plan changessch_verify_plansch_rollback_plan changespcb_get_board_summarypcb_get_design_rulespcb_get_stackuppcb_get_trackspcb_get_viaspcb_visual_qaget_board_statspcb_begin_commit changespcb_push_commit changespcb_drop_commit changespcb_delete_items deletesitem_ids: arraypcb_delete_object deletespcb_revert deletesvcs_commit_checkpoint changesvcs_list_checkpointsvcs_diff_with_checkpointlib_get_bom_with_pricinglib_verify_component_contractcheck_design_for_manufacturedfm_run_manufacturer_checkmanufacturing_quality_gateexport_manufacturing_package changes