Skip to content
MCP Shelf

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_plugin
  • kicad_run_drc
  • run_drc
  • run_erc

Changes things170 tools · Can create, edit, send or delete.

  • add_board_outline
  • add_board_text
  • add_component_3d_model
  • add_component_annotation
  • add_copper_pour
  • add_footprint_3d_model
  • add_gnd_stitching_vias
  • add_hierarchical_sheet
  • add_layer
  • add_library_symbol_property
  • add_mounting_hole
  • add_net
  • add_no_connect
  • add_schematic_component
  • add_schematic_hierarchical_label
  • add_schematic_net_label
  • add_schematic_text
  • add_schematic_wire
  • add_sheet_pin
  • add_symbol_property
  • add_via
  • add_zone
  • align_components
  • annotate_schematic
  • assign_net_to_class
  • autoplace_schematic_fields
  • autoroute
  • backannotate_footprints
  • batch_add_and_connect
  • batch_add_components
  • batch_add_no_connects
  • batch_connect
  • batch_edit_schematic_components
  • batch_list_symbol_pins
  • batch_move_components
  • batch_set_schematic_property_positions
  • clear_board_outline
  • close_project
  • connect_passthrough
  • connect_to_net
  • copy_routing_pattern
  • create_board_from_schematic
  • create_footprint
  • create_hierarchical_subsheet
  • create_netclass
  • create_project
  • create_schematic
  • create_symbol
  • delete_component
  • delete_graphic
  • delete_schematic_component
  • delete_schematic_net_label
  • delete_schematic_wire
  • delete_symbol
  • delete_trace
  • digikey_check_library_availability
  • digikey_search_parts
  • digikey_test_connection
  • discard_or_reload
  • duplicate_component
  • edit_component
  • edit_footprint_pad
  • edit_schematic_component
  • enrich_datasheets
  • estimate_airwire_lengths
  • export_3d
  • export_3d_cli
  • export_bom
  • export_drill
  • export_dsn
  • export_gencad
  • export_gerber
  • export_gerber_single
  • export_gerbers
  • export_ipc2581
  • export_ipcd356
  • export_netlist
  • export_odb
  • export_pcb_dxf
  • export_pcb_pdf
  • export_pcb_svg
  • export_pdf
  • export_pos
  • export_position_file
  • export_sch_bom
  • export_sch_dxf
  • export_sch_hpgl
  • export_sch_pdf
  • export_sch_ps
  • export_sch_python_bom
  • export_sch_svg
  • export_schematic_pdf
  • export_schematic_svg
  • export_svg
  • export_symbol
  • export_vrml
  • generate_netlist
  • group_components
  • hierarchical_place
  • import_3d_model
  • import_eagle_project
  • import_pcb
  • import_ses
  • import_svg_logo
  • import_symbol
  • install_gui_driver
  • is_dirty
  • kicad_gui_click
  • kicad_gui_click_atspi
  • kicad_gui_screenshot
  • kicad_gui_tree
  • kicad_gui_tree_atspi
  • kicad_gui_wait_for
  • kicad_pcb_snapshot
  • kicad_reload_and_open_plugin
  • launch_kicad_ui
  • lint_offgrid
  • lint_schematic_cosmetic
  • modify_trace
  • move_component
  • move_footprint_text
  • move_schematic_component
  • move_schematic_net_label
  • open_board
  • open_project
  • place_component
  • place_component_array
  • refill_zones
  • register_footprint_library
  • register_symbol_library
  • reload_board
  • remove_hierarchical_sheet
  • remove_library_table_entry
  • remove_schematic_component_property
  • rename_symbol
  • repair_flat_symbols
  • replace_board_outline
  • replace_component
  • replace_instance_lib_ids
  • replace_schematic_component
  • rotate_component
  • rotate_schematic_component
  • route_arc_trace
  • route_differential_pair
  • route_pad_to_pad
  • route_trace
  • save_as
  • save_board
  • save_project
  • set_active_layer
  • set_board_origin
  • set_board_size
  • set_design_rules
  • set_footprint_type
  • set_layer_constraints
  • set_library_table_uri
  • set_net_color
  • set_schematic_component_property
  • set_schematic_property_position
  • set_sheet_property
  • set_symbol_pin_type
  • snap_to_grid
  • suggest_jlcpcb_alternatives
  • suggest_placement
  • suggest_schematic_declutter
  • sync_schematic_to_board
  • update_graphic
  • update_symbol_from_library
  • validate_schematic
  • validate_symbol_library

Only reads70 tools · Looks things up and changes nothing.

  • check_clearance
  • check_courtyard_overlaps
  • check_freerouting
  • check_kicad_ui
  • check_placement_clearance
  • download_jlcpcb_database
  • download_registry_part
  • find_component
  • find_duplicate_symbols
  • find_orphaned_wires
  • find_overlapping_elements
  • find_wires_crossing_symbols
  • get_backend_state
  • get_board_2d_view
  • get_board_extents
  • get_board_info
  • get_board_origin
  • get_category_tools
  • get_component_geometry
  • get_component_list
  • get_component_pads
  • get_component_properties
  • get_datasheet_url
  • get_design_rules
  • get_drc_violations
  • get_elements_in_region
  • get_footprint_info
  • get_jlcpcb_database_stats
  • get_jlcpcb_part
  • get_layer_list
  • get_net_at_point
  • get_net_connections
  • get_net_pads
  • get_nets_list
  • get_pad_position
  • get_pads
  • get_project_info
  • get_ratsnest
  • get_registry_part
  • get_schematic_component
  • get_schematic_pin_locations
  • get_schematic_view
  • get_schematic_view_region
  • get_sheet_properties
  • get_symbol_info
  • get_wire_connections
  • list_floating_labels
  • list_footprint_libraries
  • list_graphics
  • list_libraries
  • list_library_footprints
  • list_library_symbols
  • list_library_table
  • list_schematic_components
  • list_schematic_labels
  • list_schematic_nets
  • list_schematic_texts
  • list_schematic_wires
  • list_symbol_libraries
  • list_symbol_pins
  • list_symbols_in_library
  • list_tool_categories
  • query_traces
  • query_zones
  • search_footprints
  • search_jlcpcb_parts
  • search_parts_registry
  • search_symbols
  • search_tools
  • snapshot_project

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

Set it up

  1. git clone https://github.com/mixelpixx/KiCAD-MCP-Server and cd into it.
  2. npm install, then npm run build.
  3. 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)

Claude Desktop
{
  "mcpServers": {
    "kicad": {
      "command": "node",
      "args": [
        "/path/to/KiCAD-MCP-Server/dist/index.js"
      ]
    }
  }
}

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.

SettingWhat it does
PYTHONPATHEnvironment variable · requiredWhere 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 variableSet 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 variableHow much the server logs.info
Enable IPC API ServerConfigKiCad 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.

ServerToolsRuns onLicenceStars
KiCad MCP244Your computer–3K
MiniMax8Your computerMIT1.6K
Blender MCP9Your computerMIT32.4K
Framelink Figma MCP2Your computerMIT16.1K
Talk to Figma40Your 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.

Full docs on GitHubmixelpixx/KiCAD-MCP-Server

Something wrong on this page? Tell us.

More in Design, 3D and games