KiCad Tools MCP server
io.github.ProductOfAmerica/mcp-server-kicad·v0.21.1·16 starsByte-preserving KiCad automation: 100+ tools for schematics, PCB layout, ERC, DRC, exports
16 stars437 downloads/wk
Reviews
Write oneNobody has reviewed KiCad Tools yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
KiCad Tools tools (100, 24 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_copper_zonewrite actionCreate an unfilled copper zone: a ground plane, power plane, or any filled copper pour. Call fill_zones afterward to compute the fills.
add_global_labelAdd a global net label (visible across all sheets).
add_hierarchical_labelAdd a hierarchical label to a sub-sheet schematic.
add_hierarchical_sheetAdd a hierarchical sheet to a parent schematic with matching labels in the child.
add_junctionsAdd multiple junctions, as KiCad's junction tool places them. Each point dict has keys: x, y.
add_keepout_zonewrite actionCreate a keep-out zone that restricts placement of specified items.
add_labelAdd a net label at a position.
add_lib_symbolLoad a symbol definition from a .kicad_sym library into the schematic.
add_pcb_lineAdd a graphic line to the PCB (edge cuts, silkscreen, etc.).
add_pcb_textAdd text to the PCB (silkscreen, fab layer, etc.).
add_power_symbolPlace a power symbol (VCC, GND, +3V3, etc.).
add_sheet_pinAdd a pin to an existing hierarchical sheet block.
add_textAdd a text annotation to the schematic.
add_thermal_viasAdd a grid of thermal vias under a footprint pad.
add_traceAdd a trace segment between two points.
add_viaAdd a via at a position.
add_wiresAdd multiple wires at once, as KiCad's wire tool adds them. Each wire dict has keys: x1, y1, x2, y2.
annotate_schematicAuto-assign reference designators to unannotated components.
auto_place_decoupling_capPlace a decoupling capacitor and wire it to power/ground nets.
autoroute_pcbAutoroute PCB traces using the Freerouting autorouter.
check_placementCheck if placing/moving a footprint to (x, y) would violate constraints.
connect_pinsConnect two component pins with Manhattan (L-shaped) wire routing.
create_projectwrite actionCreate a KiCad 9 project (.kicad_pro + root .kicad_sch).
create_schematicwrite actionCreate a valid empty KiCad 9 schematic file.
create_sym_lib_tablewrite actionCreate a sym-lib-table file in the given directory.
create_symbol_librarywrite actionCreate a valid empty KiCad 9 symbol library.
duplicate_sheetDuplicate a hierarchical sheet, copying the child file with new UUIDs.
export_3dExport PCB 3D model or render 3D view to image.
export_footprint_svgExport footprint to SVG.
export_gerbersExport Gerber files for manufacturing.
export_hierarchical_netlistExport a netlist from the root schematic, including hierarchy info.
export_ipc2581Export PCB in IPC-2581 format for manufacturing data exchange.
export_pcbExport PCB to PDF, SVG, or DXF format.
export_positionsExport component position file (pick and place) as CSV, in millimetres (mm).
fill_zonesFill all copper zones on the board using pcbnew's zone filler.
flatten_hierarchyFlatten a hierarchical schematic into a single sheet whose netlist is the hierarchy's.
get_board_infoGet board summary: footprint count, trace count, net count, thickness. The net count includes the unconnected net, as KiCad's own count does.
get_footprint_boundsGet the board-coordinate bounding box of a placed footprint.
get_footprint_infoGet pad and outline details for a footprint .kicad_mod file.
get_footprint_padsGet pad info for a placed footprint on the PCB.
get_net_connectionsFind all component pins connected to a net label.
get_pin_positionsGet absolute pin positions for a placed component (accounts for rotation/mirror).
get_schematic_summaryGet schematic page info and item counts.
get_sheet_infoGet detailed info about a hierarchical sheet including pin/label matching.
get_symbol_instancesList all symbol instances from a root schematic's symbolInstances table.
get_symbol_pinsGet pin info for a symbol in the schematic's lib_symbols.
get_versionGet KiCad version information including build details and library versions.
is_root_schematicCheck if a schematic is the root or a sub-sheet.
list_cross_sheet_netsList all nets that cross sheet boundaries (hierarchical pins and global labels).
list_hierarchyList the full sheet hierarchy starting from a root schematic.
list_lib_footprintsList all footprints in a .pretty library directory.
list_pcb_footprintsList all footprints on the PCB.
list_pcb_graphic_itemsList all graphic items (lines, text, etc.) on the PCB.
list_pcb_layersList all layers defined in the PCB stackup: copper, silkscreen, soldermask, solder paste, courtyard, fabrication, and the board outline.
list_pcb_netsList all named nets on the PCB.
list_pcb_tracesList all trace segments and vias on the PCB.
list_pcb_zonesList all zones (copper and keepout) on the PCB.
list_schematic_bus_entriesList all bus entries in the schematic.
list_schematic_componentsList all placed components in the schematic.
list_schematic_global_labelsList all global labels in the schematic.
list_schematic_hierarchical_labelsList all hierarchical labels in the schematic.
list_schematic_junctionsList all junctions in the schematic.
list_schematic_labelsList all net labels in the schematic.
list_schematic_no_connectsList all no-connect flags in the schematic.
list_schematic_sheetsList all hierarchical sheets in the schematic.
list_schematic_wiresList all wire segments in the schematic.
list_unconnected_pinsList unconnected pins by running ERC and filtering results.
modify_hierarchical_labelModify an existing hierarchical label.
modify_hierarchical_sheetModify properties of an existing hierarchical sheet block.
move_componentMove a placed component, turn it, or both.
move_footprintmove_hierarchical_sheetMove a hierarchical sheet block to a new position, including all pins.
no_connect_pinPlace a no-connect flag on a component pin.
place_componentPlace a schematic symbol: resistor, capacitor, inductor, diode, LED, transistor, crystal, switch, connector, or an IC such as a microcontroller or regulator chip. Any lib_id in a library works.
place_footprintremove_componentwrite actionRemove a component by reference designator.
remove_dangling_trackswrite actionDetect and remove trace segments with unconnected endpoints.
remove_footprintwrite actionRemove a footprint by reference designator.
remove_hierarchical_labelwrite actionRemove a hierarchical label by name or UUID.
remove_hierarchical_sheetwrite actionRemove a hierarchical sheet block from a parent schematic.
remove_junctionwrite actionRemove a junction at the given coordinates, as KiCad's delete removes one.
remove_labelwrite actionRemove net label(s) or global label(s) by text, optionally filtered by position.
remove_no_connectwrite actionRemove no-connect flag(s) from a component pin.
remove_sheet_pinwrite actionRemove a pin from a hierarchical sheet block.
remove_textwrite actionRemove text annotation(s) by content, optionally filtered by position.
remove_traceswrite actionRemove trace segments matching the given filters. Does not remove vias. At least one filter (net_name, layer, or bounding box) is required.
remove_wirewrite actionRemove a wire segment by its endpoint coordinates.
reorder_sheet_pageswrite actionPut hierarchical sheets in the page order given: sheets listed come first, in that order, then the others in the order they have now.
run_drcwrite actionRun Design Rules Check (DRC) on a PCB.
run_jobsetwrite actionRun a KiCad jobset file: every output it defines.
set_component_propertySet any property on a placed component, or rename it. Creates the property if it is missing.
set_net_classwrite actionCreate or update a net class with design rules and assign nets.
set_page_sizeSet the schematic page/sheet size.
set_trace_widthChange the width of existing traces matching the given filters. At least one filter (net_name, layer, or bounding box) is required.
trace_hierarchical_netTrace a net across the hierarchy, following hierarchical pins and labels.
update_pcb_from_schematicwrite actionupgrade_footprint_libUpgrade a footprint library to current KiCad format.
validate_boardValidate all footprint placements against keep-out zones and board edge.
validate_hierarchywire_pins_to_netwrite actionPut each listed pin on the net named label_text, or refuse and write nothing.
Public scan report
scanner v0.1.10 · 2026-11-03 · same rubric, same numbers if you re-run it
- Code scan26 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 5 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How KiCad Tools compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 100
- the typical server has 7
- Tools that change things
- 24%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 16
- more than 90% of 28,688 servers
- Downloads a week
- 437
- more than 86% of 12,191 servers with a package
What its tools let an agent do: 53 read · 21 create · 12 change · 12 delete · 2 run or deploy
Release history: 3 versions in the registry since 2026-08-15, latest 2026-10-20, typically one every 61 days.
Install KiCad Tools in Claude Code, Cursor or VS Code
claude mcp add mcp-server-kicad -- uvx mcp-server-kicad
What the publisher says
From the KiCad Tools repository's README, as published. We do not edit it. Read it on GitHub
<!-- mcp-name: io.github.ProductOfAmerica/mcp-server-kicad -->
mcp-server-kicad
Let an AI assistant edit real KiCad projects without corrupting them.
109 MCP tools covering schematic capture, PCB layout, symbol and footprint libraries, ERC and DRC, and manufacturing exports. No screenshots, no copy-paste, no hand-edited s-expressions: the model calls tools, KiCad files change on disk.
Quick start • What you get • Configuration • Tool reference • Requirements • Contributing
What it looks like
"Add a 100 nF decoupling cap on U1's VCC pin, then check ERC."
get_pin_positions locate U1's VCC and GND pins
auto_place_decoupling_cap place C3, wire it, drop the junctions
run_erc report what the change broke
"Now push the netlist to the board and route it."
update_pcb_from_schematic sync footprints and pad nets onto the PCB
autoroute_pcb route with Freerouting
run_drc clearance, width, and unconnected checksEvery tool works on the real file. Writes go through a byte-preserving substrate, so bytes you did not ask to change reach the disk unchanged, and an edit that cannot be done correctly is refused with the file intact. That now covers every board and schematic this server writes. The two library upgrades are the only tools that let KiCad do the writing, and they say so on themselves.
Quick start
Claude Code
Install the plugin. It wires up the server and ships the design skills with it:
claude plugin marketplace add ProductOfAmerica/mcp-server-kicad
claude plugin install kicadClaude Desktop
Download kicad-.mcpb from the [latest release][latest] and install it from Settings, then Extensions. Claude Desktop fetches Python and the package itself, so KiCad is the only thing you need installed first.
Fill in the schematic, board, and export paths it asks for. Unlike the Claude Code plugin, Desktop does not run from your project directory, so nothing is auto-detected. Leave the kicad-cli field blank unless KiCad lives somewhere unusual; stock installs are found on their own, on every platform. The design skills are Claude Code only.
[latest]: https://github.com/ProductOfAmerica/mcp-server-kicad/releases/latest
Everything else
pip install mcp-server-kicadThen point your MCP client at the unified server and set cwd to a KiCad project directory so paths resolve themselves:
{
"mcpServers": {
"kicad": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad"],
"cwd": "/path/to/your/kicad/project"
}
}
}That single entry registers all 109 tools. Prefer to split them across five smaller servers? See Configuration.
What you get
Five tool servers
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
KiCad Tools: common questions
- Is KiCad Tools MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the KiCad Tools safety report
- How do I install KiCad Tools?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does KiCad Tools need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is KiCad Tools maintained?
- The last commit was 6 days ago (2026-10-29). The latest release is v0.21.1.
- How does KiCad Tools compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 100 (the typical server has 7); tools that change things 24% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.