Create boards, place footprints and route traces in KiCad from an assistant.
- Started in our test
- ★ 3K GitHub stars
- Last commit 26 Oct 2026
At a glance
This server drives KiCad's Python API so an assistant can work on a PCB: create a project, set the board outline, place and move footprints, add tracks and vias, and run design-rule checks.
It runs from a clone of the GitHub repository rather than a published package, and it needs the Python that ships with KiCad.
- Made by
- mixelpixx and community contributors
- GitHub stars
- 3K
- Last commit
- 26 Oct 2026
- Tools
- 244
- Runs on
- Your computer
Our check: We ran this exact config on 26 Oct 2026: it started and answered with 244 tools. The npm package called "kicad-mcp" comes from a different repository (iengphogit/kicad-mcp). This project runs from its own source.
What's in the pod: its tools
KiCad MCP groups its tools like this, and which ones load depends on how you set it up.
Schematic- Place symbols from about 10,000 in the libraries, wire them up, label nets, build hierarchical sheets and check connections.
Board and components- Set the board outline and layers, place and move footprints, and lay out zones.
Routing- Draw tracks and vias by hand, or hand the board to the Freerouting autorouter.
Design rules and checks- Set clearances and run DRC so problems surface before you order.
Export- Gerbers, drill files, bill of materials, pick and place, PDFs, SVGs and 3D models for manufacture.
Parts- Search JLCPCB's catalogue of over 2.5 million parts with price and stock, and pull datasheets from LCSC.
Library creation- Make custom footprints and symbols when a part is missing.
Discovery- search_tools and the toolbox commands let the agent find and open tool groups as it needs them.
We found 244 tools when we started it on 26 Oct 2026. 70 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
How we tested it: Cloned and built from GitHub (v2.8.3) and started with the Python from KiCad 7 on Linux. The project asks for KiCad 9.
Show all 244 tools
Runs commands4 tools · Can start programs or run code.
kicad_run_action_pluginkicad_run_drcrun_drcrun_erc
Changes things170 tools · Can create, edit, send or delete.
add_board_outlineadd_board_textadd_component_3d_modeladd_component_annotationadd_copper_pouradd_footprint_3d_modeladd_gnd_stitching_viasadd_hierarchical_sheetadd_layeradd_library_symbol_propertyadd_mounting_holeadd_netadd_no_connectadd_schematic_componentadd_schematic_hierarchical_labeladd_schematic_net_labeladd_schematic_textadd_schematic_wireadd_sheet_pinadd_symbol_propertyadd_viaadd_zonealign_componentsannotate_schematicassign_net_to_classautoplace_schematic_fieldsautoroutebackannotate_footprintsbatch_add_and_connectbatch_add_componentsbatch_add_no_connectsbatch_connectbatch_edit_schematic_componentsbatch_list_symbol_pinsbatch_move_componentsbatch_set_schematic_property_positionsclear_board_outlineclose_projectconnect_passthroughconnect_to_netcopy_routing_patterncreate_board_from_schematiccreate_footprintcreate_hierarchical_subsheetcreate_netclasscreate_projectcreate_schematiccreate_symboldelete_componentdelete_graphicdelete_schematic_componentdelete_schematic_net_labeldelete_schematic_wiredelete_symboldelete_tracedigikey_check_library_availabilitydigikey_search_partsdigikey_test_connectiondiscard_or_reloadduplicate_componentedit_componentedit_footprint_padedit_schematic_componentenrich_datasheetsestimate_airwire_lengthsexport_3dexport_3d_cliexport_bomexport_drillexport_dsnexport_gencadexport_gerberexport_gerber_singleexport_gerbersexport_ipc2581export_ipcd356export_netlistexport_odbexport_pcb_dxfexport_pcb_pdfexport_pcb_svgexport_pdfexport_posexport_position_fileexport_sch_bomexport_sch_dxfexport_sch_hpglexport_sch_pdfexport_sch_psexport_sch_python_bomexport_sch_svgexport_schematic_pdfexport_schematic_svgexport_svgexport_symbolexport_vrmlgenerate_netlistgroup_componentshierarchical_placeimport_3d_modelimport_eagle_projectimport_pcbimport_sesimport_svg_logoimport_symbolinstall_gui_driveris_dirtykicad_gui_clickkicad_gui_click_atspikicad_gui_screenshotkicad_gui_treekicad_gui_tree_atspikicad_gui_wait_forkicad_pcb_snapshotkicad_reload_and_open_pluginlaunch_kicad_uilint_offgridlint_schematic_cosmeticmodify_tracemove_componentmove_footprint_textmove_schematic_componentmove_schematic_net_labelopen_boardopen_projectplace_componentplace_component_arrayrefill_zonesregister_footprint_libraryregister_symbol_libraryreload_boardremove_hierarchical_sheetremove_library_table_entryremove_schematic_component_propertyrename_symbolrepair_flat_symbolsreplace_board_outlinereplace_componentreplace_instance_lib_idsreplace_schematic_componentrotate_componentrotate_schematic_componentroute_arc_traceroute_differential_pairroute_pad_to_padroute_tracesave_assave_boardsave_projectset_active_layerset_board_originset_board_sizeset_design_rulesset_footprint_typeset_layer_constraintsset_library_table_uriset_net_colorset_schematic_component_propertyset_schematic_property_positionset_sheet_propertyset_symbol_pin_typesnap_to_gridsuggest_jlcpcb_alternativessuggest_placementsuggest_schematic_decluttersync_schematic_to_boardupdate_graphicupdate_symbol_from_libraryvalidate_schematicvalidate_symbol_library
Only reads70 tools · Looks things up and changes nothing.
check_clearancecheck_courtyard_overlapscheck_freeroutingcheck_kicad_uicheck_placement_clearancedownload_jlcpcb_databasedownload_registry_partfind_componentfind_duplicate_symbolsfind_orphaned_wiresfind_overlapping_elementsfind_wires_crossing_symbolsget_backend_stateget_board_2d_viewget_board_extentsget_board_infoget_board_originget_category_toolsget_component_geometryget_component_listget_component_padsget_component_propertiesget_datasheet_urlget_design_rulesget_drc_violationsget_elements_in_regionget_footprint_infoget_jlcpcb_database_statsget_jlcpcb_partget_layer_listget_net_at_pointget_net_connectionsget_net_padsget_nets_listget_pad_positionget_padsget_project_infoget_ratsnestget_registry_partget_schematic_componentget_schematic_pin_locationsget_schematic_viewget_schematic_view_regionget_sheet_propertiesget_symbol_infoget_wire_connectionslist_floating_labelslist_footprint_librarieslist_graphicslist_librarieslist_library_footprintslist_library_symbolslist_library_tablelist_schematic_componentslist_schematic_labelslist_schematic_netslist_schematic_textslist_schematic_wireslist_symbol_librarieslist_symbol_pinslist_symbols_in_librarylist_tool_categoriesquery_tracesquery_zonessearch_footprintssearch_jlcpcb_partssearch_parts_registrysearch_symbolssearch_toolssnapshot_project
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
- git clone https://github.com/mixelpixx/KiCAD-MCP-Server and cd into it.
- npm install, then npm run build.
- Point your client at the built entry point, as in the config below, with your own path.
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"kicad": {
"command": "node",
"args": [
"/path/to/KiCAD-MCP-Server/dist/index.js"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json kicad '{"command":"node","args":["/path/to/KiCAD-MCP-Server/dist/index.js"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"kicad": {
"command": "node",
"args": [
"/path/to/KiCAD-MCP-Server/dist/index.js"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"kicad": {
"type": "stdio",
"command": "node",
"args": [
"/path/to/KiCAD-MCP-Server/dist/index.js"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"kicad": {
"command": "node",
"args": [
"/path/to/KiCAD-MCP-Server/dist/index.js"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
PYTHONPATHEnvironment variable · required | Where KiCad's Python module lives, so the server can load pcbnew. The path differs by platform./usr/lib/kicad/lib/python3/dist-packages |
KICAD_MCP_TOOLBOXESEnvironment variable | Set to core to start with 37 tools instead of about 250, or name groups such as schematic,drc to open them from the start.core |
LOG_LEVELEnvironment variable | How much the server logs.info |
Enable IPC API ServerConfig | KiCad setting under Preferences, Plugins. Switch it on and edits show up in the open KiCad window straight away. |
What it can touch
It can read
- KiCad projects, schematics and boards on your computer
- JLCPCB and LCSC part data online, if you use those tools
It can change
- Edits schematic and board files
- Writes manufacturing exports and new library parts
- Can download a local copy of the JLCPCB catalogue
Safer setup: Keep the project in git and commit before each session, so a bad edit is one checkout away from undone.
Before you start
- KiCad 9 with its bundled Python
- Node.js 18 or newer
- git
If it does not work
- No module named 'pcbnew'
- PYTHONPATH does not point at KiCad's Python folder. Check KiCad 9 or later is installed with Python support and copy the path for your platform.
- The server does not show up in the client
- It runs from a cloned and built copy. Check dist/index.js exists, use absolute paths in the config, and restart the client fully.
- Too many tools for the client
- Set KICAD_MCP_TOOLBOXES=core. Claude Desktop only reads the tool list at start-up, so name any groups you need there.
- Board tools fail with vague errors
- Open a project first and use absolute paths. Logs are in ~/.kicad-mcp/logs.
Peas in a pod: similar servers
How KiCad MCP lines up against other design, 3d and games servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| KiCad MCP | 244 | Your computer | – | 3K |
| MiniMax | 8 | Your computer | MIT | 1.6K |
| Blender MCP | 9 | Your computer | MIT | 32.4K |
| Framelink Figma MCP | 2 | Your computer | MIT | 16.1K |
| Talk to Figma | 40 | Your computer | – | 7.1K |
Questions
Which KiCad version is needed?
KiCad 9.0 or later, including KiCad 10, with Node.js 18 or later for the server.
Is there a newer version?
The same author is building Konnect, a Rust rewrite as a native KiCad 10 plugin under AGPL-3.0. This MIT-licensed server stays maintained.
Can it order boards for me?
No. It prepares Gerbers, BOM and placement files and finds JLCPCB parts, but ordering stays with you.
Does it work on macOS?
Yes, though Linux is the main tested platform. Windows has an automated setup script.
Something wrong on this page? Tell us.