Skip to main content
Glama

kicad-mcp

MCP stdio server for creating and editing KiCad projects — schematics, PCBs, ERC/DRC checks, and exports — driven by kicad-cli.

Tools

tool

purpose

kicad_new_project

scaffold .kicad_pro / .kicad_sch / .kicad_pcb

kicad_read_file

read a .kicad_sch / .kicad_pcb (S-expression text)

kicad_sch_add_symbol

place a symbol by library id (e.g. Device:R)

kicad_sch_add_wire

add a wire segment (mm coordinates, Y down)

kicad_sch_add_label

add a net label

kicad_pcb_add_footprint

place a footprint by library id

kicad_pcb_add_track

add a polyline of track segments

kicad_pcb_assign_net

declare/rename a net in the netlist

kicad_list_symbols

search symbol libraries

kicad_list_footprints

search footprint libraries

kicad_erc / kicad_drc

run the checkers, return reports

kicad_export

pdf / svg / netlist / bom / step / dxf / gerbers / drill

kicad_version

kicad-cli version + detected file-format versions

Related MCP server: kicad-mcp

Requirements

  • Python ≥ 3.10, uv

  • KiCad with kicad-cli on PATH (calibrated against KiCad 10.x)

  • KiCad standard symbol/footprint libraries at /usr/share/kicad/ (override via ~/.kicad-mcp.json, see _settings())

Install

uv sync   # or: uv venv && uv pip install -e .

Run

Add to your MCP client config (e.g. Claude Code / any MCP host):

{
  "mcpServers": {
    "kicad": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/kicad-mcp", "kicad-mcp"]
    }
  }
}

Smoke test

bun smoke.mjs    # or: node smoke.mjs

Drives the server over raw stdio MCP: creates a project, places a resistor (schematic + PCB), wires/labels, runs ERC + DRC, and exports netlist, SVG, gerbers, and drill files. Prints SMOKE: N/N passed.

License

MIT

Available Tools

14 tools
kicad_drcKicad DrcA

Run KiCad Design Rules Checker on a .kicad_pcb file. Returns the report. schematic_parity additionally checks the board against the sibling .kicad_sch (footprint <-> symbol agreement).

Inputs: pcb (required), outdir, schematic_parity. Returns: result

kicad_ercKicad ErcB

Run KiCad Electrical Rules Checker on a .kicad_sch file. Returns the report.

Inputs: schematic (required), outdir. Returns: result

kicad_exportKicad ExportA

Export a KiCad file via kicad-cli. For .kicad_sch: target in {pdf, svg, netlist (kicadxml), bom}. For .kicad_pcb: target in {gerbers, drill, pdf, svg, step, dxf}. layers: optional comma-separated layer list for pcb svg/gerbers (e.g. 'F.Cu,F.SilkS,Edge.Cuts'; gerbers defaults to the standard fab stack). pcb svg uses --mode-single --fit-page-to-board --exclude-drawing-sheet. gerbers/drill write files into outdir (directory); other targets write into outdir. Returns the export command result.

Inputs: path (required), target (required), layers, outdir. Returns: result

kicad_list_footprintsKicad List FootprintsA

Search KiCad footprint libraries. Query matches 'Library:FootprintName'. Returns up to limit lib_ids.

Inputs: limit, query. Returns: result

kicad_list_symbolsKicad List SymbolsB

Search KiCad symbol libraries. Query matches 'Library:SymbolName' paths. Returns up to limit lib_ids.

Inputs: limit, query. Returns: result

kicad_new_projectKicad New ProjectB

Create a new KiCad project: .kicad_pro/.kicad_sch/.kicad_pcb. Returns paths of the created files.

Inputs: name (required), directory. Returns: result

kicad_pcb_add_footprintKicad Pcb Add FootprintC

Add a footprint to a PCB by library id (e.g. 'Resistor_SMD:R_0603_1608Metric').

Inputs: path (required), lib_id (required), reference (required), x, +4 more. Returns: result

kicad_pcb_add_trackKicad Pcb Add TrackC

Add a polyline of track segments through points [[x,y], ...] on the PCB.

Inputs: path (required), points (required), net, layer, +1 more. Returns: result

kicad_pcb_assign_netKicad Pcb Assign NetC

Declare or rename a net in the PCB netlist (net 0 is the unconnected net).

Inputs: path (required), net_name (required), net_number (required). Returns: result

kicad_read_fileKicad Read FileB

Read a KiCad .kicad_sch or .kicad_pcb file and return its S-expression content.

Inputs: path (required). Returns: result

kicad_sch_add_labelKicad Sch Add LabelC

Add a net label to a schematic at the given position.

Inputs: x (required), y (required), path (required), text (required). Returns: result

kicad_sch_add_symbolKicad Sch Add SymbolB

Add a symbol instance to a schematic by library id (e.g. 'Device:R'). x/y are schematic mm coordinates (KiCad Y axis points down).

Inputs: path (required), lib_id (required), reference (required), x, +3 more. Returns: result

kicad_sch_add_wireKicad Sch Add WireC

Add a wire segment to a schematic (mm coordinates, Y axis points down).

Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +1 more. Returns: result

kicad_versionKicad VersionA

Return the installed kicad-cli version and detected file format versions.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 14 tools

    Disambiguation5/5

    Tools are cleanly partitioned by domain (sch_* vs pcb_*) and action (add_wire vs add_track, drc vs erc, list_symbols vs list_footprints). No two tools overlap in purpose; an agent can pick the right tool from the name and description alone.

    Naming Consistency5/5

    Every tool uses a predictable kicad_ prefix with a consistent verb_noun or domain_action snake_case pattern (kicad_new_project, kicad_sch_add_symbol, kicad_pcb_assign_net). The sch/pcb segments reinforce a coherent scheme.

    Tool Count5/5

    14 tools is well within the ideal 3-15 range and each earns its place covering setup, editing, validation, library search, and export. Nothing feels redundant or padded.

    Completeness3/5

    Covers project creation, reading, adding schematic/PCB elements, DRC/ERC, library lookup, and export, but offers only additive edits with no move/delete/update operations for placed symbols, wires, tracks, or footprints. There is also no write-back tool, so modifying an existing design is a dead end beyond raw read_file, which limits iteration workflows.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.
      3
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language control of KiCad PCB design software through Claude Desktop, automating project creation, design rule checks, component management, export, and cost estimation.
      25 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to interact with KiCAD for PCB design automation. Users can design PCBs using natural language, including component placement, routing, checks, and export.
      60 npm
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI assistants to interact with KiCAD for PCB design automation, including schematic editing, component placement, routing, DRC/ERC, and export.
      100
      38 npm
      2
      MIT