KiCAD MCP Server: let Claude design and check your KiCad boards
Lets Claude and other assistants build KiCad boards for you: draw schematics, place and route parts, run checks and export files for the fab.
This is a community server for KiCad, the free PCB design app. It lets your assistant create projects, edit schematics, place and route parts, run design checks and export manufacturing files. You build it from source and need KiCad 9 or newer on the same computer. Its makers now put new features into Konnect, a separate plugin for KiCad 10, but this server stays free and maintained.
Good for
- Hobbyists who want Claude to lay out a simple board from a plain description
- Hardware engineers who want design rule checks and Gerber exports run by asking
- Makers ordering assembled boards from JLCPCB who want cheap, in-stock parts picked
- Developers on Linux or Windows comfortable building a project from source
Works in
5 supported · 7 should work
Tap an app to see how to set it up and any known problems.
The README gives a claude mcp add command with KiCad's Python paths. It does not read the Claude Desktop config. GitHub
The README covers it, with setup scripts for each OS. Restart Claude Desktop after opening new tool groups. GitHub
Copy the bundled template to .vscode/mcp.json. Copilot stops at 128 tools, so turn on the core tool set. GitHub
The README says to use the same config as Claude Desktop in Cline's MCP settings file. GitHub
A Windows setup script writes the OpenCode entry for one project or for every project. GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install KiCAD MCP
Claude Code
- 1
Copy this prompt.
Add the KiCAD MCP server to Claude Code. Run this command: claude mcp add --scope user kicad \ --env KICAD_PYTHON=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 \ --env PYTHONPATH=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages \ --env LOG_LEVEL=info \ -- node /path/to/KiCAD-MCP-Server/dist/index.js Ask me for PYTHONPATH and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires KiCad 9.0 or newer with its Python module, Node.js 18 or newer, Python 3.9 or newer, The server built from source.
Build the server first: Clone the stable branch, then run npm install, pip install -r requirements.txt and npm run build (see the Build tab). The command shown uses macOS paths; on Linux and Windows swap in the PYTHONPATH for your system. Claude Code does not read Claude Desktop's config. On macOS, setup-macos.sh prints this command with your paths filled in. Check it with claude mcp list.
From the project README. Source.
Tools
Creates a new KiCad project with a board and a schematic
Sets up the three starting files for a fresh KiCad project: the project file, the board and the schematic.
Try: “Create a new KiCad project called sensor-node in my projects folder”
Write ·
create_projectOpens an existing KiCad project so you can work on it
Loads a project you already have so the assistant can read and change its board and schematic.
Try: “Open the KiCad project at ~/projects/sensor-node”
Files ·
open_projectOpens a specific board file and refreshes what the assistant sees
Loads one .kicad_pcb file and updates the assistant's copy of the board to match what is on disk.
Try: “Open the board file sensor-node.kicad_pcb”
Files ·
open_boardSaves the current project
Writes your current project changes to disk.
Try: “Save the project”
Write ·
save_projectSaves the current board
Writes the current board layout to its file.
Try: “Save the board”
Write ·
save_boardSaves the board under a new file name
Writes a copy of the current board to a new .kicad_pcb path.
Try: “Save this board as sensor-node-v2.kicad_pcb”
Write ·
save_asShows the project's name, files and basic details
Reports basic information about the open project, such as where its files are.
Try: “What project do I have open and where are its files?”
Read ·
get_project_infoRe-reads the board from disk, dropping out-of-date copies
Reloads the board file so the assistant works from what is saved on disk. Use it after you changed the board in KiCad.
Try: “Reload the board from disk, I just edited it in KiCad”
Files ·
reload_boardCloses the project, optionally saving first
Closes the open project. You can choose to save your changes before it closes.
Try: “Save and close the project”
Write ·
close_projectSaves a named checkpoint of the project with a PDF render
Makes a labelled checkpoint of where the design is now, including a PDF of it. Handy before a risky change.
Try: “Take a snapshot of the project called before-routing”
Write ·
snapshot_projectThrows away unsaved changes and reloads the board from disk
Drops the assistant's in-memory edits to the board and loads the saved file again.
Try: “Discard my unsaved changes and reload the board”
Files ·
discard_or_reloadCreates a new, empty schematic file
Makes a new schematic sheet you can start adding parts to.
Try: “Create a new schematic called power-supply”
Write ·
create_schematicPlaces a part from a symbol library on the schematic
Adds one symbol, such as a resistor or an IC, to the schematic at a position you choose.
Try: “Add a 10k resistor R1 to the schematic at 100, 50”
Write ·
add_schematic_componentPlaces many parts on the schematic in one go
Adds a list of symbols to the schematic in one step, which is quicker than adding them one at a time.
Try: “Add these parts to the schematic: R1 10k, R2 4.7k, C1 100nF, U1 LM358”
Write ·
batch_add_componentsPlaces several parts and wires up their nets in one step
Adds a group of symbols and connects their pins to named nets together. Good for building a small sub-circuit quickly.
Try: “Add an LM358 with two feedback resistors and connect them as a non-inverting amplifier”
Write ·
batch_add_and_connectDraws a wire between two points on the schematic
Adds a wire segment so two points on the sheet are electrically connected.
Try: “Draw a wire from 100,50 to 120,50 on the schematic”
Write ·
add_schematic_wireAdds a net label to the schematic
Puts a named label on a wire or pin so everything with that name is connected, such as VCC or SDA.
Try: “Label the wire at 120,50 as SDA”
Write ·
add_schematic_net_labelConnects a part's pin to a named net
Attaches a pin of a placed part to a net by name, so you do not have to draw the wire yourself.
Try: “Connect pin 2 of U1 to the GND net”
Write ·
connect_to_netPuts net labels on many pins at once
Labels several pins with net names in one step so those nets get wired quickly.
Try: “Connect U1 pin 1 to VCC, pin 4 to GND and pin 5 to SDA”
Write ·
batch_connectConnects matching pins between two connectors
Links each pin on one connector to the same pin on another. Useful for headers that pass signals straight through.
Try: “Connect all pins of J1 to the matching pins of J2”
Write ·
connect_passthroughMarks a pin as intentionally left unconnected
Adds a no-connect cross to a pin so the electrical check does not complain about it.
Try: “Mark pin 3 of U2 as no connect”
Write ·
add_no_connectMarks several unused pins as unconnected at once
Adds no-connect crosses to many pins in one step, to quiet the electrical check for pins you mean to leave open.
Try: “Mark pins 6, 7 and 8 of U1 as no connect”
Write ·
batch_add_no_connectsAdds a label that links a sub-sheet to its parent sheet
Creates a hierarchical label, which carries a signal between sheets in a multi-sheet schematic.
Try: “Add a hierarchical label named CLK to the sub-sheet”
Write ·
add_schematic_hierarchical_labelAdds a link to another schematic sheet inside this one
Puts a sheet block in the parent schematic that points at an existing sub-sheet file.
Try: “Add motor-driver.kicad_sch as a sheet in the main schematic”
Write ·
add_hierarchical_sheetCreates a new sub-sheet and links it into the parent schematic
Makes a new schematic file and adds a block for it in the parent schematic in one step.
Try: “Create a sub-sheet called power and link it into the main schematic”
Write ·
create_hierarchical_subsheetAdds a connection pin to a sub-sheet block
Adds a pin on a sheet block so signals can enter or leave that sub-sheet.
Try: “Add a sheet pin named VIN to the power sheet block”
Write ·
add_sheet_pinAdds a free text note to the schematic
Places a text annotation on the sheet. It does not affect the circuit.
Try: “Add a note near U1 saying decouple close to the pins”
Write ·
add_schematic_textChanges a part's value, reference, footprint or custom fields
Edits one placed part. You can set its footprint, value, reference and extra fields such as manufacturer part number.
Try: “Set the footprint of R1 to Resistor_SMD:R_0603_1608Metric”
Write ·
edit_schematic_componentEdits many schematic parts in one go
Applies changes to a list of placed parts at once, for example setting values and footprints for a whole bill of materials.
Try: “Set all 100nF capacitors to the 0402 footprint”
Write ·
batch_edit_schematic_componentsAdds or updates one custom field on a part
Sets a single extra field such as MPN or Manufacturer on a placed part, which then shows up in the BOM.
Try: “Set the MPN field of U1 to LM358DR”
Write ·
set_schematic_component_propertyRemoves one custom field from a part
Deletes a single extra field from a placed schematic part.
Try: “Remove the LCSC field from R1”
Delete ·
remove_schematic_component_propertySwaps a placed part for a different symbol
Replaces the symbol of a part already on the sheet with another one.
Try: “Replace U1 with a different op-amp symbol”
Write ·
replace_schematic_componentRemoves a part from the schematic
Deletes a placed symbol from the sheet.
Try: “Delete C5 from the schematic”
Delete ·
delete_schematic_componentDeletes a wire from the schematic
Removes one wire segment from the sheet.
Try: “Delete the wire from 100,50 to 120,50”
Delete ·
delete_schematic_wireDeletes a net label from the schematic
Removes a net label from the sheet.
Try: “Delete the SDA label at 120,50”
Delete ·
delete_schematic_net_labelMoves a part to a new spot on the schematic
Changes where a placed symbol sits on the sheet.
Try: “Move U1 to 150, 80”
Write ·
move_schematic_componentRotates a part on the schematic
Turns a placed symbol to a new angle.
Try: “Rotate R3 by 90 degrees”
Write ·
rotate_schematic_componentMoves a net label to a new position
Changes where a net label sits on the sheet.
Try: “Move the VCC label to 110, 40”
Write ·
move_schematic_net_labelNumbers the parts automatically (R1, R2, C1 ...)
Assigns reference designators to parts that do not have one yet.
Try: “Annotate the schematic”
Write ·
annotate_schematicShows a part's fields and custom properties
Reads one placed part and reports its built-in fields, custom fields and label positions.
Try: “Show me everything about U1 in the schematic”
Files ·
get_schematic_componentLists every part on the schematic
Returns all placed parts so you can review what the sheet contains.
Try: “List all components in the schematic”
Files ·
list_schematic_componentsLists every net on the schematic
Returns the names of all nets found on the sheet.
Try: “List all nets in the schematic”
Files ·
list_schematic_netsLists every wire on the schematic
Returns all wire segments on the sheet.
Try: “List all wires in the schematic”
Files ·
list_schematic_wiresLists every net label on the schematic
Returns all net labels on the sheet.
Try: “List all net labels”
Files ·
list_schematic_labelsLists the text notes on the schematic
Returns the free text annotations on the sheet, with an optional filter.
Try: “List all text notes in the schematic”
Files ·
list_schematic_textsShows everything connected to a net
Reports which pins and parts are tied to a given net.
Try: “What is connected to the VCC net?”
Files ·
get_net_connectionsShows what is connected at a wire's end
Reports the connections at one end of a wire.
Try: “What is connected at the end of the wire at 100,50?”
Files ·
get_wire_connectionsTells you which net sits at a given point
Looks up the net name at a coordinate on the sheet.
Try: “Which net is at 120, 50 on the schematic?”
Files ·
get_net_at_pointShows where each pin of a part is
Reports the coordinates of a placed part's pins.
Try: “Where are the pins of U1 on the schematic?”
Files ·
get_schematic_pin_locationsRenders the schematic as an image
Draws the schematic as a PNG or SVG so the assistant can look at it.
Try: “Show me an image of the schematic”
Files ·
get_schematic_viewRenders just one area of the schematic as an image
Draws a chosen rectangle of the sheet, so you can zoom in on one part.
Try: “Show me the area around U1 on the schematic”
Files ·
get_schematic_view_regionLists everything inside a rectangle on the schematic
Returns all schematic items found within the coordinates you give.
Try: “What is inside the box from 90,40 to 140,80 on the schematic?”
Files ·
get_elements_in_regionRuns the electrical rule check on the schematic
Checks the schematic for problems such as unconnected pins and conflicting outputs, and reports them.
Try: “Run ERC on the schematic and show me the errors”
Runs code ·
run_ercGenerates a netlist from the schematic
Produces the list of parts and connections that the board is built from.
Try: “Generate a netlist from the schematic”
Write ·
generate_netlistPushes schematic parts and nets to the board
Does the same as Update PCB from Schematic in KiCad, bringing the board in line with the schematic.
Try: “Sync the schematic to the board”
Write ·
sync_schematic_to_boardMakes a new board from a schematic with parts and nets in place
Creates a .kicad_pcb file and fills it with the footprints and nets from the schematic.
Try: “Create a new board from this schematic”
Write ·
create_board_from_schematicCopies footprint choices from the board back to the schematic
The reverse of syncing to the board. It writes the footprints used on the board into the schematic's Footprint fields.
Try: “Copy the footprints from the board back into the schematic”
Write ·
backannotate_footprintsFinds schematic items that sit on top of each other
Looks for symbols, labels or text that visually overlap on the sheet.
Try: “Find overlapping items in the schematic”
Files ·
find_overlapping_elementsFinds wires that run through part bodies
Lists wires that cross over a symbol, which makes the drawing hard to read.
Try: “Find wires that cross through symbols”
Files ·
find_wires_crossing_symbolsLists net labels not attached to any wire
Finds labels that are not connected to anything.
Try: “List labels that are not connected to a wire”
Files ·
list_floating_labelsFinds wires with a loose end
Lists wire segments that are not connected at one or both ends.
Try: “Find loose wires in the schematic”
Files ·
find_orphaned_wiresFinds connection points that are off the grid
Lists wire ends, symbol origins and labels that are not on the grid. Off-grid points can silently break connections.
Try: “Check the schematic for off-grid connections”
Files ·
lint_offgridRounds a coordinate to the nearest schematic grid point
Takes an x and y position and returns the closest grid position.
Try: “Snap 101.3, 50.7 to the schematic grid”
Read ·
snap_to_gridMoves a part's Reference or Value label
Places a part's reference or value text at the exact coordinates you give, and can rotate it.
Try: “Move the reference text of R1 to 98, 45”
Write ·
set_schematic_property_positionMoves many Reference and Value labels at once
Repositions the reference and value text of many parts in a single save, which is much faster than one at a time.
Try: “Move the reference labels for R1 to R10 above each part”
Write ·
batch_set_schematic_property_positionsTidies every part's Reference and Value text automatically
Moves the reference and value text of every part so it sits outside the symbol body and does not overlap other things.
Try: “Auto place the reference and value labels in the schematic”
Write ·
autoplace_schematic_fieldsTidies pin names and label orientation without changing the circuit
Makes cosmetic fixes to the schematic file. It does not move any symbol, pin, wire, junction or label anchor, so connections stay the same.
Try: “Run a cosmetic cleanup on the schematic”
Write ·
lint_schematic_cosmeticTurns overlapping labels so their text is readable
Re-orients net and global labels that overlap so their text lands in free space.
Try: “Declutter the net labels in the schematic”
Write ·
suggest_schematic_declutterExports the schematic as an SVG image
Saves the schematic as a vector image file.
Try: “Export the schematic to SVG”
Write ·
export_schematic_svgExports the schematic as a PDF
Saves the schematic as a PDF you can print or share.
Try: “Export the schematic to PDF”
Write ·
export_schematic_pdfAdds or updates a custom field on a sub-sheet
Sets an extra metadata field on a hierarchical sheet block.
Try: “Set the Revision property of the power sheet to B”
Write ·
set_sheet_propertyLists the sub-sheets and their custom fields
Reports each hierarchical sheet in the schematic with all its properties.
Try: “List the sub-sheets and their properties”
Files ·
get_sheet_propertiesRemoves a sub-sheet link from the parent schematic
Takes the sheet block out of the parent schematic. It is the opposite of adding a sheet.
Try: “Remove the motor-driver sheet from the main schematic”
Delete ·
remove_hierarchical_sheetRefreshes symbols in the schematic from the library
Updates the copies of symbols stored in the schematic so they match the current library, like Update Symbol from Library in KiCad.
Try: “Update the symbols in the schematic from the library”
Write ·
update_symbol_from_libraryAdds a custom field to a symbol stored in the schematic
Sets a field such as Manufacturer, MPN or LCSC on a symbol definition inside the schematic file.
Try: “Add an LCSC property to the LM358 symbol in the schematic”
Write ·
add_library_symbol_propertyRepoints placed parts at different library symbols
Changes the library reference of placed parts using an old-to-new list you provide. Useful after renaming a library.
Try: “Change every part from Old_Lib to New_Lib in the schematic”
Write ·
replace_instance_lib_idsChecks that a schematic file is well formed
Reads a .kicad_sch file and reports the line and column of each structural fault.
Try: “Validate my schematic file”
Files ·
validate_schematicSets the board width and height
Changes the board dimensions to the size you ask for.
Try: “Set the board size to 50 by 30 mm”
Write ·
set_board_sizeDraws the board edge as a rectangle, circle or polygon
Adds the outline of the board on the edge layer. Shapes include rectangle, rounded rectangle, circle and polygon.
Try: “Add a 60 by 40 mm rounded rectangle board outline with 3 mm corners”
Write ·
add_board_outlineReplaces the existing board outline with a new shape
Removes the current edge outline and draws a new one in its place.
Try: “Replace the outline with a 50 mm circle”
Delete ·
replace_board_outlineDeletes the board outline
Removes all the drawings on the board edge layer.
Try: “Clear the board outline”
Delete ·
clear_board_outlineAdds a mounting hole to the board
Places a screw hole, with a pad if you want one, at a position you choose.
Try: “Add M3 mounting holes in the four corners”
Write ·
add_mounting_holeAdds a text label to the board
Places text on the board, for example a name or version on the silkscreen.
Try: “Add the text REV A on the silkscreen at 5, 5”
Write ·
add_board_textPuts an SVG logo on the silkscreen
Converts an SVG file into shapes on the silkscreen layer.
Try: “Import logo.svg onto the front silkscreen”
Write ·
import_svg_logoAdds a layer to the board
Adds a copper or other layer to the board stack.
Try: “Add two more copper layers to the board”
Write ·
add_layerSwitches the layer you are working on
Changes which layer is active for new items.
Try: “Switch to the bottom copper layer”
Write ·
set_active_layerLists the board's layers
Returns every layer on the board.
Try: “List the layers on this board”
Read ·
get_layer_listShows board details
Reports the board's metadata and properties.
Try: “Give me a summary of the board”
Read ·
get_board_infoGives the size of the box around the board
Returns the bounding box of the board.
Try: “How big is the board?”
Read ·
get_board_extentsRenders a flat picture of the board
Draws the board as a PNG, JPG or SVG so the assistant can look at it.
Try: “Show me an image of the board”
Write ·
get_board_2d_viewSets the drill and placement origin of the board
Moves the origin used for drill and position files, and the grid origin.
Try: “Set the drill origin to the bottom left corner of the board”
Write ·
set_board_originShows the drill and grid origins
Reads the origins of a board in millimetres.
Try: “Where are the board origins?”
Files ·
get_board_originLists lines, arcs, text and dimensions drawn on the board
Returns the drawing items on the board such as lines, arcs, rectangles, text and dimensions.
Try: “List the graphic items on the board”
Read ·
list_graphicsChanges properties of a drawn item on the board
Edits a line, arc or other drawing using its ID.
Try: “Change the width of that line to 0.2 mm”
Write ·
update_graphicDeletes a drawn item from the board
Removes one line, arc or other drawing using its ID.
Try: “Delete that graphic line”
Delete ·
delete_graphicPlaces a footprint on the board
Puts a footprint on the board at a position, rotation, reference and value you choose.
Try: “Place a 0603 resistor R1 at 20, 15 on the board”
Write ·
place_componentMoves many parts on the board in one step
Moves a group of footprints together. If one fails, none are moved.
Try: “Move R1, R2 and R3 to a row at y=20”
Write ·
batch_move_componentsMoves a part to a new place on the board
Changes the position of one footprint.
Try: “Move U1 to 30, 25”
Write ·
move_componentRotates a part on the board
Sets a footprint to an angle you give.
Try: “Rotate U1 to 90 degrees”
Write ·
rotate_componentLines up parts in a row, column or grid
Aligns several footprints horizontally, vertically or on a grid.
Try: “Align C1 to C4 in a horizontal row”
Write ·
align_componentsPlaces a grid of identical parts
Lays out parts in rows and columns.
Try: “Place 4 by 4 LEDs spaced 5 mm apart”
Write ·
place_component_arrayCopies a part with an offset
Makes another copy of a footprint, placed away from the original.
Try: “Duplicate R1 and put the copy 5 mm to the right”
Write ·
duplicate_componentProposes a placement that shortens traces
Suggests where to put footprints so connections are shorter, parts face their partners and overlaps are removed.
Try: “Suggest a better placement for the parts on this board”
Write ·
suggest_placementGroups parts on the board by schematic sheet
Clusters footprints according to the sheets they come from in the schematic.
Try: “Place the footprints grouped by their schematic sheet”
Write ·
hierarchical_placeGroups several parts together
Puts selected footprints into a group so they can be handled as one.
Try: “Group C1, C2 and U1 together”
Write ·
group_componentsRemoves a part from the board
Deletes a footprint from the board.
Try: “Delete R5 from the board”
Delete ·
delete_componentChanges a part's reference, value or footprint
Edits the properties of a footprint already on the board.
Try: “Change the value of R1 to 4.7k”
Write ·
edit_componentSwaps a part for a different footprint
Replaces a footprint on the board with another one.
Try: “Replace C1 with a 0805 footprint”
Write ·
replace_componentSets whether a part is SMD or through-hole
Sets the placement type of a footprint, with optional exclusion flags for the BOM or position files.
Try: “Mark J1 as through hole”
Write ·
set_footprint_typeMoves a part's reference or value text
Moves or edits the reference, value or other text of a footprint without moving the footprint.
Try: “Move the reference text of U1 above the part”
Write ·
move_footprint_textAdds a note to a part
Attaches a comment to a component.
Try: “Add a note to U1 saying keep away from the antenna”
Write ·
add_component_annotationFinds parts by reference or value
Searches the board for components that match a reference or value.
Try: “Find all 10k resistors on the board”
Read ·
find_componentLists the parts on the board
Returns the components on the board, with optional filters.
Try: “List all components on the board”
Read ·
get_component_listShows all properties of a part
Returns every property of one component.
Try: “Show the properties of U1”
Read ·
get_component_propertiesLists the pads of a part
Returns pad details for one component.
Try: “Show the pads of U1”
Read ·
get_component_padsLists pads with position, layer, size and net
Returns pads for one component, chosen parts or the whole board.
Try: “List the pads for J1 with their nets”
Read ·
get_padsGives the exact position of one pad
Returns the coordinates of a specific pad on a part.
Try: “Where is pad 3 of U1?”
Read ·
get_pad_positionLists every pad on a net
Returns all the pads attached to a net name or number.
Try: “Which pads are on the GND net?”
Read ·
get_net_padsShows the sizes of a part's body, pads, courtyard and text
Returns separate bounding boxes for the body, pads, courtyard, keepout, fab, silkscreen and text of a footprint.
Try: “Show the courtyard and body size of U1”
Read ·
get_component_geometryEstimates the unrouted connection lines and their lengths
Works out the airwires between pads for each net, using the current part positions.
Try: “Show the airwire lengths per net”
Read ·
get_ratsnestEstimates unrouted connection lengths per net
Gives the same result as the ratsnest estimate: airwire segments and their lengths by net.
Try: “Estimate the airwire lengths for each net”
Read ·
estimate_airwire_lengthsClassifies placement conflicts between parts
Reports where parts overlap in their body, courtyard, keepout, silkscreen or pads, and which kind of conflict it is.
Try: “Check the placement for clearance problems”
Read ·
check_placement_clearanceFinds parts whose courtyards overlap
Detects courtyard overlaps between footprints. It can also flag courtyards that go past the board edge.
Try: “Check for courtyard overlaps and parts outside the board”
Read ·
check_courtyard_overlapsCreates a new net on the board
Adds a named net to the PCB.
Try: “Add a net called 5V_AUX”
Write ·
add_netDraws a copper trace between two points
Routes one trace segment on a single layer between two coordinates.
Try: “Route a 0.25 mm trace on the top layer from 10,10 to 30,10”
Write ·
route_traceRoutes a trace between two pads, adding vias if needed
Connects two pads with a trace and inserts vias when it has to change layer.
Try: “Route a trace from R1 pad 1 to U1 pad 3”
Write ·
route_pad_to_padDraws a curved copper trace
Routes an arc-shaped trace from a start, middle and end point.
Try: “Route an arc trace through these three points”
Write ·
route_arc_traceRoutes a differential pair
Draws two traces that run together, as used for signals like USB.
Try: “Route the USB D+ and D- pair from J1 to U1”
Write ·
route_differential_pairAdds a via
Places a through, blind or buried via, which carries a signal between layers.
Try: “Add a via on the GND net at 25, 20”
Write ·
add_viaDrops ground vias across the board
Places GND stitching vias over the board while avoiding other nets' traces, vias and pads.
Try: “Add GND stitching vias across the board”
Write ·
add_gnd_stitching_viasAdds a copper zone with clearance settings
Creates a copper fill area on a layer with the clearances you set.
Try: “Add a GND copper zone on the bottom layer”
Write ·
add_zoneAdds a copper pour or ground plane
Fills an area of a layer with copper, commonly used for ground.
Try: “Add a ground plane on the bottom layer”
Write ·
add_copper_pourRefills all copper zones
Recalculates the copper fills so they match the current traces and parts.
Try: “Refill all copper zones”
Write ·
refill_zonesChanges a trace's width, layer or net
Edits an existing trace.
Try: “Make the trace on net VCC 0.5 mm wide”
Write ·
modify_traceDeletes traces
Removes traces by ID, by position, or all traces on a net.
Try: “Delete all traces on the SDA net”
Delete ·
delete_traceFinds traces by net, layer or area
Lists traces that match filters.
Try: “List all traces on the top layer for the VCC net”
Read ·
query_tracesFinds copper zones by net, layer or area
Lists copper zones on the board with optional filters.
Try: “List all copper zones on the GND net”
Read ·
query_zonesLists all nets with statistics
Returns every net on the board with some stats.
Try: “List all nets on the board”
Read ·
get_nets_listCreates a net class with its own rules
Defines a group of nets with custom rules such as width and clearance.
Try: “Create a Power net class with 0.5 mm tracks”
Write ·
create_netclassPuts a net into a net class
Assigns a net to an existing net class so its rules apply.
Try: “Assign VCC to the Power net class”
Write ·
assign_net_to_classSets or clears a net's display colour
Changes the colour used to show a net in the editor.
Try: “Color the 3V3 net orange”
Write ·
set_net_colorCopies routing from one group of parts to another
Repeats an existing routing layout on a second set of parts.
Try: “Copy the routing of channel 1 to channel 2”
Write ·
copy_routing_patternRuns the autorouter on the board
Sends the board to the Freerouting autorouter and brings the routed traces back.
Try: “Autoroute the board”
Runs code ·
autorouteExports a routing file for an autorouter
Writes a Specctra DSN file that you can route in another tool.
Try: “Export a DSN file for Freerouting”
Write ·
export_dsnImports a routed file back into the board
Reads a Specctra SES file produced by a router and adds the traces to the board.
Try: “Import the routed SES file into the board”
Write ·
import_sesRuns the design rule check on the board
Checks the board against its design rules and reports problems.
Try: “Run DRC and show me the errors”
Runs code ·
run_drcLists the design rule check problems
Returns the DRC violations, which you can filter by severity.
Try: “Show me only the DRC errors”
Read ·
get_drc_violationsChecks the gap between two items
Measures the clearance between two board items.
Try: “Check the clearance between U1 pad 1 and the nearest trace”
Read ·
check_clearanceSets board-wide rules for clearance, track width and vias
Changes the global design rules for the board.
Try: “Set minimum clearance to 0.15 mm and track width to 0.2 mm”
Write ·
set_design_rulesShows the board's design rules
Returns the current design rules.
Try: “What are the current design rules?”
Read ·
get_design_rulesSets rules for a single layer
Applies constraints that only affect one layer.
Try: “Set a minimum track width of 0.1 mm on the top layer”
Write ·
set_layer_constraintsExports Gerber files your board maker needs
Writes the Gerber manufacturing files for the board.
Try: “Export Gerber files for this board to the fabrication folder”
Write ·
export_gerberPlots Gerber files with all the plot options
Exports Gerbers through KiCad's command line with the full set of options from the Plot dialog.
Try: “Plot Gerbers with X2 attributes into the gerbers folder”
Runs code ·
export_gerbersPlots chosen layers into one Gerber file
Writes only the layers you pick into a single Gerber file.
Try: “Export just the top copper layer as one Gerber file”
Runs code ·
export_gerber_singleGenerates drill files for the board
Writes the Excellon or Gerber drill files with the options you choose.
Try: “Generate Excellon drill files in the gerbers folder”
Runs code ·
export_drillExports the bill of materials
Writes the parts list as CSV, XML, HTML or JSON.
Try: “Export the BOM as CSV”
Write ·
export_bomGenerates a bill of materials from the schematic
Writes a BOM from the schematic through KiCad's command line, with its full set of options.
Try: “Export a BOM from the schematic grouped by value”
Runs code ·
export_sch_bomExports a pick and place file
Writes the part positions your assembler needs.
Try: “Export the pick and place file”
Write ·
export_position_fileGenerates a pick and place file with all options
Writes the part placement file through KiCad's command line with its full set of options.
Try: “Export a placement file in millimetres for the top side only”
Runs code ·
export_posExports the board in IPC-2581 format
Writes a single manufacturing data file in the IPC-2581 format.
Try: “Export the board as IPC-2581”
Runs code ·
export_ipc2581Exports the board in ODB++ format
Writes the board in ODB++ format, which some manufacturers accept.
Try: “Export the board as ODB++”
Runs code ·
export_odbExports a bare-board test netlist
Generates an IPC-D-356 file used for electrical testing of the bare board.
Try: “Export an IPC-D-356 netlist”
Runs code ·
export_ipcd356Exports the board in GenCAD format
Writes the board in GenCAD format.
Try: “Export the board as GenCAD”
Runs code ·
export_gencadExports a netlist in several formats
Writes the netlist as KiCad, Spice, Cadstar or OrcadPCB2.
Try: “Export a Spice netlist”
Write ·
export_netlistExports the board as a PDF
Writes a PDF of chosen layers and page size.
Try: “Export the board to PDF with the top copper and silkscreen”
Write ·
export_pdfPlots the board layout to PDF with all options
Writes a PDF of the layout through KiCad's command line, with the full set of layer options.
Try: “Plot the front copper and edge cuts to PDF”
Runs code ·
export_pcb_pdfExports the board as an SVG
Saves the board as a vector image.
Try: “Export the board to SVG”
Write ·
export_svgPlots the board layout to SVG with all options
Writes SVG plots through KiCad's command line, with the full set of layer options.
Try: “Plot the board layers to SVG”
Runs code ·
export_pcb_svgPlots the board layout to DXF
Writes DXF files for CAD tools, through KiCad's command line with all layer options.
Try: “Export the board outline as DXF”
Runs code ·
export_pcb_dxfExports a 3D model of the board
Writes the board as STEP, STL, VRML or OBJ.
Try: “Export a STEP file of the board”
Write ·
export_3dExports a 3D model of the board via the command line
Writes a 3D model of the board through KiCad's command line.
Try: “Export a STEP model with components included”
Runs code ·
export_3d_cliExports a VRML 3D model
Writes the board as a VRML 3D file.
Try: “Export a VRML model of the board”
Write ·
export_vrmlExports the schematic to PDF with all options
Writes a PDF of the schematic through KiCad's command line, with its full set of options.
Try: “Export the schematic to PDF in black and white”
Runs code ·
export_sch_pdfExports each schematic page to SVG
Writes one SVG per page into a folder.
Try: “Export the schematic pages to SVG”
Runs code ·
export_sch_svgExports each schematic page to DXF
Writes one DXF file per page into a folder.
Try: “Export the schematic pages to DXF”
Runs code ·
export_sch_dxfExports each schematic page to HPGL
Writes one HPGL plot per page into a folder.
Try: “Export the schematic pages to HPGL”
Runs code ·
export_sch_hpglExports each schematic page to PostScript
Writes one PostScript file per page into a folder.
Try: “Export the schematic pages to PostScript”
Runs code ·
export_sch_psExports the old-style Python BOM data file
Writes the intermediate XML file that older Python BOM scripts read.
Try: “Export the Python BOM XML from the schematic”
Runs code ·
export_sch_python_bomDownloads the JLCPCB parts catalogue to your computer
Fetches the catalogue of about 2.5 million JLCPCB parts into a local database so searches are fast.
Try: “Download the JLCPCB parts database”
Write ·
download_jlcpcb_databaseSearches JLCPCB parts by category, package and type
Finds parts in the local JLCPCB catalogue using specs such as category, package and basic or extended library type.
Try: “Find 0603 10k resistors in the JLCPCB basic library”
Files ·
search_jlcpcb_partsShows a JLCPCB part with its pricing
Returns details and price tiers for one part. Live stock appears when JLCPCB credentials are set up.
Try: “Show the price and stock of JLCPCB part C25804”
Files ·
get_jlcpcb_partFinds cheaper or in-stock alternatives to a JLCPCB part
Looks for similar parts that cost less or are in stock.
Try: “Find a cheaper alternative to C25804”
Files ·
suggest_jlcpcb_alternativesShows how big the local JLCPCB catalogue is
Reports statistics about the downloaded parts database.
Try: “How many parts are in my JLCPCB database?”
Files ·
get_jlcpcb_database_statsSearches Digi-Key for parts
Looks up parts on Digi-Key by part number, manufacturer number or a spec phrase like '0402 100nF 50V X7R'.
Try: “Search Digi-Key for 0402 100nF 50V X7R capacitors”
Network ·
digikey_search_partsChecks a symbol library's parts against Digi-Key
Looks up every symbol in a library file and reports parts that are obsolete, out of stock or not found.
Try: “Check my symbol library against Digi-Key for obsolete parts”
Files ·
digikey_check_library_availabilityLooks up existing verified footprints and symbols
Searches a parts registry so you can reuse a ready-made footprint or symbol instead of drawing one.
Try: “Search the parts registry for a USB-C connector footprint”
Network ·
search_parts_registryShows details of a part from the parts registry
Returns the details of one registry entry.
Try: “Show details of that USB-C connector in the registry”
Network ·
get_registry_partDownloads a footprint or symbol from the parts registry
Fetches a ready-made footprint or symbol into your project.
Try: “Download that USB-C connector footprint into my library”
Write ·
download_registry_partFills in missing datasheet links using LCSC numbers
Adds datasheet URLs to parts that lack one, based on their LCSC part number.
Try: “Fill in the missing datasheet links in the schematic”
Write ·
enrich_datasheetsGets the datasheet link for a part from LCSC
Looks up a part's datasheet URL from its LCSC number.
Try: “Get the datasheet link for LCSC part C25804”
Network ·
get_datasheet_urlSearches footprints across the libraries
Finds footprints by name in all footprint libraries.
Try: “Find 0603 resistor footprints”
Files ·
search_footprintsLists the footprint libraries
Returns the footprint libraries that are available.
Try: “List my footprint libraries”
Files ·
list_librariesLists footprints in one library
Returns all footprints inside a chosen library.
Try: “List the footprints in Resistor_SMD”
Files ·
list_library_footprintsShows details of a footprint
Returns detailed information about one footprint.
Try: “Show details of the R_0603_1608Metric footprint”
Files ·
get_footprint_infoSearches symbols by name, LCSC number or description
Finds symbols in your symbol libraries.
Try: “Search for symbols matching LM358”
Files ·
search_symbolsLists the symbol libraries
Returns the libraries registered in your symbol library table.
Try: “List my symbol libraries”
Files ·
list_symbol_librariesLists symbols in one library
Returns all symbols in a chosen symbol library.
Try: “List the symbols in the Device library”
Files ·
list_library_symbolsShows details of a symbol
Returns detailed information about one symbol.
Try: “Show details for the LM358 symbol”
Files ·
get_symbol_infoShows a symbol's pins from the library
Returns pin names, numbers and types straight from the library, without needing a schematic.
Try: “List the pins of the LM358 symbol”
Files ·
list_symbol_pinsShows the pins of several symbols at once
Returns pin names, numbers, types and positions for many symbols in one go.
Try: “List the pins for LM358, NE555 and AMS1117”
Files ·
batch_list_symbol_pinsCreates a custom footprint
Writes a new .kicad_mod footprint with SMD or through-hole pads, courtyard and silkscreen.
Try: “Create a footprint for a 6-pin SMD connector with 1 mm pitch”
Write ·
create_footprintEdits a pad in a footprint file
Changes the size, position, drill or shape of a pad.
Try: “Make pad 1 of my footprint 1.2 mm wide”
Write ·
edit_footprint_padAttaches a 3D model to a footprint file
Links a STEP or WRL model to a .kicad_mod file, replacing any current one.
Try: “Attach connector.step to my footprint”
Write ·
add_footprint_3d_modelCopies a 3D model into the project's model folder
Copies a model file into the project's 3D shapes folder and returns the path to use.
Try: “Import connector.step into the project 3D models”
Write ·
import_3d_modelAttaches a 3D model to parts already on the board
Adds a 3D model to placed footprints on the open board, and the change shows up live in KiCad.
Try: “Attach the 3D model to U1 on the board”
Write ·
add_component_3d_modelAdds a footprint library to KiCad's list
Registers a .pretty library so KiCad can find it.
Try: “Register my custom.pretty footprint library”
Write ·
register_footprint_libraryLists the available .pretty footprint libraries
Returns the footprint libraries found.
Try: “List the .pretty footprint libraries”
Files ·
list_footprint_librariesCreates a custom symbol
Writes a new symbol in a .kicad_sym library with pins, rectangles and lines.
Try: “Create a symbol for an 8-pin sensor with VCC, GND, SDA and SCL”
Write ·
create_symbolRemoves a symbol from a library
Deletes a symbol from a .kicad_sym file.
Try: “Delete the OLD_SENSOR symbol from my library”
Delete ·
delete_symbolLists symbols in a .kicad_sym file
Returns all symbols found in a library file.
Try: “List the symbols in my custom.kicad_sym”
Files ·
list_symbols_in_libraryAdds a symbol library to KiCad's list
Registers a library so KiCad can find it.
Try: “Register my custom.kicad_sym symbol library”
Write ·
register_symbol_libraryAdds a custom field to a symbol in a library
Sets a field such as Manufacturer, MPN or LCSC on a symbol in a .kicad_sym file.
Try: “Add an MPN field to the sensor symbol in my library”
Write ·
add_symbol_propertyCopies a symbol from one library into another
Copies a symbol between .kicad_sym files, with optional rename and overwrite.
Try: “Copy the LM358 symbol into my custom library”
Write ·
import_symbolSaves one symbol as its own library file
Extracts a single symbol from a library into a separate .kicad_sym file.
Try: “Export the sensor symbol to its own file”
Write ·
export_symbolRenames a symbol in a library
Renames a symbol and its parts and any symbols that extend it.
Try: “Rename the SENSOR symbol to BME280”
Write ·
rename_symbolSets the electrical type of pins in a symbol library
Changes pin types, and optionally the drawing style, for chosen pins in a .kicad_sym file.
Try: “Set the SDA pin of my sensor symbol to bidirectional”
Write ·
set_symbol_pin_typeFinds symbols saved twice under different names
Groups symbols in a library that are the same part stored under different names, often left over from Eagle imports.
Try: “Find duplicate symbols in my library”
Files ·
find_duplicate_symbolsRepairs symbols that crash the schematic reader
Fixes symbols from sources like SnapEDA or SamacSys that can make schematic tools fail to load.
Try: “Repair the flat symbols in my symbol library”
Write ·
repair_flat_symbolsChecks that a symbol library file is well formed
Reads a .kicad_sym file and reports the line and column of every fault.
Try: “Validate my symbol library file”
Files ·
validate_symbol_libraryLists the libraries registered in a library table
Reads a symbol or footprint library table and shows each entry's name, type, path and description.
Try: “Show what is in my fp-lib-table”
Files ·
list_library_tablePoints a library entry at a different file
Changes where a library table entry loads from, keeping its name, type and description.
Try: “Point the custom footprint library at its new folder”
Write ·
set_library_table_uriRemoves libraries from a library table
Deletes entries from a symbol or footprint library table by name.
Try: “Remove the old_parts library from my sym-lib-table”
Delete ·
remove_library_table_entryConverts an Eagle project to a KiCad project
Reads an Eagle board and schematic and builds a KiCad project from them.
Try: “Import my Eagle project and convert it to KiCad”
Write ·
import_eagle_projectImports a board from another design tool
Brings in a board file from PADS, Altium, Eagle, CADSTAR, Fabmaster, P-CAD, SolidWorks PCB or Cadence.
Try: “Import this Altium PCB file into KiCad”
Write ·
import_pcbOpens the KiCad application
Starts KiCad, optionally with a project open.
Try: “Open KiCad with this project”
Runs code ·
launch_kicad_uiRuns the design rule check by driving the KiCad window
Opens the design rule checker dialog in KiCad, clicks Run, and reads the violations back.
Try: “Run DRC in the KiCad window and list the violations”
Runs code ·
kicad_run_drcTakes a screenshot of the board in the KiCad window
Zooms the board view to fit, waits for it to redraw, and captures a picture.
Try: “Take a screenshot of the board in KiCad”
Runs code ·
kicad_pcb_snapshotTakes a screenshot of the KiCad window
Captures the KiCad window to a PNG file.
Try: “Take a screenshot of KiCad”
Runs code ·
kicad_gui_screenshotLists the menus and toolbar buttons in the KiCad window
Reads the menus and toolbars of the running KiCad so the assistant knows what it can click.
Try: “List the menus in the KiCad window”
Runs code ·
kicad_gui_treeClicks a menu item or toolbar button in KiCad
Activates a menu entry or toolbar tool by its name.
Try: “Click Zoom to Fit in KiCad”
Runs code ·
kicad_gui_clickWaits for a KiCad window to appear
Pauses until a window with a given title shows up, or a timeout passes.
Try: “Wait for the DRC window to appear”
Runs code ·
kicad_gui_wait_forRuns a KiCad plugin from the Tools menu
Finds the named entry under Tools, External Plugins and runs it.
Try: “Run my Teardrops plugin in KiCad”
Runs code ·
kicad_run_action_pluginRefreshes plugins and opens one, for plugin testing
Reloads the plugin list in KiCad and then opens the named plugin. Meant for plugin developers.
Try: “Reload plugins and open my test plugin”
Runs code ·
kicad_reload_and_open_pluginLists the KiCad window's controls on Linux
Dumps the accessible control tree of KiCad from the Linux accessibility service.
Try: “List the controls in the KiCad window on Linux”
Runs code ·
kicad_gui_tree_atspiClicks a control in the KiCad window on Linux
Activates the first control with a matching name through the Linux accessibility service.
Try: “Click the Run DRC button in KiCad on Linux”
Runs code ·
kicad_gui_click_atspiUsed by the assistant behind the scenes
Reports which KiCad backend is active and what is loaded
Shows the active backend, the loaded project and board paths, and whether there are unsaved changes.
Try: “What state is the KiCad connection in?”
Read ·
get_backend_stateChecks whether the board has unsaved or outside changes
Reports if the loaded board differs from what is saved on disk.
Try: “Does the board have unsaved changes?”
Files ·
is_dirtyChecks whether KiCad is running
Reports if the KiCad application is open.
Try: “Is KiCad running?”
Read ·
check_kicad_uiChecks that the autorouter is installed
Tests that Java and the Freerouting program are available.
Try: “Is Freerouting set up?”
Files ·
check_freeroutingTests the Digi-Key login details
Checks that the Digi-Key credentials work by fetching a token and running one search.
Try: “Test my Digi-Key connection”
Network ·
digikey_test_connectionInstalls the helper plugin that lets the assistant drive KiCad
Copies a helper plugin into your KiCad plugin folder. It is optional and only needed for the KiCad window tools.
Try: “Install the KiCad GUI driver helper”
Write ·
install_gui_driverLists the groups of tools available
Shows the categories of tools the assistant can use.
Try: “What kinds of KiCad tools are there?”
Read ·
list_tool_categoriesLists the tools in one group
Shows which tools belong to a given category.
Try: “What tools are in the routing category?”
Read ·
get_category_toolsFinds tools by keyword
Searches the available tools by keyword.
Try: “Find tools for exporting Gerbers”
Read ·
search_toolsLists the toolboxes and whether each is open
Shows groups of related tools and which are switched on.
Try: “List the toolboxes”
Read ·
list_toolboxesTurns on a toolbox of related tools
Adds the tools of one or more toolboxes to the assistant's available tools.
Try: “Open the routing toolbox”
Write ·
open_toolboxTurns off a toolbox to free up space
Removes the tools of one or more toolboxes from the assistant's list.
Try: “Close the routing toolbox”
Write ·
close_toolbox
From the official docs
Pros and cons
Good
- Covers the whole job, from schematic and placement to routing, checks and fab exports.
- Free and open source under the MIT license.
- Autoroutes boards through Freerouting, with Docker as an option if you do not want Java.
- Searches a local JLCPCB catalog of 2.5 million parts and suggests cheaper or in-stock swaps.
- A core tool set of 37 keeps the tool list small for clients with limits.
- Imports Eagle, Altium, PADS and other designs through KiCad 10's importer.
Watch out
- You build it from source with Node.js and KiCad's own Python; there is no one-line install.
- macOS support is experimental, and Linux is the only fully tested platform.
- No read-only mode, so every session can edit your files.
- Live updates in an open KiCad window are experimental.
- The full JLCPCB parts download takes 40 to 60 minutes and 3 to 5 GB.
- New features go to the separate Konnect plugin, which uses a stricter license.
Permissions
medium risk · 4 things to watch
Medium risk
The assistant can change and delete parts of your schematic and board files, and there is no read-only mode. Keep the project in git or take a snapshot before you start.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It edits and deletes parts in your design files
It changes schematics and boards on disk and can delete components, traces and outlines. Commit the project to git or ask for a snapshot before a session. github.com
Schematic edits are lost if KiCad has it open
When the schematic is open in KiCad, saving there overwrites what the assistant wrote. Close the schematic in KiCad before asking for schematic changes. github.com
Debug logs hold your design details
Developer mode writes full session logs into the project's logs folder. Delete that folder before you share the project. github.com
GUI control is off until you turn it on
The tools that click KiCad's menus and dialogs install nothing until asked, and then listen only on your own computer with a per-session token. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch yet. A read-only operating mode is proposed in issue #444 and pull request #471. |
|---|---|
| Talks to | JLCPCB and LCSC part data (optional). Digi-Key product search (optional). Parts registry downloads (optional) |
| Sign-in and keys | No sign-in. Optional JLCPCB and Digi-Key keys are read from environment variables or a .env file in the server folder. |
Alternatives
Use this server for full board work in KiCad 9 or 10 if you are happy to build it from source. Pick KiCad MCP Pro for an install from PyPI with gated release steps, and Konnect if you are on KiCad 10 and want the makers' newest features under its stricter license.
| Server | Official | Runs | Can change things | GitHub stars | Weekly downloads |
|---|---|---|---|---|---|
| For KiCad | |||||
| KiCAD MCP ServerThis page | Community | Local | Yes | – | – |
| KiCad MCP Pro | Community | Local | Yes | 167 | 717/wk |
| kicad-sch-api | Community | Local | Yes | 57 | – |
| Other tools for the same job | |||||
| Konnect | Community | Local | Yes | – | – |
| lamaalrajih/kicad-mcp | Community | Local | – | – | – |
Questions
Is the KiCad MCP server free?
Yes. It is open source under the MIT license. The makers' newer Konnect plugin uses the AGPL-3.0 license, with paid licenses for businesses.
Does it work with KiCad 10?
Yes. It needs KiCad 9.0 or newer, and recent releases fix KiCad 10 library tables, sheets and Windows install paths.
Does KiCad need to be open while I use it?
No. By default it edits your project files directly. If KiCad is running with its IPC API server turned on (Preferences > Plugins), some board changes appear live in the window, but that mode is experimental.
Is it safe to use on a real project?
Mostly, if you keep a backup. It can change and delete parts of your design, and there is no read-only mode yet. Commit the project to git first and close the schematic in KiCad before asking for schematic edits, or KiCad may overwrite them.
Does it work on a Mac?
Yes, but macOS support is experimental. You must use the Python that ships inside KiCad; with system Python the server fails to start and your client just times out.
Can it autoroute my board?
Yes, through the free Freerouting autorouter. You download its file once and need Java 21 or newer, or Docker or Podman instead.
Why does my client complain about too many tools?
The full set is about 250 tools, and VS Code Copilot stops at 128. Set the server's toolbox option to core so it starts with 37 and the assistant opens more groups when it needs them.
Can it choose cheap parts for JLCPCB assembly?
Yes. It searches a local copy of JLCPCB's 2.5 million part catalog and suggests cheaper or in-stock alternatives. The first download takes 40 to 60 minutes and 3 to 5 GB of disk.
KiCAD MCP Server vs Konnect: which should I use?
Konnect is the same team's rewrite as a KiCad 10 plugin, and new features land there first. Use this server if you are on KiCad 9 or want the MIT license; it is still maintained.
How do I add it to Claude?
Build it first, then follow the Claude Desktop or Claude Code steps in the install box above. On Windows, macOS and Linux a setup script can write the Claude Desktop config for you.
Examples
Start a new board with an outline and mounting holes
Create a new KiCAD project named 'LEDBoard' in my Documents folder. Set the board size to 50mm x 50mm and add a rectangular outline.
SourceCheck the design and export files for the fab
Run a design rule check and show me any violations. Export Gerber files to the 'fabrication' folder.
SourcePick a cheap, in-stock part for JLCPCB assembly
Find the cheapest capacitor 10uF 25V in 0805 package with good stock.
SourceAutoroute the board
Autoroute the current board using Freerouting with a 5-minute timeout.
Source
Information
updated Nov 1, 2026
- Publisher
- Community
- Transport
- stdio
- Auth
- None
- License
- MIT
- Last commit
- Oct 26, 2026
Other KiCad MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 14Hide
- KiCAD MCP Server README · github.com
- Prerequisites · github.com
- KiCAD MCP Server tool inventory · github.com
- Available tools · github.com
- Schematic edits are silently lost when the schematic is open in KiCad · github.com
- Proposal: explicit operating modes for safer KiCad MCP workflows · github.com
- Security advisories · github.com
- Toolboxes · github.com
- Konnect · github.com
- Configuration · github.com
- Usage examples · github.com
- kicad-mcp-pro · github.com
- lamaalrajih/kicad-mcp · github.com
- kicad-sch-api · github.com