KiCad MCP Pro
Provides Git checkpoint tools for version control of KiCad projects, enabling automated commits and snapshot management.
Provides comprehensive tools for PCB and schematic design, including project management, design intent, PCB/schematic editing, DRC/ERC, export (Gerber, BOM, PDF, STEP, etc.), signal/power integrity, EMC, simulation, and manufacturing handoff.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KiCad MCP Pro run DRC and fix any errors in my design"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
KiCad MCP Pro Server
AI-powered PCB and schematic design with KiCad. Works with Claude, Cursor, VS Code, Claude Code, and any MCP-compatible client.
Primary CI/CD and release automation runs in Azure DevOps. GitHub Actions in this repository are manual fallback workflows only.
Features
Project-first workflow with
kicad_set_project(), recent project discovery, and safe path handling.Project intent helpers with
project_set_design_intent()andproject_get_design_intent()for connector, decoupling, power-tree, analog/digital partitioning, sensor clustering, RF, and fab assumptions.KiCad 10.x-first runtime with best-effort 9.x support and cross-platform CLI/library discovery.
PCB tools for board inspection, tracks, vias, footprints, text, shapes, outline editing, and zone refill.
Schematic tools for symbols, wires, labels, buses, no-connect markers, property updates, annotation, netlist-aware auto-layout, and IPC reload.
Library tools for symbol search, footprint search, datasheet lookup, footprint assignment, and custom symbol generation.
Validation tools for DRC, ERC, DFM, courtyard issues, silk overlaps, and schematic-versus-PCB footprint checks.
Project quality gates for schematic, schematic connectivity, PCB, placement, PCB transfer, manufacturing, and gated manufacturing handoff via
export_manufacturing_package().Export tools for Gerber, drill, BOM, PDF, netlist, STEP, render, pick-and-place, IPC-2581, SVG, and DXF.
Signal integrity tools for impedance synthesis, differential skew checks, stackup planning, via-stub review, and decoupling heuristics.
Power integrity tools for voltage-drop estimation, copper current checks, plane generation, and thermal via guidance.
EMC tools for plane coverage, return-path review, via stitching, diff-pair symmetry, and bundled compliance sweeps.
Simulation tools for SPICE operating-point, AC, transient, DC sweep, and loop-stability checks.
MCP resources for live board/project state, quality gates, fix queues, connectivity, and placement review.
Prompt workflows for first-board, schematic-to-PCB, manufacturing release, design review loops, and critic/fixer iterations.
Server profiles (
full,minimal,schematic_only,pcb_only,manufacturing,high_speed,power,simulation,analysis) to reduce tool surface for clients. Legacypcbandschematicaliases remain available.
Related MCP server: KiCAD MCP Server
KiCad 10 Feature Matrix
Feature area | KiCad 9.x | KiCad 10.x |
Core PCB + schematic inspection | Yes | Yes |
Manufacturing exports | Yes | Yes |
Variant sidecar tools ( | Best effort | Yes |
Graphical DRC rule editing ( | Best effort | Yes |
Time-domain routing helpers ( | Fallback-to-length | Yes |
3D PDF export ( | No | Yes |
Inner-layer footprint graphics | Limited | Yes |
Design blocks + barcode helpers | Sidecar/file-based | Yes |
Demo
First-board walkthrough script: docs/workflows/first-pcb.md
KiCad Studio bridge setup: docs/integration/kicad-studio.md
HTTP deployment notes: docs/deployment/http-mode.md
Comparison
Capability | kicad-mcp-pro | Generic KiCad scripts | Raw |
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 Studio Integration
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/contextas a resource that agents can read directly.KICAD_MCP_STUDIO_WATCH_DIRfor auto-project detection when.kicad_profiles change./.well-known/mcp-serverdiscovery 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.
CI/CD
Azure DevOps is the canonical CI/CD system for this repository. The pipeline definition lives in azure-pipelines.yml and covers linting, mypy, pytest, coverage, package builds, and optional manual publishing to TestPyPI or PyPI from Azure-managed secrets.
GitHub Actions stays in the repository only as a manual fallback surface:
.github/workflows/ci.yml.github/workflows/security.yml.github/workflows/publish.yml
None of those workflows are intended to be the primary automated path. If GitHub-hosted automation is unavailable, queue the Azure pipeline instead and keep GitHub releases/workflows manual.
Quick Start
Installation
Option 1: uvx (recommended)
uvx kicad-mcp-proOption 2: pip
pip install kicad-mcp-pro
kicad-mcp-proOption 3: uv
uv tool install kicad-mcp-proVS Code Configuration
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.
Codex Configuration
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"Claude Desktop Configuration
Add this to your Claude Desktop config:
{
"mcpServers": {
"kicad": {
"command": "uvx",
"args": ["kicad-mcp-pro"],
"env": {
"KICAD_MCP_PROJECT_DIR": "/path/to/your/project"
}
}
}
}VS Code / Cline
Use .vscode/mcp.json with the same server shape shown above, and keep
KICAD_MCP_PROJECT_DIR as an absolute path.
Cursor
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.
Claude Code
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.
More Clients
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.
Prerequisites
KiCad 9.0 or 10.0+ installed.
Python 3.12+.
For live IPC tools, KiCad must be running with the IPC API available.
For HTTP transport, install the
httpextra:pip install "kicad-mcp-pro[http]".For FreeRouting orchestration helpers, install the
freeroutingextra:pip install "kicad-mcp-pro[freerouting]".For SPICE simulation tools, install the
simulationextra:pip install "kicad-mcp-pro[simulation]".For Git checkpoint tools, install the
vcsextra:pip install "kicad-mcp-pro[vcs]".
Docker Limitations
The published container image does not bundle a KiCad installation.
kicad-cli-backed export and validation tools require a KiCad installation inside the container, typically mounted at/usr/bin/kicad-cli, orKICAD_MCP_KICAD_CLIpointed to a valid binary.The default Compose setup mounts the project read-only and writes exports to
/tmp/kicad-mcp-output. For edit/write workflows, change the project volume torwintentionally and keep remote HTTP deployments behind trusted authentication and origin checks.Live IPC tools still require a reachable KiCad session with the IPC API enabled.
Configuration
Variable | Description | Default |
| Path to | Auto-detected |
| Path to | Auto-detected |
| Optional KiCad IPC socket path | Unset |
| Optional KiCad IPC token | Unset |
| Active project directory | Unset |
| Explicit | Auto-detected |
| Explicit | Auto-detected |
| Explicit | Auto-detected |
| Export output directory |
|
| KiCad symbol library root | Auto-detected |
| KiCad footprint library root | Auto-detected |
|
|
|
| HTTP bind host |
|
| HTTP bind port |
|
| MCP HTTP mount path |
|
| Tool profile |
|
| Log level |
|
|
|
|
| Enable unstable helpers |
|
| KiCad IPC timeout in seconds |
|
|
|
|
| Max list items returned |
|
| Max text payload length |
|
Preferred profile names are full, minimal, schematic_only, pcb_only,
manufacturing, high_speed, power, simulation, and analysis. Legacy
aliases pcb and schematic still work for older clients.
Tool Reference
Project Management
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_intent
PCB
pcb_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_schematic
Schematic
sch_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_reload
sch_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.
Library
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_url
Live 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.
Export And Validation
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_package
export_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
dfm_load_manufacturer_profiledfm_run_manufacturer_checkdfm_calculate_manufacturing_cost
DFM 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.
Routing
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_length
Routing helpers now cover three layers:
direct IPC routing for simple single-track and pad-to-pad paths
rule-file authoring for net class, differential pair, and length-tuning constraints
FreeRouting orchestration around Specctra
.dsn/.sesfiles
Important 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.
Simulation
sim_run_operating_pointsim_run_ac_analysissim_run_transientsim_run_dc_sweepsim_check_stabilitysim_add_spice_directive
Simulation 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.
Signal Integrity
si_calculate_trace_impedancesi_calculate_trace_width_for_impedancesi_check_differential_pair_skewsi_validate_length_matchingsi_generate_stackupsi_check_via_stubsi_calculate_decoupling_placement
These 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.
Power Integrity
pdn_calculate_voltage_droppdn_recommend_decoupling_capspdn_check_copper_weightpdn_generate_power_planethermal_calculate_via_countthermal_check_copper_pour
These 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
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_compliance
These 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.
Version Control
vcs_init_gitvcs_commit_checkpointvcs_list_checkpointsvcs_restore_checkpointvcs_diff_with_checkpoint
These 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.
Workflows
The built-in MCP prompt set now also includes:
design_review_loopfix_blocking_issuesmanufacturing_release_checklist
The resource surface now exposes:
kicad://project/quality_gatekicad://project/fix_queuekicad://schematic/connectivitykicad://board/placement_quality
For 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.
Contributing
See CONTRIBUTING.md and the development docs in docs/development.
License
Released under the MIT License.
Available Tools
241 toolsadd_footprint_inner_layer_graphicCDestructive
Inject an inner-layer graphic primitive into a footprint block.
Inputs: layer (required), reference (required), shape_type (required), text, +5 more. Returns: result
check_design_for_manufactureARead-onlyIdempotent
Run a lightweight DFM check using available DRC data.
Inputs: jlcpcb. Returns: result
dfm_calculate_manufacturing_costC
Estimate fabrication cost from board area, layers, and via count.
Inputs: tier, quantity, manufacturer. Returns: result
dfm_load_manufacturer_profileB
Load a bundled manufacturer DFM profile for subsequent checks.
Inputs: tier, manufacturer. Returns: result
dfm_run_manufacturer_checkB
Run a manufacturer-aware DFM review using the active bundled profile.
Inputs: no named parameters. Returns: result
drc_export_rulesA
Export the active custom DRC rules file for sharing or CI.
Inputs: output_path. Returns: result
drc_list_rulesB
List known DRC rules from the active .kicad_dru file.
Inputs: include_custom. Returns: result
drc_rule_createB
Create or update a custom DRC rule in the active .kicad_dru file.
Inputs: name (required), constraint_type (required), severity, condition, +2 more. Returns: result
drc_rule_deleteB
Delete a custom DRC rule from the active rules file.
Inputs: rule_name (required). Returns: result
drc_rule_enableB
Enable or disable a custom DRC rule.
Inputs: rule_name (required), enabled. Returns: result
emc_check_decoupling_placementB
Review whether ICs have nearby decoupling capacitors.
Inputs: max_distance_mm. Returns: result
emc_check_differential_pair_symmetryC
Review diff-pair skew and width symmetry.
Inputs: net_n (required), net_p (required), max_skew_ps. Returns: result
emc_check_ground_plane_voidsC
Review GND plane presence and a simple void-risk proxy.
Inputs: max_void_area_mm2. Returns: result
emc_check_high_speed_routing_rulesD
Review a high-speed net class for a short-stub proxy.
Inputs: net_class (required), max_stub_length_mm. Returns: result
emc_check_return_path_continuityC
Check whether a signal has an obvious nearby GND return plane.
Inputs: signal_net (required), reference_plane_layer (required). Returns: result
emc_check_split_plane_crossingA
Warn when routed signals share layers with split non-ground planes.
Inputs: signal_nets (required). Returns: result
emc_check_via_stitchingC
Estimate via-stitching density from existing ground vias.
Inputs: ground_net, max_gap_mm. Returns: result
emc_run_full_complianceB
Run a lightweight EMC sweep with at least ten heuristic checks.
Inputs: standard. Returns: result
export_3d_renderCDestructive
Render the board to a PNG image.
Inputs: side, zoom, output_file. Returns: result
export_3d_stepBDestructive
Export a STEP model for the active board.
Inputs: no named parameters. Returns: result
export_bomCDestructive
Export a bill of materials.
Inputs: format. Returns: result
export_drillCDestructive
Export drill files.
Inputs: output_subdir. Returns: result
export_dxfBDestructive
Export a board layer to DXF when supported.
Inputs: layer. Returns: result
export_gerberCDestructive
Export Gerber manufacturing files.
Inputs: layers, output_subdir. Returns: result
export_ipc2581ADestructive
Export IPC-2581 manufacturing data.
Inputs: no named parameters. Returns: result
export_manufacturing_packageBDestructive
Generate the standard set of manufacturing exports.
Inputs: no named parameters. Returns: result
export_netlistCDestructive
Export a KiCad schematic netlist.
Inputs: format. Returns: result
export_pcb_pdfCDestructive
Export the PCB to PDF.
Inputs: layers. Returns: result
export_pick_and_placeCDestructive
Export assembly position data.
Inputs: format. Returns: result
export_sch_pdfADestructive
Export the schematic to PDF.
Inputs: no named parameters. Returns: result
export_spice_netlistCDestructive
Export a SPICE netlist.
Inputs: no named parameters. Returns: result
export_stepBDestructive
Alias for STEP export with an optional explicit output path.
Inputs: output_path. Returns: result
export_svgBDestructive
Export a board layer to SVG when supported.
Inputs: layer. Returns: result
get_board_statsBRead-onlyIdempotent
Export board statistics and return a readable preview.
Inputs: no named parameters. Returns: result
get_courtyard_violationsARead-onlyIdempotent
Return only courtyard issues from DRC.
Inputs: no named parameters. Returns: result
get_silk_to_pad_violationsARead-onlyIdempotent
Return silkscreen overlap issues from DRC.
Inputs: no named parameters. Returns: result
get_unconnected_netsARead-onlyIdempotent
Return only unconnected net issues from DRC.
Inputs: no named parameters. Returns: result
kicad_create_new_projectC
Create a new minimal KiCad project structure and activate it.
Inputs: name (required), path (required). Returns: result
kicad_get_project_infoARead-onlyIdempotent
Show the currently configured KiCad project paths.
Inputs: no named parameters. Returns: result
kicad_get_tools_in_categoryCRead-onlyIdempotent
Get the tool names available in a specific category.
Inputs: category (required). Returns: result
kicad_get_versionARead-onlyIdempotent
Get KiCad version information and current connection status.
Inputs: no named parameters. Returns: result
kicad_helpA
Show a concise startup guide and all tool categories.
Inputs: no named parameters. Returns: result
kicad_list_recent_projectsA
List recently opened KiCad projects from KiCad's config files.
Inputs: no named parameters. Returns: result
kicad_list_tool_categoriesA
List all available tool categories and capabilities.
Inputs: no named parameters. Returns: result
kicad_scan_directoryA
Scan a directory and report any KiCad project files it contains.
Inputs: path (required). Returns: result
kicad_set_projectCDestructive
Set the active KiCad project directory and file paths.
Inputs: project_dir (required), pcb_file, sch_file, output_dir. Returns: result
lib_assign_footprintC
Assign a footprint property to a schematic symbol.
Inputs: library (required), footprint (required), reference (required). Returns: result
lib_assign_lcsc_to_symbolB
Assign an LCSC part code to a schematic symbol property.
Inputs: lcsc_code (required), reference (required). Returns: result
lib_bind_part_to_symbolA
Assign a live part (LCSC/MPN) to a schematic symbol and optionally its footprint.
This is the recommended tool for closing the part-selection loop after lib_recommend_part() or lib_search_components() returns a suitable part.
Args: sym_ref: Schematic reference designator (e.g. "U1", "C4"). lcsc_code_or_mpn: LCSC part code or manufacturer part number. auto_assign_footprint: If True, attempts to assign the footprint from the live part data to the symbol. Requires the schematic backend. source: Parts source for detail lookup.
Returns: Confirmation of LCSC/MPN assignment and footprint status.
Inputs: sym_ref (required), lcsc_code_or_mpn (required), source, auto_assign_footprint. Returns: result
lib_check_stock_availabilityB
Check live stock availability for the requested schematic references.
Inputs: refs (required), source. Returns: result
lib_create_custom_symbolC
Create a simple custom symbol in the active project directory.
Inputs: name (required), pins (required). Returns: result
lib_find_alternative_partsB
Find nearby alternative parts for the supplied LCSC code.
Inputs: lcsc_code (required), source, tolerance_percent. Returns: result
lib_generate_footprint_ipc7351A
Generate an IPC-7351B compliant KiCad footprint (.kicad_mod) and save it.
Supported packages: 0201, 0402, 0603, 0805, 1206, 1210, 2512 (chip passives), SOT-23, SOIC, SOP, SSOP, TSSOP (dual SMD), QFP, LQFP, TQFP (quad flat), QFN, DFN (no-lead), BGA (ball grid array), PinHeader (through-hole).
Args:
package: Package family name (case-insensitive).
density: IPC-7351B density level: A (generous), B (nominal), C (compact).
pin_count: Number of leads / balls (required for multi-lead packages).
pitch_mm: Lead pitch in mm.
body_l_mm: Body length in mm.
body_w_mm: Body width in mm (QFP only; defaults to body_l_mm).
rows: BGA rows or PinHeader row count (1 or 2).
exposed_pad_mm: Exposed pad size for QFN in mm.
ball_diameter_mm: BGA ball diameter in mm.
output_path: Optional relative path inside output_dir. Defaults to
footprints/<package>.kicad_mod.
Returns: Confirmation with the saved file path, or an error message.
Inputs: package (required), rows, density, pitch_mm, +6 more. Returns: result
lib_generate_symbol_from_pintableA
Generate a KiCad symbol (.kicad_sym) from a pin table and save it.
Each pin dict must contain:
number (str | int), name (str).
Optional per-pin keys:
pin_type (input/output/bidirectional/passive/power_in/power_out/…),
side (left/right/top/bottom), unit (int ≥ 1).
Args:
name: Symbol name, used as both the library entry and the default value.
pins: List of pin specification dicts.
reference_prefix: Ref-des prefix (U, J, Q, R, …).
description: Short human description.
datasheet: Datasheet URL or path.
footprint_hint: Default footprint (e.g. "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm").
output_path: Optional relative path inside output_dir. Defaults to
symbols/<name>.kicad_sym.
Returns: Confirmation with the saved file path, or an error message.
Inputs: name (required), pins (required), datasheet, description, +3 more. Returns: result
lib_get_bom_with_pricingC
Generate a live BOM summary with unit and extended pricing.
Inputs: source, quantity. Returns: result
lib_get_component_detailsB
Return live component detail for a specific LCSC code or MPN.
Inputs: lcsc_code_or_mpn (required), source. Returns: result
lib_get_datasheet_urlC
Return a datasheet URL from the symbol library when available.
Inputs: library (required), symbol_name (required). Returns: result
lib_get_footprint_3d_modelB
Return the configured 3D model path for a footprint.
Inputs: library (required), footprint (required). Returns: result
lib_get_footprint_infoB
Return details for a single footprint.
Inputs: library (required), footprint (required). Returns: result
lib_get_symbol_infoC
Return details for a single symbol.
Inputs: library (required), symbol_name (required). Returns: result
lib_list_footprintsA
List footprints in a specific library.
Inputs: library (required). Returns: result
lib_list_librariesA
List configured symbol and footprint libraries.
Inputs: no named parameters. Returns: result
lib_rebuild_indexB
Rebuild the in-memory symbol search index.
Inputs: no named parameters. Returns: result
lib_recommend_partA
Recommend a purchasable part given electrical requirements.
Args:
category: Component category keyword to search (e.g. "LDO regulator",
"N-channel MOSFET", "ferrite bead", "ESD protection").
requirements: Dict of electrical parameter hints used for post-search
filtering. Common keys: voltage_v, current_a, vgs_v,
rds_on_mohm, psrr_db, capacitance_uf, resistance_ohm.
Values can be numbers (min) or {"min": x, "max": y} dicts.
package: Optional SMD package filter (e.g. "SOT-23", "SOIC-8").
only_basic: Prefer JLCPCB basic parts (lower assembly cost).
source: Parts source: "jlcsearch", "nexar", or "digikey".
max_results: Maximum number of recommendations to return.
Returns: Ranked list of part recommendations with LCSC code, MPN, package, price.
Inputs: category (required), requirements (required), source, package, +2 more. Returns: result
lib_search_componentsBRead-onlyIdempotent
Search live component sources for purchasable parts.
Inputs: keyword (required), source, package, sort_by, +2 more. Returns: result
lib_search_footprintsBRead-onlyIdempotent
Search footprint libraries by footprint name.
Inputs: query (required), library_filter. Returns: result
lib_search_symbolsBRead-onlyIdempotent
Search symbol libraries by name, description, or keywords.
Inputs: query (required), library_filter. Returns: result
manufacturing_quality_gateBRead-onlyIdempotent
Evaluate manufacturing readiness against the active or requested DFM profile.
Inputs: tier, manufacturer. Returns: result
mfg_check_import_supportA
Report whether the detected KiCad CLI advertises a given board-import format.
Inputs: format (required). Returns: result
mfg_correct_cpl_rotationsA
Apply JLCPCB CPL rotation corrections to a KiCad-exported pick-and-place CSV.
KiCad exports component orientations relative to its own coordinate system,
which differs from what JLCPCB's SMT assembly service expects. This tool
reads a CPL CSV (produced by export_pos), applies per-footprint rotation
offsets from the bundled jlcpcb_rotations.json table, and writes a
corrected CSV ready for direct upload to JLCPCB.
Columns expected (KiCad default CPL export): Ref, Val, Package, PosX, PosY, Rot, Side
Args:
cpl_csv_path: Path to the CPL CSV file (relative to project dir).
output_path: Output path for the corrected CSV. Defaults to
<stem>_jlcpcb_corrected.csv next to the input file.
dry_run: If True, return a preview table without writing the file.
Returns: Summary of corrections applied, or a preview table for dry_run.
Inputs: cpl_csv_path (required), dry_run, output_path. Returns: result
mfg_generate_release_manifestA
Generate a SHA256-signed release manifest for the manufacturing package.
Collects all files in the output directory, computes SHA256 hashes, and
records tool versions, intent hash, and gate status into a manifest.json
and MANIFEST.txt.
Args:
output_path: Subdirectory inside the project (defaults to output/).
Returns: Confirmation with manifest path and file count.
Inputs: output_path. Returns: result
mfg_generate_test_planA
Generate a bring-up test plan from the project design intent.
Produces a structured markdown checklist covering:
Power-on sequence and current limit checks for each power rail.
Protocol loopback / link-up checks for each interface.
Critical-net continuity probes.
Visual inspection items.
Args:
output_path: Optional relative path for saving the plan (e.g.
"test_plan.md"). If omitted, returns the plan as text only.
Returns: Bring-up test plan in markdown format.
Inputs: output_path. Returns: result
mfg_import_allegroB
Import an Allegro board into a KiCad project directory.
Inputs: allegro_brd_path (required), output_dir. Returns: result
mfg_import_gedaC
Import a gEDA PCB into a KiCad project directory.
Inputs: geda_pcb_path (required), output_dir. Returns: result
mfg_import_padsB
Import a PADS PCB into a KiCad project directory.
Inputs: pads_pcb_path (required), output_dir. Returns: result
mfg_panelizeADestructive
Panelize the active PCB using KiKit.
Creates a panel of multiple boards for efficient PCB fabrication.
Requires kikit to be installed (pip install kikit).
Args:
layout: Panel layout type: "grid" (rectangular array),
"mousebites" (tab+mousebite breakaway), or "vcut" (V-cut scoring).
rows: Number of board rows in the panel.
cols: Number of board columns in the panel.
spacing_mm: Gap between boards in mm.
frame_width_mm: Panel frame/rail width in mm.
output_path: Optional output file path (relative to output_dir).
Defaults to panel/<boardname>_panel_<rows>x<cols>.kicad_pcb.
Returns: Confirmation with the panel file path, or an error message.
Inputs: cols, rows, layout, spacing_mm, +2 more. Returns: result
pcb_add_barcodeCDestructive
Add a production barcode marker to the board file.
Inputs: x_mm (required), y_mm (required), content (required), layer, +2 more. Returns: result
pcb_add_blind_viaCDestructive
Add a blind or buried via between the requested copper layers.
Inputs: x_mm (required), y_mm (required), to_layer (required), from_layer (required), +3 more. Returns: result
pcb_add_circleCDestructive
Add a board graphic circle.
Inputs: cx_mm (required), cy_mm (required), radius_mm (required), layer, +1 more. Returns: result
pcb_add_copper_zoneDDestructive
Backward-compatible alias for pcb_add_zone().
Inputs: layer (required), corners (required), net_name (required), name, +6 more. Returns: result
pcb_add_fiducial_marksBDestructive
Append simple fiducial footprints near the board corners.
Inputs: count, margin_mm, diameter_mm, allow_open_board. Returns: result
pcb_add_microviaADestructive
Add a microvia between adjacent copper layers.
Inputs: x_mm (required), y_mm (required), to_layer (required), from_layer (required), +3 more. Returns: result
pcb_add_mounting_holesADestructive
Append standard mounting-hole footprints around the current board frame.
Inputs: pattern, margin_mm, diameter_mm, clearance_mm, +1 more. Returns: result
pcb_add_rectangleCDestructive
Add a board graphic rectangle.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +2 more. Returns: result
pcb_add_segmentCDestructive
Add a board graphic segment.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +2 more. Returns: result
pcb_add_teardropsBDestructive
Create small copper helper zones at simple pad-to-track junctions.
Inputs: max_count, net_classes, width_ratio, length_ratio. Returns: result
pcb_add_textCDestructive
Add board text.
Inputs: text (required), x_mm (required), y_mm (required), bold, +4 more. Returns: result
pcb_add_trackCDestructive
Add a single track segment.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +3 more. Returns: result
pcb_add_tracks_bulkADestructive
Add multiple tracks in a single operation.
Inputs: tracks (required). Returns: result
pcb_add_viaCDestructive
Add a via.
Inputs: x_mm (required), y_mm (required), drill_mm, net_name, +2 more. Returns: result
pcb_add_zoneCDestructive
Add a copper zone with an arbitrary polygon outline on one copper layer.
Inputs: layer (required), corners (required), net_name (required), name, +6 more. Returns: result
pcb_align_footprintsC
Arrange selected footprints into a straight row or column.
Inputs: refs (required), axis, spacing_mm, allow_open_board. Returns: result
pcb_auto_place_by_schematicB
Place PCB footprints from the current schematic using deterministic heuristics.
Inputs: grid_mm, scale_x, scale_y, strategy, +4 more. Returns: result
pcb_auto_place_force_directedA
Run a force-directed spring-embedder placement algorithm on a set of components.
This tool computes optimised X/Y positions for components based on their net connectivity without requiring KiCad to be open. Use it to get a placement suggestion, then apply the result with pcb_move_footprint for each component.
Args: component_positions: List of component dicts with keys: ref (str), x (float, mm), y (float, mm), w (float, mm, optional default 2), h (float, mm, optional default 2), fixed (bool, optional default false). nets: List of net dicts with keys: name (str), refs (list[str]), weight (float, optional default 1.0). board_width_mm: Soft boundary width in mm (default 100). board_height_mm: Soft boundary height in mm (default 80). iterations: Number of spring-embedder iterations (default 300). k_spring: Spring attraction coefficient (default 0.4). k_repel: Coulomb repulsion coefficient (default 80.0).
Returns: JSON string with optimised positions for each component.
Inputs: nets (required), component_positions (required), k_repel, k_spring, +3 more. Returns: result
pcb_bga_fanoutA
Generate a BGA fanout via-placement plan (dog-ear or inline strategy).
Returns per-ball via coordinates and suggested track widths so the agent can call pcb_add_via and pcb_add_track to physically fanout the BGA. Actual pad coordinates must come from the board footprint (use pcb_get_pads).
Args: balls: List of ball dicts with keys: row (str, e.g. "A"), col (int, 1-based), net (str), x_mm (float, ball centre X), y_mm (float, ball centre Y). pitch_mm: Ball pitch in mm (e.g. 0.5, 0.65, 0.8, 1.0). via_drill_mm: Via drill diameter in mm (default 0.2). via_annular_mm: Via annular ring width in mm (default 0.1). escape_layer: Inner copper layer to fan out to (default "In1.Cu"). strategy: "dog_ear" (diagonal escape, most common) or "inline" (horizontal escape, for large pitch).
Returns: JSON string with via placement plan for each ball.
Inputs: balls (required), pitch_mm (required), strategy, escape_layer, +2 more. Returns: result
pcb_block_create_from_selectionB
Capture a reusable PCB design block from selected footprint references.
Inputs: name (required), references (required). Returns: result
pcb_block_listB
List stored PCB design blocks created from selected footprints.
Inputs: no named parameters. Returns: result
pcb_block_placeA
Place a stored PCB design block by cloning its saved footprint blocks.
Inputs: x_mm (required), y_mm (required), block_name (required), rotation_deg. Returns: result
pcb_check_creepage_clearanceC
Run a heuristic creepage clearance review against pad spacing.
Inputs: voltage_v (required), material_group, pollution_degree. Returns: result
pcb_delete_itemsBDestructive
Delete items by UUID.
Inputs: item_ids (required). Returns: result
pcb_export_3d_pdfC
Export the active PCB as a KiCad 10 3D PDF.
Inputs: board_only, output_path. Returns: result
pcb_get_board_as_stringARead-onlyIdempotent
Return the current board as a bounded S-expression string.
Inputs: no named parameters. Returns: result
pcb_get_board_summaryARead-onlyIdempotent
Summarize the current board.
Inputs: no named parameters. Returns: result
pcb_get_design_rulesARead-onlyIdempotent
Read the active board design rules file when available.
Inputs: no named parameters. Returns: result
pcb_get_footprint_layersBRead-onlyIdempotent
List every layer referenced by a footprint block, including inner layers.
Inputs: reference (required). Returns: result
pcb_get_footprintsCRead-onlyIdempotent
List board footprints.
Inputs: page, page_size, filter_layer. Returns: result
pcb_get_impedance_for_traceBRead-onlyIdempotent
Estimate trace impedance for the supplied width on the named stackup layer.
Inputs: width_mm (required), layer_name (required). Returns: result
pcb_get_layersARead-onlyIdempotent
List enabled board layers.
Inputs: no named parameters. Returns: result
pcb_get_netsARead-onlyIdempotent
List all board nets.
Inputs: no named parameters. Returns: result
pcb_get_padsARead-onlyIdempotent
List board pads.
Inputs: no named parameters. Returns: result
pcb_get_ratsnestARead-onlyIdempotent
Report currently unconnected board items using the latest DRC view.
Inputs: no named parameters. Returns: result
pcb_get_selectionARead-onlyIdempotent
List currently selected items in the PCB editor.
Inputs: no named parameters. Returns: result
pcb_get_shapesBRead-onlyIdempotent
List graphical board shapes.
Inputs: no named parameters. Returns: result
pcb_get_stackupARead-onlyIdempotent
Show the current stackup.
Inputs: no named parameters. Returns: result
pcb_get_tracksCRead-onlyIdempotent
List board tracks.
Inputs: page, page_size, filter_net, filter_layer. Returns: result
pcb_get_viasARead-onlyIdempotent
List board vias.
Inputs: no named parameters. Returns: result
pcb_get_zonesARead-onlyIdempotent
List all board copper zones.
Inputs: no named parameters. Returns: result
pcb_group_by_functionC
Cluster existing footprints into named functional groups.
Inputs: groups (required), grid_mm, origin_x_mm, origin_y_mm, +3 more. Returns: result
pcb_highlight_netC
Attempt to highlight a net in the GUI when supported.
Inputs: net_name (required). Returns: result
pcb_move_footprintC
Move a footprint to an absolute location.
Inputs: x_mm (required), y_mm (required), reference (required), rotation_deg. Returns: result
pcb_place_decoupling_capsC
Move capacitor footprints into a tight row near a target IC footprint.
Inputs: ic_ref (required), cap_refs (required), side, grid_mm, +2 more. Returns: result
pcb_placement_quality_gateARead-onlyIdempotent
Evaluate whether footprint placement is overlap-free and inside the board frame.
Inputs: no named parameters. Returns: result
pcb_placement_quality_reportB
Return a structured placement-quality report for capable MCP clients.
Inputs: no named parameters. Returns: Structured placement analysis payload.
pcb_quality_gateBRead-onlyIdempotent
Evaluate whether the PCB is physically clean enough to proceed.
Inputs: no named parameters. Returns: result
pcb_refill_zonesB
Refill all copper zones.
Inputs: no named parameters. Returns: result
pcb_saveA
Save the active board.
Inputs: no named parameters. Returns: result
pcb_score_placementA
Score PCB placement quality and explain both hard failures and softer warnings.
Inputs: no named parameters. Returns: result
pcb_set_board_outlineCDestructive
Draw a rectangular board outline on Edge.Cuts.
Inputs: width_mm (required), height_mm (required), origin_x_mm, origin_y_mm. Returns: result
pcb_set_design_rulesCDestructive
Write board-level manufacturing constraints into the active .kicad_dru file.
Inputs: min_clearance_mm, min_via_drill_mm, min_trace_width_mm, min_annular_ring_mm, +2 more. Returns: result
pcb_set_footprint_layerCDestructive
Set the footprint copper side.
Inputs: layer (required), reference (required). Returns: result
pcb_set_keepout_zoneADestructive
Add a rectangular PCB keepout / rule area to the active board.
Inputs: h_mm (required), w_mm (required), x_mm (required), y_mm (required), +2 more. Returns: result
pcb_set_net_classCDestructive
Assign a net class when the runtime supports it.
Inputs: net_name (required), class_name (required). Returns: result
pcb_set_stackupBDestructive
Set the active board stackup using a file-backed profile.
Inputs: layers (required). Returns: result
pcb_sync_from_schematicA
Sync missing PCB footprints from schematic footprint assignments.
This is a file-based operation intended for initial board bring-up. It adds
missing footprint instances to the .kicad_pcb file using schematic
references, values, rotations, and assigned Library:Footprint names.
When replace_mismatched=True, existing footprints with the same
reference but the wrong footprint name are replaced in place.
Inputs: grid_mm, scale_x, scale_y, origin_x_mm, +4 more. Returns: result
pcb_transfer_quality_gateARead-onlyIdempotent
Evaluate whether named schematic pad nets transferred cleanly onto PCB pads.
Inputs: no named parameters. Returns: result
pdn_calculate_voltage_dropC
Estimate DC voltage drop and trace resistance.
Inputs: current_a (required), trace_width_mm (required), trace_length_mm (required), copper_oz. Returns: result
pdn_check_copper_weightA
Check whether the routed copper for a net looks sufficient for the load current.
Inputs: net_name (required), expected_current_a (required), ambient_temp_c, max_temp_rise_c. Returns: result
pdn_generate_power_planeC
Generate a rectangular copper plane on the requested copper layer.
Inputs: layer (required), net_name (required), clearance_mm. Returns: result
pdn_recommend_decoupling_capsC
Recommend local and bulk decoupling from a simple PDN heuristic.
Inputs: ic_refs (required), vcc_net (required), supply_voltage_v (required), target_ripple_mv. Returns: result
project_auto_fix_loopADestructive
Run the project quality gate and automatically apply server-side fixes.
Each iteration:
Evaluates all project quality gates.
For auto-applicable gates (annotation, zone refill) — calls the underlying fix implementation directly on the server, then re-evaluates.
For gates requiring agent action — returns the tool name and description so the agent can call it, then the agent must call this tool again to continue.
The loop runs up to max_iterations times applying auto-fixes. It
stops early when all gates pass or when no further auto-fix is possible
without agent involvement.
Args: max_iterations: Maximum number of auto-fix + re-evaluate cycles to attempt before returning control to the agent (1–20).
Inputs: max_iterations. Returns: Structured result returned by project_auto_fix_loop.
project_design_reportA
Generate a comprehensive design-status report.
Combines intent summary, v2 spec richness, project gate evaluation, and a prioritised list of next steps into a single structured report. This is the recommended first call after opening a project to understand its current state.
Inputs: no named parameters. Returns: Comprehensive design-status report combining intent, gates, and recommended act…
project_get_design_intentARead-onlyIdempotent
Show the persisted project design intent used by placement and release gates.
Inputs: no named parameters. Returns: result
project_get_design_specARead-onlyIdempotent
Return the resolved project design spec with explicit and inferred fields.
Inputs: no named parameters. Returns: Structured design-spec payload returned to capable MCP clients.
project_get_next_actionBRead-onlyIdempotent
Return the next high-priority action derived from the current project gate.
Inputs: no named parameters. Returns: Structured next-action recommendation derived from the project gate.
project_infer_design_specA
Infer a design spec from the active PCB without writing it to disk.
Inputs: no named parameters. Returns: Structured design-spec payload returned to capable MCP clients.
project_quality_gateARead-onlyIdempotent
Run the full project quality gate across schematic, PCB, DFM, and parity checks.
Inputs: tier, manufacturer. Returns: result
project_quality_gate_reportC
Return the full project gate in structured form for capable MCP clients.
Inputs: tier, manufacturer. Returns: Structured project-quality-gate report.
project_set_design_intentCDestructive
Store high-level design intent used by placement, routing, and release-quality gates.
v1 parameters (all boards): connector_refs, decoupling_pairs, critical_nets, power_tree_refs, analog_refs, digital_refs, sensor_cluster_refs, rf_keepout_regions, manufacturer, manufacturer_tier.
v2 parameters (professional projects): power_rails (list of PowerRailSpec dicts), interfaces (list of InterfaceSpec dicts), mechanical (MechanicalConstraint dict), compliance (list of ComplianceTarget dicts), cost (CostTarget dict), thermal (ThermalEnvelope dict).
Inputs: cost, thermal, compliance, interfaces, +12 more. Returns: result
project_validate_design_specB
Validate the resolved design spec against the active project PCB.
Inputs: no named parameters. Returns: Structured project-spec validation payload.
route_apply_tuning_profileA
Assign a named tuning profile to a net or wildcard net group.
Inputs: net_pattern (required), profile_name (required). Returns: result
route_autoroute_freeroutingBDestructive
Run FreeRouting on a Specctra DSN file and stage the resulting SES session.
Inputs: dsn_path, ses_path, max_passes, use_docker, +3 more. Returns: result
route_create_tuning_profileC
Create or update a KiCad 10-style time-domain tuning profile.
Inputs: name (required), layer (required), trace_impedance_ohm (required), propagation_speed_factor (required). Returns: result
route_differential_pairB
Write differential-pair routing constraints for a pair of nets.
Inputs: net_n (required), net_p (required), layer, gap_mm, +2 more. Returns: result
route_export_dsnC
Stage a Specctra DSN file for FreeRouting.
Inputs: output_path. Returns: result
route_from_pad_to_padC
Create a simple orthogonal route between two pads.
Inputs: pad1 (required), pad2 (required), ref1 (required), ref2 (required), +2 more. Returns: result
route_import_sesA
Stage a Specctra SES file and explain the KiCad import step.
Inputs: ses_path. Returns: result
route_list_tuning_profilesA
List configured time-domain tuning profiles.
Inputs: no named parameters. Returns: result
route_set_net_class_rulesCDestructive
Write net-class routing constraints into the active .kicad_dru file.
Inputs: width_mm (required), net_class (required), clearance_mm (required), via_drill_mm (required), +1 more. Returns: result
route_single_trackC
Route a single straight track segment.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +3 more. Returns: result
route_tune_lengthC
Write a length-tuning rule and report the current delta for a net.
Inputs: net_name (required), target_mm (required), tolerance_mm, meander_amplitude_mm. Returns: result
route_tune_time_domainC
Create a KiCad 10-inspired time-domain tuning rule with a length fallback.
Inputs: net_or_group (required), target_delay_ps (required), layer, tolerance_ps. Returns: result
run_drcBRead-onlyIdempotent
Run PCB design rule checks.
Inputs: save_report. Returns: result
run_ercBRead-onlyIdempotent
Run schematic electrical rule checks.
Inputs: save_report. Returns: result
sch_add_busBDestructive
Add a schematic bus, snapping endpoints to the 2.54 mm grid by default.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +1 more. Returns: result
sch_add_bus_wire_entryADestructive
Add a bus wire entry marker, snapping its anchor to the 2.54 mm grid by default.
Inputs: x_mm (required), y_mm (required), direction, snap_to_grid. Returns: result
sch_add_global_labelCDestructive
Add a global label, preserving the requested shape and rotation.
Inputs: text (required), x_mm (required), y_mm (required), shape, +2 more. Returns: result
sch_add_hierarchical_labelBDestructive
Add a hierarchical label, preserving the requested shape and rotation.
Inputs: text (required), x_mm (required), y_mm (required), shape, +2 more. Returns: result
sch_add_jumperCDestructive
Add a jumper symbol to the schematic.
Inputs: x_mm (required), y_mm (required), pins, snap_to_grid, +1 more. Returns: result
sch_add_labelCDestructive
Add a schematic label, snapping its anchor to the 2.54 mm grid by default.
Inputs: name (required), x_mm (required), y_mm (required), rotation, +1 more. Returns: result
sch_add_no_connectADestructive
Add a no-connect marker, snapping it to the 2.54 mm grid by default.
Inputs: x_mm (required), y_mm (required), snap_to_grid. Returns: result
sch_add_power_symbolBDestructive
Add a power symbol, snapping its anchor to the 2.54 mm grid by default.
Inputs: name (required), x_mm (required), y_mm (required), rotation, +1 more. Returns: result
sch_add_symbolADestructive
Add a schematic symbol at an absolute coordinate.
Coordinates snap to the 2.54 mm schematic grid by default; set snap_to_grid=False only when an exact off-grid coordinate is intentional.
Inputs: x_mm (required), y_mm (required), value (required), library (required), +6 more. Returns: result
sch_add_wireBDestructive
Add a schematic wire, snapping endpoints to the 2.54 mm grid by default.
Inputs: x1_mm (required), x2_mm (required), y1_mm (required), y2_mm (required), +1 more. Returns: result
sch_analyze_net_compilationC
Preview how netlist-aware schematic compilation will resolve endpoints and wires.
Inputs: nets, wires, labels, symbols, +3 more. Returns: result
sch_annotateBDestructive
Renumber schematic references sequentially.
Inputs: order, start_number. Returns: result
sch_auto_place_functionalA
Place schematic symbols into semantically meaningful zones on the sheet.
Unlike the basic sch_auto_place_symbols which uses a plain grid,
this tool categorises each symbol by its function (MCU, connector,
power IC, sensor, passive, protection …) and places it in the
corresponding region of the schematic sheet. The result is a readable,
professionally structured schematic with logical signal flow
(connectors on the left, processing in the centre, power/decoupling at
the bottom).
Zone layout (column × row, each cell = 25.4 × 17.78 mm)::
Col → 0-2 3-5 6-8
Row 0: connectors MCU UI/LED/SW
Row 3: power IC sensors/IC protection
Row 5: power_pass passives transistors/filter
Row 7: test points --- miscThe actual sheet size is read from the schematic file. If the symbol
count would overflow the current sheet, a warning is appended
recommending sch_auto_resize_sheet to switch to a larger format
(A3, A2, …) before re-running this tool.
Symbols already placed (not in symbol_list) are treated as fixed
obstacles and will not be overwritten. Within each zone, symbols are
arranged in a compact row-major sub-grid.
Args: symbol_list: Optional list of reference designators to place. If omitted, all symbols in the schematic are placed.
Returns: A summary showing how many symbols were placed per functional zone, plus an overflow warning if the sheet is too small.
Inputs: symbol_list. Returns: result
sch_auto_place_symbolsA
Auto-place selected references using deterministic cluster, linear, or star layouts.
Unlike the legacy behaviour, this version reads all already-placed symbols
first and avoids placing new symbols on top of them. Fixed/already-placed
symbols that are not in symbol_list are treated as immovable obstacles.
Inputs: strategy, symbol_list. Returns: result
sch_auto_resize_sheetA
Automatically grow the sheet to fit all currently placed symbols.
Reads the bounding box of all placed symbols and selects the smallest standard paper size (A4 → A3 → A2 → A1) that contains them with the configured margin. If the current sheet already fits, reports that no change is needed.
Returns: The chosen paper size and new dimensions, or a message if the current size is already sufficient.
Inputs: no named parameters. Returns: result
sch_build_circuitA
Build (overwrite) the active schematic from structured symbol, wire, and label inputs.
IMPORTANT: This tool replaces the entire schematic content. Any symbols
already placed in the schematic will be lost. To add symbols to an existing
schematic without erasing it use sch_add_symbol / sch_add_wire /
sch_add_label instead.
Coordinates are snapped to the 2.54 mm grid by default. When no coordinates
are provided for a symbol, set auto_layout=True so the placement engine
assigns non-overlapping positions automatically. If nets are also provided
the layout is connection-aware and generates Manhattan wire segments from
symbol pins. Nets that cannot resolve to at least two routable endpoints
raise a clear error instead of silently producing a disconnected schematic.
Recommended workflow:
Call
sch_find_free_placement(count=N)to obtain safe coordinates.Pass those coordinates in the
symbolslist.OR set
auto_layout=Trueand omit coordinates entirely.
Inputs: nets, wires, labels, symbols, +3 more. Returns: result
sch_check_power_flagsB
Check whether common power nets appear to be flagged.
Inputs: no named parameters. Returns: result
sch_create_sheetB
Create a child schematic sheet and add it to the active top-level schematic.
Inputs: name (required), x_mm (required), y_mm (required), filename (required), +1 more. Returns: result
sch_delete_symbolADestructive
Remove a placed symbol and any directly attached wire segments.
Inputs: reference (required). Returns: result
sch_delete_wireADestructive
Remove a specific wire segment using its UUID or unique UUID prefix.
Inputs: wire_id (required). Returns: result
schematic_connectivity_gateB
Evaluate whether schematic structure and hierarchy look electrically meaningful.
Inputs: no named parameters. Returns: result
schematic_quality_gateBRead-onlyIdempotent
Evaluate whether the schematic is clean enough to proceed.
Inputs: no named parameters. Returns: result
sch_find_free_placementA
Find N collision-free placement coordinates for new symbols.
Reads the current schematic, builds an occupancy grid from all existing
symbols, and returns count coordinate pairs that do not overlap with
any placed symbol. Call this before sch_add_symbol to get safe (x, y)
values.
Args: count: Number of free coordinate slots to return (default 1, max 64). cell_width_mm: Grid cell width in mm (default 25.4 — one 10-mil grid unit). cell_height_mm: Grid cell height in mm (default 17.78).
Returns: A list of (x_mm, y_mm) coordinate pairs, one per requested slot.
Inputs: count, cell_width_mm, cell_height_mm. Returns: result
sch_get_bounding_boxesARead-onlyIdempotent
Return the estimated bounding box of every symbol in the active schematic.
Use this before calling sch_add_symbol or sch_build_circuit to understand which areas of the schematic sheet are already occupied. The bounding boxes are heuristic estimates (KiCad does not expose exact extents via the file API) but are conservative enough to avoid overlap in practice.
Returns: A table of all symbols with their centre position and estimated bounding-box corners (x_min, y_min, x_max, y_max) in mm, plus an occupied-area summary.
Inputs: no named parameters. Returns: result
sch_get_connectivity_graphARead-onlyIdempotent
Summarize the active schematic as a textual net connectivity graph.
Inputs: no named parameters. Returns: result
sch_get_labelsARead-onlyIdempotent
List all labels in the schematic.
Inputs: no named parameters. Returns: result
sch_get_net_namesARead-onlyIdempotent
List unique net names derived from labels.
Inputs: no named parameters. Returns: result
sch_get_pin_positionsARead-onlyIdempotent
Calculate absolute pin positions for a given symbol placement.
Inputs: x_mm (required), y_mm (required), library (required), symbol_name (required), +2 more. Returns: result
sch_get_sheet_infoBRead-onlyIdempotent
Return metadata for a specific child sheet.
Inputs: sheet_name (required). Returns: result
sch_get_symbolsARead-onlyIdempotent
List all schematic symbols.
Inputs: no named parameters. Returns: result
sch_get_template_infoARead-onlyIdempotent
Return full details for a subcircuit template.
Args:
template_name: Template name as returned by sch_list_templates()
(e.g. "buck_converter_generic").
Returns: Structured template description including parameters, symbols, nets, and placement hints.
Inputs: template_name (required). Returns: result
sch_get_wiresARead-onlyIdempotent
List all wires in the schematic.
Inputs: no named parameters. Returns: result
sch_instantiate_templateA
Instantiate a subcircuit template — returns a structured action plan.
This tool returns a structured plan describing the symbols, connections, and part-search steps needed to add the subcircuit to the schematic. It does NOT directly edit the schematic (use the plan as a guide for calling sch_add_symbol, sch_add_wire, lib_recommend_part, etc.).
Args:
template_name: Template name (from sch_list_templates()).
prefix: Reference prefix applied to all template refs (e.g. "PWR_"
produces PWR_U1, PWR_L1, etc.).
params: Dict of parameter overrides (e.g. {"vout_v": 5.0}).
Returns: Step-by-step instantiation plan in markdown format.
Inputs: template_name (required), params, prefix. Returns: result
sch_list_sheetsA
List child sheets from the active top-level schematic.
Inputs: no named parameters. Returns: result
sch_list_swappable_pinsA
List candidate pins and units that can participate in a swap workflow.
Inputs: component_ref (required). Returns: result
sch_list_templatesA
List all available reference subcircuit templates.
Templates are pre-wired subcircuit blueprints for common building blocks (buck converter, LDO, USB Type-C, MCU decoupling, Ethernet with magnetics).
Call sch_get_template_info() for full parameter and placement details, then sch_instantiate_template() to add the subcircuit to the schematic.
Inputs: no named parameters. Returns: result
sch_move_symbolA
Move an existing symbol instance to a new absolute coordinate.
Inputs: x_mm (required), y_mm (required), reference (required), snap_to_grid. Returns: result
sch_reloadA
Ask KiCad to reload the active schematic.
Inputs: no named parameters. Returns: result
sch_route_wire_between_pinsA
Route deterministic Manhattan wire segments between two placed symbol pins.
Inputs: pin1 (required), pin2 (required), ref1 (required), ref2 (required), +1 more. Returns: result
sch_set_sheet_sizeADestructive
Change the schematic sheet (paper) size.
Use this when the current sheet is too small to fit all symbols — for
example after sch_auto_place_functional warns that symbols were
placed outside the sheet boundary, or when you receive a screenshot
showing components outside the red sheet border.
Supported sizes (landscape): A4, A3, A2, A1, A0, A (letter), B, C, D, E, USLetter, USLegal.
After resizing you should call sch_auto_place_functional again so
that symbols are re-distributed across the larger sheet.
Args: paper: Target paper size keyword (default "A3").
Returns: Confirmation with old and new dimensions.
Inputs: paper. Returns: result
sch_swap_gatesC
Record a gate-swap back-annotation intent for a multi-unit component.
Inputs: gate_a (required), gate_b (required), component_ref (required). Returns: result
sch_swap_pinsC
Record a pin-swap back-annotation intent for a component.
Inputs: pin_a (required), pin_b (required), component_ref (required). Returns: result
sch_trace_netB
Trace a named net through the active schematic and matching child sheets.
Inputs: net_name (required). Returns: result
sch_update_propertiesCDestructive
Update a property on a placed symbol.
Inputs: field (required), value (required), reference (required). Returns: result
si_bind_interfaces_to_net_classesA
Map interface specs from the project design intent to KiCad net classes.
For each interface with an impedance target, this tool generates the
pcb_set_net_class() calls needed to enforce clearance and diff-pair rules.
When dry_run=True (default), only returns the plan without executing it.
Args: interfaces: List of InterfaceSpec dicts from project_get_design_spec(). dry_run: If True, return the mapping plan without modifying the project. Set to False to have the tool call pcb_set_net_class() for each class.
Returns: Net class plan or confirmation of changes applied.
Inputs: interfaces (required), dry_run. Returns: result
si_calculate_decoupling_placementC
Estimate decoupling placement quality around an IC power pin.
Inputs: ic_ref (required), power_pin (required), target_freq_mhz (required). Returns: result
si_calculate_trace_impedanceC
Estimate PCB trace impedance using quasi-static interconnect formulas.
Inputs: width_mm (required), height_mm (required), er, copper_oz, +2 more. Returns: result
si_calculate_trace_width_for_impedanceC
Solve for a trace width that meets the requested impedance target.
Inputs: height_mm (required), target_ohm (required), er, copper_oz, +2 more. Returns: result
si_check_differential_pair_skewB
Estimate differential-pair length skew and delay mismatch from board tracks.
Inputs: net_n (required), net_p (required), er, trace_type. Returns: result
si_check_via_stubB
Estimate via-stub resonance and risk for selected vias on the active board.
Inputs: frequency_ghz (required), er, via_positions. Returns: result
si_generate_stackupC
Generate a practical board stackup recommendation and target trace geometry.
Inputs: er, copper_oz, layer_count, manufacturer, +1 more. Returns: result
si_list_dielectric_materialsA
List all built-in dielectric materials with Er, loss tangent, and frequency range.
Use the returned material keys with si_synthesize_stackup_for_interfaces() to select the appropriate laminate for your design.
Inputs: no named parameters. Returns: result
sim_add_spice_directiveADestructive
Persist a SPICE directive used by future MCP simulation runs.
Inputs: directive (required). Returns: result
sim_check_stabilityB
Estimate loop crossover and phase margin from an AC sweep.
Inputs: output_net (required), feedback_net (required), netlist_path, stop_freq_hz, +2 more. Returns: result
sim_run_ac_analysisB
Run a small-signal AC sweep.
Inputs: stop_freq_hz (required), start_freq_hz (required), probe_nets, netlist_path, +1 more. Returns: result
sim_run_dc_sweepC
Run a DC sweep for an independent source.
Inputs: step_v (required), stop_v (required), start_v (required), source_ref (required), +2 more. Returns: result
sim_run_operating_pointC
Run a DC operating-point analysis.
Inputs: probe_nets, netlist_path. Returns: result
sim_run_transientC
Run a transient time-domain simulation.
Inputs: step_time_s (required), stop_time_s (required), probe_nets, netlist_path. Returns: result
si_synthesize_stackup_for_interfacesA
Synthesise a PCB stackup that meets the impedance requirements of the given interfaces.
Analyses each InterfaceSpec dict and recommends:
Layer count
Dielectric material
Copper weight per layer
Outer dielectric thickness for target impedance
Net class settings (impedance, clearance, diff-pair gap)
Args:
interfaces: List of InterfaceSpec dicts (matching project_set_design_intent
interface format). Each must have at least kind and optionally
impedance_target_ohm, differential, diff_skew_max_ps.
cost_tier: "standard" (FR4), "midloss" (FR4 mid/low-loss),
"highspeed" (Rogers/Megtron). Overrides material selection.
board_thickness_mm: Target board thickness in mm (1.0, 1.6, 2.0, 3.2).
Returns: Recommended stackup specification and net class table in human-readable markdown, ready to pass to pcb_set_stackup() and pcb_set_net_class().
Inputs: interfaces (required), cost_tier, board_thickness_mm. Returns: result
si_validate_length_matchingC
Validate that each net group is matched within the supplied tolerance.
Inputs: net_groups (required), tolerance_mm. Returns: result
studio_push_contextC
Update the active IDE context pushed by KiCad Studio.
Inputs: file_type (required), drc_errors (required), active_file (required), selected_net, +2 more. Returns: result
thermal_calculate_via_countC
Estimate how many stitched thermal vias are needed for the target resistance.
Inputs: power_w (required), via_diameter_mm, thermal_resistance_target. Returns: result
thermal_check_copper_pourC
Check whether the board already has copper pour support for the net.
Inputs: net_name (required), expected_power_w (required), preferred_layer. Returns: result
tune_diff_pair_lengthA
Write matched-length rules for both nets in a differential pair.
Inputs: net_name_n (required), net_name_p (required), target_length_mm (required). Returns: result
tune_track_lengthD
Backward-compatible alias for route_tune_length().
Inputs: net_name (required), target_length_mm (required). Returns: result
validate_designARead-onlyIdempotent
Run DRC and ERC and summarize readiness.
Inputs: no named parameters. Returns: result
validate_footprints_vs_schematicARead-onlyIdempotent
Compare PCB footprint references against the schematic symbol references.
Inputs: no named parameters. Returns: result
variant_createA
Create a new design variant, optionally cloning an existing variant.
Inputs: name (required), base_variant. Returns: result
variant_diff_bomB
Diff the effective BOM between two design variants.
Inputs: variant_a (required), variant_b (required). Returns: result
variant_export_bomB
Export a variant-specific BOM into the project output directory.
Inputs: variant (required), format. Returns: result
variant_listA
List available design variants and basic component counts.
Inputs: no named parameters. Returns: result
variant_set_activeCDestructive
Set the active design variant for the current project.
Inputs: name (required). Returns: result
variant_set_component_overrideADestructive
Override component population, value, or footprint in a variant.
Inputs: enabled (required), variant (required), reference (required), value, +1 more. Returns: result
vcs_commit_checkpointADestructive
Commit the current project state as a named checkpoint.
Inputs: message (required), auto_drc. Returns: result
vcs_diff_with_checkpointA
Show the current project diff versus a checkpoint commit.
Inputs: commit_hash (required). Returns: result
vcs_init_gitA
Initialize a Git repository for the KiCad project directory.
Inputs: project_dir (required). Returns: result
vcs_list_checkpointsA
List checkpoint commits created by the MCP tool.
Inputs: no named parameters. Returns: result
vcs_restore_checkpointBDestructive
Restore project files from a previous checkpoint commit.
Inputs: commit_hash (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 241 tools
Most tools have clear category prefixes and distinct purposes, but there are deliberate aliases (pcb_add_zone/pcb_add_copper_zone, export_3d_step/export_step, route_tune_length/tune_track_length) and overlapping clusters around routing, auto-placement, part search, and quality gates. Descriptions help, but at 241 tools misselection becomes likely.
Tool names generally follow a predictable category_verb_noun snake_case pattern, such as pcb_get_*, sch_add_*, export_*, and vcs_*. Minor deviations like run_drc, get_board_stats, and a few backward-compatible aliases prevent a perfect score, but the overall style is consistent.
241 tools is an extreme count for a single MCP server, even for a broad EDA workflow. It creates a heavy selection burden on agents and should likely be split into category-focused servers.
The server covers the full design lifecycle: project creation, schematic entry, libraries, PCB layout, routing, SI/EMC/PDN, simulation, quality gates, exports, manufacturing, and VCS. Minor gaps exist around generic schematic deletion/update operations, such as removing labels or sheets, but agents can generally work around them.
Related MCP Connectors
Design, route, check, review and export manufacturable PCBs from plain language; KiCad import.
Autonomous 0-DRC PCB Routing, RF/DFM Pre-Flight & KiCad MCP Server (calligraphyeda.com).
Design circuits, simulate and verify embedded firmware, and lay out PCBs with AI agents.
EasyGerber brings AI printed circuit board (PCB) design, layout, and routing to MCP-compatible assistants. Describe a circuit or start from firmware pin assignments, search published electronic components, and build schematics using catalog parts with their footprints and available 3D models. Create and revise boards, generate layouts with automatic component placement and routing, inspect previews, and check saved layouts for blocking design issues. Export manufacturing ZIPs containing Gerber and drill files, a bill of materials, and component placement data, or download an editable EasyGerber (.egb) file. Start without signing up. Your agent uses one private board reference to create and continue a board, including catalog access, edits, layout, checks, previews, and exports, without a separate guest setup step or token to manage. To keep the board in your account or work with permitted saved personal or organization boards, complete EasyGerber sign-in and OAuth consent, then resume the same task. Account permissions, plan limits, and generation billing apply; support depends on your MCP client and installed integration.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceKiCAD MCP is a Model Context Protocol (MCP) implementation that enables Large Language Models (LLMs) like Claude to directly interact with KiCAD for printed circuit board design.61 npm3,328MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with KiCAD for PCB design automation.61 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.61 npm3MIT
- AlicenseNot gradedqualityBmaintenanceKiCad MCP Pro is an MCP server for KiCad EDA workflows. It lets AI agents automate schematic and PCB tasks, ERC/DRC validation, DFM review, and manufacturing export.10,388 PyPI213MIT