Server data from the Official MCP Registry
MCP server for KiCad project setup, PCB edits, schematic work, validation, and exports.
MCP server for KiCad project setup, PCB edits, schematic work, validation, and exports.
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-oaslananka-kicad-mcp-pro": {
"args": [
"kicad-mcp-pro"
],
"command": "uvx"
}
}
}From the project's GitHub README.
AI-powered PCB and schematic design with KiCad. Works with Claude, Cursor, VS Code, Claude Code, and any MCP-compatible client.
The personal GitHub repository is the main public source. Automated GitHub CI/CD runs from the oaslananka-lab organization mirror; Azure DevOps, GitLab, and personal GitHub workflows stay manually triggered.
agent_full, HTTP discovery metadata, and opt-in /metrics.Dockerfile.kicad10 available for CI images.kicad_set_project(), recent project discovery, and safe path handling.project_set_design_intent() and project_get_design_intent() for connector, decoupling, power-tree, analog/digital partitioning, sensor clustering, RF, and fab assumptions.export_manufacturing_package().full, minimal, schematic_only, pcb_only, manufacturing, high_speed, power, simulation, analysis, agent_full) to reduce tool surface for clients. Legacy pcb and schematic aliases remain available.| Feature area | KiCad 9.x | KiCad 10.x |
|---|---|---|
| Core PCB + schematic inspection | Yes | Yes |
| Manufacturing exports | Yes | Yes |
Project-backed variant tools (variant_*) | Best effort | Yes |
Graphical DRC rule editing (drc_rule_*) | Best effort | Yes |
Time-domain routing helpers (route_tune_time_domain) | Fallback-to-length | Yes |
3D PDF export (pcb_export_3d_pdf) | No | Yes |
| Inner-layer footprint graphics | Limited | Yes |
| Design blocks + barcode helpers | Sidecar/file-based | Yes |
| Capability | kicad-mcp-pro | Generic KiCad scripts | Raw kicad-cli |
|---|---|---|---|
| MCP tools/resources/prompts | Yes | No | No |
| Project quality gates | Yes | Rare | No |
| KiCad Studio local bridge | Yes | No | No |
| Variant-aware workflows | Yes | Rare | No |
| Streamable HTTP transport | Yes | Rare | No |
| DRC/DFM/manufacturing bundle | Yes | Partial | Partial |
kicad-mcp-pro can run as a local HTTP bridge for the TypeScript-based kicad-studio extension. The bridge now supports:
studio_push_context() for active file, DRC errors, selected net/reference, and cursor state.kicad://studio/context as a resource that agents can read directly.KICAD_MCP_STUDIO_WATCH_DIR for auto-project detection when .kicad_pro files change./.well-known/mcp-server discovery plus bearer-token auth and CORS configuration for local-only deployments.For Studio deployments, 27185 is a good dedicated local bridge port by convention. The server default remains 3334, so either set KICAD_MCP_PORT=27185 explicitly or keep the default and point the Studio client at that port.
Repository ownership is split on purpose:
https://github.com/oaslananka/kicad-mcp-prohttps://github.com/oaslananka-lab/kicad-mcp-proThe ci.yml and security.yml GitHub workflows run automatically only when the repository owner is oaslananka-lab. On the personal GitHub repository they remain manual fallback workflows. Azure DevOps and GitLab pipelines are manual fallback/release-support surfaces.
Package publication to TestPyPI or PyPI remains manual and should be queued only after the version, changelog, and artifacts are ready. CI/CD can use Doppler as the central secret store by adding only DOPPLER_TOKEN to GitHub org, Azure, or GitLab; PYPI_TOKEN, TEST_PYPI_TOKEN, SAFETY_API_KEY, NPM_TOKEN, OVSX_PAT, and VSCE_PAT are then injected with doppler run -- .... See Repository and CI/CD Topology for the full policy.
Option 1: uvx (recommended)
uvx kicad-mcp-pro
Option 2: pip
pip install kicad-mcp-pro
kicad-mcp-pro
Option 3: uv
uv tool install kicad-mcp-pro
Add this to .vscode/mcp.json:
{
"servers": {
"kicad": {
"type": "stdio",
"command": "uvx",
"args": ["kicad-mcp-pro"],
"env": {
"KICAD_MCP_PROJECT_DIR": "/absolute/path/to/your/kicad-project",
"KICAD_MCP_PROFILE": "pcb_only"
}
}
}
}
Note: ${workspaceFolder} may not be expanded in some VS Code MCP setups. Use an
absolute path for KICAD_MCP_PROJECT_DIR to avoid startup errors.
Add this to ~/.codex/config.toml (or project-scoped .codex/config.toml):
[mcp_servers.kicad]
command = "uvx"
args = ["kicad-mcp-pro"]
startup_timeout_sec = 20
tool_timeout_sec = 120
[mcp_servers.kicad.env]
KICAD_MCP_PROJECT_DIR = "/absolute/path/to/your/kicad-project"
KICAD_MCP_PROFILE = "pcb_only"
Add this to your Claude Desktop config:
{
"mcpServers": {
"kicad": {
"command": "uvx",
"args": ["kicad-mcp-pro"],
"env": {
"KICAD_MCP_PROJECT_DIR": "/path/to/your/project"
}
}
}
}
Use .vscode/mcp.json with the same server shape shown above, and keep
KICAD_MCP_PROJECT_DIR as an absolute path.
Add a custom MCP server using uvx as the command and kicad-mcp-pro as the only argument. For remote-style usage, run kicad-mcp-pro --transport http and connect to http://127.0.0.1:3334/mcp. If you want Cursor and KiCad Studio to share the same local bridge convention, set KICAD_MCP_PORT=27185 and connect to http://127.0.0.1:27185/mcp instead.
Launch the server with uvx kicad-mcp-pro, then attach it from your MCP config. The minimal profile is a good default when you mainly want read/export workflows, while pcb_only and analysis are good focused options for board-heavy sessions.
Copy-ready configuration examples for VS Code, GitHub Copilot in VS Code, Codex, Claude Desktop, Claude Code, Cursor, Gemini CLI, Antigravity-compatible clients, and HTTP transports are available in Client Configuration.
http extra: pip install "kicad-mcp-pro[http]".freerouting extra:
pip install "kicad-mcp-pro[freerouting]".simulation extra:
pip install "kicad-mcp-pro[simulation]".vcs extra:
pip install "kicad-mcp-pro[vcs]".kicad-cli-backed export and validation tools require a KiCad installation inside the
container, typically mounted at /usr/bin/kicad-cli, or KICAD_MCP_KICAD_CLI pointed to a
valid binary./tmp/kicad-mcp-output. For edit/write workflows, change the project volume to rw
intentionally and keep remote HTTP deployments behind trusted authentication and origin checks.| Variable | Description | Default |
|---|---|---|
KICAD_MCP_KICAD_CLI | Path to kicad-cli | Auto-detected |
KICAD_MCP_NGSPICE_CLI | Path to ngspice | Auto-detected |
KICAD_MCP_KICAD_SOCKET_PATH | Optional KiCad IPC socket path | Unset |
KICAD_MCP_KICAD_TOKEN | Optional KiCad IPC token | Unset |
KICAD_MCP_PROJECT_DIR | Active project directory | Unset |
KICAD_MCP_PROJECT_FILE | Explicit .kicad_pro file | Auto-detected |
KICAD_MCP_PCB_FILE | Explicit .kicad_pcb file | Auto-detected |
KICAD_MCP_SCH_FILE | Explicit .kicad_sch file | Auto-detected |
KICAD_MCP_OUTPUT_DIR | Export output directory | <project>/output |
KICAD_MCP_SYMBOL_LIBRARY_DIR | KiCad symbol library root | Auto-detected |
KICAD_MCP_FOOTPRINT_LIBRARY_DIR | KiCad footprint library root | Auto-detected |
KICAD_MCP_TRANSPORT | stdio, http, sse, or streamable-http | stdio |
KICAD_MCP_HOST | HTTP bind host | 127.0.0.1 |
KICAD_MCP_PORT | HTTP bind port | 3334 |
KICAD_MCP_MOUNT_PATH | MCP HTTP mount path | /mcp |
KICAD_MCP_CORS_ORIGINS | Explicit HTTP/HTTPS origin allowlist | Empty |
KICAD_MCP_AUTH_TOKEN | Optional bearer token for HTTP bridge | Unset |
KICAD_MCP_LEGACY_SSE | Re-enable legacy SSE transport | false |
KICAD_MCP_STATEFUL_HTTP | Disable stateless HTTP mode | false |
KICAD_MCP_ENABLE_METRICS | Reserve /metrics support for HTTP mode | false |
KICAD_MCP_PROFILE | Tool profile | full |
KICAD_MCP_LOG_LEVEL | Log level | INFO |
KICAD_MCP_LOG_FORMAT | console or json | console |
KICAD_MCP_ENABLE_EXPERIMENTAL_TOOLS | Enable unstable helpers | false |
KICAD_MCP_IPC_CONNECTION_TIMEOUT | KiCad IPC timeout in seconds | 10.0 |
KICAD_MCP_CLI_TIMEOUT | kicad-cli timeout in seconds | 120.0 |
KICAD_MCP_MAX_ITEMS_PER_RESPONSE | Max list items returned | 200 |
KICAD_MCP_MAX_TEXT_RESPONSE_CHARS | Max text payload length | 50000 |
Preferred profile names are full, minimal, schematic_only, pcb_only,
manufacturing, high_speed, power, simulation, analysis, and
agent_full. Legacy aliases pcb and schematic still work for older clients.
kicad_set_projectkicad_get_project_infokicad_list_recent_projectskicad_scan_directorykicad_create_new_projectkicad_get_versionkicad_list_tool_categorieskicad_get_tools_in_categorykicad_helpproject_set_design_intentproject_get_design_intentpcb_get_board_summarypcb_get_tracks (page, page_size, filter_layer, filter_net)pcb_get_viaspcb_get_footprints (page, page_size, filter_layer)pcb_get_netspcb_get_zonespcb_get_shapespcb_get_padspcb_get_layerspcb_get_stackuppcb_get_selectionpcb_get_board_as_stringpcb_get_ratsnestpcb_get_design_rulespcb_get_impedance_for_tracepcb_check_creepage_clearancepcb_add_trackpcb_add_tracks_bulkpcb_add_viapcb_add_segmentpcb_add_circlepcb_add_rectanglepcb_add_textpcb_set_board_outlinepcb_set_stackuppcb_add_blind_viapcb_add_microviapcb_auto_place_by_schematicpcb_place_decoupling_capspcb_group_by_functionpcb_align_footprintspcb_set_keepout_zonepcb_add_mounting_holespcb_add_fiducial_markspcb_add_teardropspcb_delete_itemspcb_savepcb_refill_zonespcb_highlight_netpcb_set_net_classpcb_move_footprintpcb_set_footprint_layerpcb_sync_from_schematicsch_get_symbolssch_get_wiressch_get_labelssch_get_net_namessch_create_sheetsch_list_sheetssch_get_sheet_infosch_add_symbolsch_add_wiresch_add_labelsch_add_global_labelsch_add_hierarchical_labelsch_add_power_symbolsch_add_bussch_add_bus_wire_entrysch_add_no_connectsch_update_propertiessch_build_circuitsch_get_pin_positionssch_route_wire_between_pinssch_get_connectivity_graphsch_trace_netsch_auto_place_symbolssch_check_power_flagssch_annotatesch_reloadsch_build_circuit can accept auto_layout=true for a readable grid placement. When a
nets list is also provided, it performs a lightweight connection-aware layout, creates
missing power symbols or labels for named nets, and generates Manhattan wire segments
from symbol pins. This is a deterministic helper, not a full KiCad-quality autorouter.
Multi-unit symbols such as dual op-amps can be placed and inspected with unit=<n>.
The MCP now validates requested units against the KiCad library and reports available
units instead of silently falling back to unit 1.
pcb_sync_from_schematic closes the first-board gap by reading schematic footprint
assignments and writing missing footprint instances into the .kicad_pcb file. It is
intended for initial board bring-up and footprint sync, not for full autorouting.
It preserves existing footprints by default, can replace wrong footprint names in place
with replace_mismatched=true, and performs a lightweight overlap-avoidance pass for
newly added footprints.
v2 also adds board bring-up helpers on top of that sync path. pcb_auto_place_by_schematic
can lay out the first board in cluster, linear, or star mode, while
pcb_group_by_function, pcb_align_footprints, and pcb_place_decoupling_caps
help refine the initial placement without opening the PCB editor. pcb_add_mounting_holes
and pcb_add_fiducial_marks append simple manufacturing footprints, pcb_set_keepout_zone
creates a real rule-area keepout on the active board, and pcb_add_teardrops adds
small copper helper zones at basic pad-to-track junctions when the board is open over IPC.
For multilayer bring-up, pcb_set_stackup stores a file-backed stackup profile and updates
the board setup block so later tools can reuse the same dielectric assumptions.
pcb_get_impedance_for_trace reads that active stackup and estimates impedance for a given
trace width on a selected copper layer, while pcb_check_creepage_clearance performs a
heuristic pad-to-pad creepage review against voltage, pollution degree, and material group.
pcb_add_blind_via and pcb_add_microvia use KiCad IPC to create layer-pair vias with
explicit start and end copper layers.
lib_list_librarieslib_search_symbolslib_get_symbol_infolib_search_footprintslib_list_footprintslib_rebuild_indexlib_get_footprint_infolib_get_footprint_3d_modellib_assign_footprintlib_create_custom_symbollib_search_componentslib_get_component_detailslib_assign_lcsc_to_symbollib_get_bom_with_pricinglib_check_stock_availabilitylib_find_alternative_partslib_get_datasheet_urlLive component search now defaults to the zero-auth jlcsearch source. nexar
and digikey remain available as authenticated source options for deployments
that provide the required credentials.
run_drcrun_ercschematic_quality_gateschematic_connectivity_gatevalidate_designpcb_quality_gatepcb_placement_quality_gatepcb_score_placementmanufacturing_quality_gateproject_quality_gatecheck_design_for_manufactureget_unconnected_netsget_courtyard_violationsget_silk_to_pad_violationsvalidate_footprints_vs_schematicexport_gerberexport_drillexport_bomexport_netlistexport_spice_netlistexport_pcb_pdfexport_sch_pdfexport_3d_stepexport_stepexport_3d_renderexport_pick_and_placeexport_ipc2581export_svgexport_dxfget_board_statsexport_manufacturing_packageexport_manufacturing_package is now a release-only helper. It first runs the full
project_quality_gate() and hard-blocks the package when the design is still FAIL
or BLOCKED. pcb_transfer_quality_gate() is part of that release contract, so
schematic pad nets must transfer cleanly onto PCB pads before the gated release
handoff is allowed. Use the low-level export tools for debugging or interchange
artifacts while iterating; they do not enforce project_quality_gate(). The
manufacturing profile keeps its export surface narrow around get_board_stats() and
export_manufacturing_package(), while broader profiles such as full and minimal
continue to expose the direct export_*() tools.
pcb_placement_quality_gate() is the blocking geometry/context gate. pcb_score_placement()
adds softer density and spread heuristics so an agent can improve layout quality before a
hard failure happens. Placement scoring is now intent-aware for connector edge usage,
decoupling proximity, RF keepouts, power-tree locality, analog/digital separation, and
sensor clustering.
dfm_load_manufacturer_profiledfm_run_manufacturer_checkdfm_calculate_manufacturing_costDFM profiles are now bundled with the server for quick fabrication review. The
first v2 profile set includes JLCPCB (standard, advanced), PCBWay
(standard), and OSH Park (2layer). dfm_load_manufacturer_profile
stores the active selection in the project output directory so later DFM checks
can reuse the same fabricator assumptions.
route_single_trackroute_from_pad_to_padroute_export_dsnroute_import_sesroute_autoroute_freeroutingroute_set_net_class_rulesroute_differential_pairroute_tune_lengthtune_track_length (deprecated alias)tune_diff_pair_lengthRouting helpers now cover three layers:
.dsn / .ses filesImportant limitation: KiCad 10 still does not expose a stable headless Specctra
export/import flow through kicad-cli on all installations. route_export_dsn
and route_import_ses therefore support staging existing .dsn / .ses files
and explain the remaining manual KiCad PCB Editor step when needed.
sim_run_operating_pointsim_run_ac_analysissim_run_transientsim_run_dc_sweepsim_check_stabilitysim_add_spice_directiveSimulation tools use direct ngspice CLI execution by default and can still use
InSpice when it is installed manually in the runtime environment. The
sim_add_spice_directive tool stores a project-local sidecar file used by future
MCP simulation runs, which is useful for reusable .param, .include, or
.options lines.
si_calculate_trace_impedancesi_calculate_trace_width_for_impedancesi_check_differential_pair_skewsi_validate_length_matchingsi_generate_stackupsi_check_via_stubsi_calculate_decoupling_placementThese helpers provide fast board-level estimates for routing and review. They are intended for engineering triage and pre-layout guidance, then should be verified against your fabricator stackup and final KiCad rule setup before tape-out.
pdn_calculate_voltage_droppdn_recommend_decoupling_capspdn_check_copper_weightpdn_generate_power_planethermal_calculate_via_countthermal_check_copper_pourThese tools focus on quick PDN sanity checks: whether a rail looks too resistive, whether routed copper is undersized, whether a local plane exists, and how much thermal stitching is likely needed around hotter regions.
emc_check_ground_plane_voidsemc_check_return_path_continuityemc_check_split_plane_crossingemc_check_decoupling_placementemc_check_via_stitchingemc_check_differential_pair_symmetryemc_check_high_speed_routing_rulesemc_run_full_complianceThese EMC helpers use board-state heuristics so an agent can quickly flag likely return-path, stitching, plane, and decoupling problems before a manual SI/EMI review.
vcs_init_gitvcs_commit_checkpointvcs_list_checkpointsvcs_restore_checkpointvcs_tag_releasevcs_diff_with_checkpointThese tools scope Git actions to the active KiCad project directory, add local identity defaults when needed, and protect restores by stashing dirty project state before rolling files back to a checkpoint commit.
The built-in MCP prompt set now also includes:
design_review_loopfix_blocking_issuesmanufacturing_release_checklistThe resource surface now exposes:
kicad://project/quality_gatekicad://project/fix_queuekicad://schematic/connectivitykicad://board/placement_qualityFor regression coverage, the repository also ships a benchmark and failure corpus under
tests/fixtures/benchmark_projects/. These fixtures are used to prove that clean projects
can reach release export while known-bad projects stay hard-blocked. The corpus includes
label-only schematic failures, overlap/DFM failures, bad decoupling placement, wide sensor
clusters, dirty PCB transfer cases, and SismoSmart-style hierarchy/connectivity regressions.
See CONTRIBUTING.md and the development docs in docs/development.
Released under the MIT License.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.