mcp-server-kicad
The mcp-server-kicad provides 109 MCP tools for programmatic interaction with KiCad projects, enabling AI assistants to read, modify, and analyze schematic, PCB, and library files without corruption.
Key capabilities:
Schematic: Create and edit schematics (place/move/remove components, add wires/labels/junctions/power symbols, set properties, auto-place decoupling capacitors, wire pins to nets). Analyze schematics (get summaries, list elements, trace nets, find pin positions, run ERC). Export to PDF, SVG, DXF, netlists, BOM.
PCB: Edit PCB layouts (place/move/remove footprints, add traces/vias/text, create/fill zones, set net classes, autoroute). Analyze PCBs (list elements, check placements, run DRC, validate). Export to PDF, SVG, DXF, Gerbers, 3D models (STEP/STL/GLB), pick-and-place, IPC-2581.
Library management: View and create symbols and footprints, get detailed info, export SVG, upgrade formats.
Project management: Create projects, manage hierarchical sheets (add, remove, modify, duplicate, reorder), annotate, validate hierarchy, trace nets across sheets, flatten hierarchy, export hierarchical netlists.
Design rule checks: Run ERC and DRC.
Utilities: Get KiCad version, run jobsets, auto-detect project paths, support environment variables, work with KiCad 9/10 files, byte-preserving edits ensure file integrity.
Provides tools for KiCad schematic, PCB, symbol, footprint, and project automation, including read/write operations, ERC/DRC analysis, autorouting, and various exports (PDF, SVG, Gerber, 3D models, BOM, netlist, etc.).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-kicadgenerate a bill of materials for my current schematic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Related MCP server: kicad-mcp-pro
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-<version>.mcpb from the latest release 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.
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
Run them as one unified server, or separately when you want a smaller tool surface in context.
Server | Tools | What it does |
| 42 | Schematic read/write, net tracing, ERC, exports (PDF, SVG, DXF, netlist, BOM) |
| 34 | Board read/write, netlist import, zones, DRC, autorouting, exports (Gerber, drill, 3D, pick-and-place) |
| 24 | Project scaffolding, hierarchical sheets, hierarchy validation, annotation, cross-sheet net tracing |
| 5 | Symbol library browsing, authoring, SVG export, format upgrade |
| 4 | Footprint library browsing, SVG export, format upgrade |
Six design skills (Claude Code plugin)
Tools alone let a model click every button. The bundled skills teach it which buttons, in what order, and what "done" looks like.
Skill | Kicks in when |
Any electronics or EDA conversation starts. Routes to the right skill below | |
Choosing topology, regulators, and component values, before any file exists | |
Planning exact placement coordinates and wiring. Pure planning, no writes | |
Executing that plan, or modifying an existing schematic | |
Placing footprints, routing, zones, stackup, trace widths | |
ERC and DRC failures, unconnected nets, export prep |
The design skills hand their artifacts to independent reviewer subagents
(agents/) before moving on, so a bad BOM or a bad placement plan
gets caught before it becomes a schematic.
Configuration
Split servers
Five entries instead of one, when you want to load only part of the tool surface:
{
"mcpServers": {
"kicad-schematic": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-schematic"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-pcb": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-pcb"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-symbol": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-symbol"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-footprint": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-footprint"],
"cwd": "/path/to/your/kicad/project"
},
"kicad-project": {
"command": "uvx",
"args": ["--from", "mcp-server-kicad", "mcp-server-kicad-project"],
"cwd": "/path/to/your/kicad/project"
}
}
}Each is also runnable directly:
uvx --from mcp-server-kicad mcp-server-kicad-schematicHow paths resolve
Highest priority wins:
Tool parameters. Every tool accepts an explicit path.
Environment variables. They override anything auto-detected.
Auto-detect. The working directory is scanned for a
.kicad_pro, and the schematic, board, and library paths are derived from it.
Variable | Points at |
| a |
| a |
| a |
| a |
| where exports and reports are written |
Requirements
Python 3.10+
KiCad 9.x or 10.x, for the tools that shell out to
kicad-cli: ERC, DRC, and every export. The read and write tools parse files directly and need no KiCad install at all.
CI runs the full suite on Linux against KiCad 9 and on macOS against KiCad 10, plus a KiCad-free matrix across Python 3.10 through 3.13.
Finding your KiCad install
kicad-cli is looked up on PATH, then inside /Applications/KiCad/KiCad.app
on macOS, then in the standard Windows install folders, machine-wide under
Program Files and per-user under AppData, newest version first. Neither
installer adds it to PATH. Everything else in the KiCad tree is located
relative to it, the same way KiCad itself does it, so a stock install on any
platform needs no configuration: the stock symbol libraries and the bundled
Python that provides pcbnew are both found automatically.
Override any of it if your install is unusual:
Variable | Overrides |
| the |
| the directory holding the stock |
| the interpreter used for |
CLI-backed tools are always registered. Without kicad-cli they fail with a
message naming KICAD_CLI_PATH, rather than vanishing from the tool list.
KiCad 10 files
File | What works today |
| Everything, read and write: the whole schematic server and the whole project server |
| Everything, read and write |
| Everything: your own libraries as well as the stock ones |
Every tool parses and edits through the byte-preserving substrate, so none of
them refuses a file on its format version and none of them rewrites bytes you
did not ask to change. One caveat, and it is not about the file format:
autoroute_pcb hands the board to pcbnew for the DSN export and the SES
import, so it additionally needs a pcbnew whose era matches the board. It
checks that before it starts. A KiCad 10 board on a KiCad 9 pcbnew is refused
with a message naming both versions, rather than failing somewhere inside the
export; install KiCad 10 or point KICAD_PYTHON at one. The other direction
runs, and the result carries a warning: a KiCad 9 board routed through a KiCad
10 pcbnew comes back as a routed copy in the KiCad 10 format, because that is
what pcbnew saves. Your original board is untouched either way. The design
behind the substrate is written up in
docs/adr-cst-substrate.md.
Windows: Controlled Folder Access
Windows Defender's ransomware protection, Controlled Folder Access, guards your
Documents folder and blocks writes from applications it does not recognise.
KiCad keeps its own data there, a 3D cache and templates under Documents\KiCad,
so a blocked write kills kicad-cli at startup with an access violation (exit
3221225477) before it does any work. Every invocation fails, --version
included.
The block surfaces as error 2: The system cannot find the file specified,
which is why this reads like a missing folder rather than a permission problem.
Measured on a machine with the feature on: the folder is plainly there and a
write into it still fails with FileNotFoundError.
kicad-cli is handled for you. On that crash the server retries once with
KiCad's own KICAD_DOCUMENTS_HOME pointed at a local folder outside the
protected set, then reuses it for the session. Nothing to configure, and a
machine without the block never sees any of it. Setting KICAD_DOCUMENTS_HOME
yourself picks the folder and disables the retry, on the grounds that a
directory you chose is yours to fix.
Your project files are a separate matter. The same block applies to any write, so if your KiCad project lives under Documents, the write tools can fail the same confusing way, and the server cannot repair that: it is the location you asked it to edit. Either keep projects outside the protected folders, or allow the tools through at Windows Security, Virus & threat protection, Ransomware protection, Allow an app through Controlled folder access.
Tool reference
Read
Tool | Description |
| Get item counts for a schematic sheet |
| List all components (symbols) on a sheet |
| List all net labels on a sheet |
| List all wires on a sheet |
| List all global labels on a sheet |
| List all hierarchical labels on a sheet |
| List all hierarchical sheet blocks on a sheet |
| List all junctions on a sheet |
| List all no-connect flags on a sheet |
| List all bus entries on a sheet |
| Get pin info for a symbol in the schematic's |
| Get absolute pin positions for a placed component, accounting for rotation and mirror |
| Get all connections for a named net (multi-hop BFS wire tracing) |
| List unconnected pins from ERC data |
Write
Tool | Description |
| Place a component in the schematic |
| Remove a component by reference designator |
| Move a placed component to a new position |
| Set any property (Value, Reference, Footprint, ...) on a placed component |
| Load a symbol definition from a |
| Add one or more wires between points, auto-creating junctions on T-connections |
| Remove a wire segment |
| Add one or more junction dots |
| Remove a junction dot |
| Add a net label at a position |
| Remove a net label or global label |
| Add a global net label visible across all sheets |
| Add a hierarchical label for sheet-to-sheet connections |
| Remove a hierarchical label by name or UUID |
| Modify text, shape, or position of a hierarchical label |
| Place a power symbol (VCC, GND, +3V3, ...) with auto PWR_FLAG |
| Add a text annotation to the schematic |
| Remove text annotation(s) by content, optionally filtered by position |
| Wire one or more pins to a named net |
| Wire two component pins together |
| Automatically place a decoupling capacitor near an IC |
| Place a no-connect flag on an unused pin (idempotent) |
| Remove no-connect flag(s) from a pin |
| Set the schematic page size |
Analysis and export
Tool | Description |
| Run Electrical Rules Check, with |
| Export schematic to PDF, SVG, or DXF |
| Export the schematic netlist |
| Export a Bill of Materials as CSV |
Read
Tool | Description |
| List all footprints on the board |
| List all traces on the board |
| List all nets on the board |
| List all zones on the board |
| List all layers on the board |
| List all graphic items on the board |
| Board summary: footprint count, trace count, net count, thickness |
| Get pad info for a placed footprint |
| Get the board-coordinate bounding box of a placed footprint |
Write
Tool | Description |
| Place a footprint on the board |
| Move a footprint to a new position |
| Remove a footprint by reference designator |
| Add a trace segment between two points |
| Remove trace segments matching filters |
| Change the width of existing traces |
| Detect and remove trace segments with unconnected endpoints |
| Add a via at a position |
| Add a grid of thermal vias under a footprint pad |
| Add text to the board (silkscreen, fab layer, ...) |
| Add a graphic line (edge cuts, silkscreen, ...) |
| Create an unfilled copper zone |
| Create a keep-out zone restricting tracks, vias, pads, pours, or footprints |
| Fill all copper zones on the board |
| Create or update a net class with design rules |
| Import or sync the schematic netlist onto the board (footprints and pad nets) |
Analysis and export
Tool | Description |
| Run Design Rules Check on the board |
| Check whether a proposed footprint position hits a keep-out zone or the board edge |
| Check every placed footprint against keep-out zones and the board edge |
| Autoroute traces using the Freerouting autorouter |
| Export board layers to PDF, SVG, or DXF |
| Export Gerber files, all layers or a specific list |
| Export a 3D model (STEP/STL/GLB) or render the 3D view to PNG |
| Export a component position file for pick and place |
| Export in IPC-2581 format for manufacturing data exchange |
Scaffolding
Tool | Description |
| Create a KiCad 9 project ( |
| Create a blank schematic file |
| Create a blank symbol library file |
| Create a |
Sheet management
Tool | Description |
| Add a hierarchical sheet with matching labels in the child |
| Remove a hierarchical sheet block from a parent |
| Modify sheet name, file, width, or height |
| Move a sheet block to a new position, pins included |
| Add a pin to an existing hierarchical sheet block |
| Remove a pin from a hierarchical sheet block |
| Duplicate a sheet, copying the child file with new UUIDs |
| Reorder sheets by specifying the desired UUID order |
Hierarchy inspection
Tool | Description |
| Check whether a schematic is the root or a sub-sheet |
| List the full sheet hierarchy tree from root |
| Get sheet details with pin and label matching status |
| Check for orphaned labels and pins, direction mismatches, duplicate refs |
Cross-sheet analysis
Tool | Description |
| Trace a net across the hierarchy through pins and labels |
| List all nets crossing sheet boundaries |
| List symbol instances from the root schematic |
Annotation, export, utilities
Tool | Description |
| Auto-assign reference designators, respecting hierarchy |
| Export a netlist with hierarchy info (requires |
| Flatten a hierarchical schematic into a single sheet |
| Run a KiCad jobset file |
| Get KiCad version information |
Symbol
Tool | Description |
| List all symbols in a |
| Get detailed pin and property info for a library symbol |
| Add a new symbol to a |
| Export a symbol library to SVG images |
| Upgrade a symbol library to the current KiCad format |
Footprint
Tool | Description |
| List all footprints in a |
| Get pad and outline details for a |
| Export a footprint to SVG |
| Upgrade a footprint library to the current KiCad format |
Debugging
Drive the servers by hand with the MCP Inspector:
npx @modelcontextprotocol/inspector uvx --from mcp-server-kicad mcp-server-kicadContributing
Issues and pull requests are welcome. See CONTRIBUTING.md for development setup, and docs/adr-cst-substrate.md for the architecture decisions behind the byte-preserving write path.
License
Maintenance
Related MCP Servers
- AlicenseBqualityBmaintenanceAn MCP server that enables AI assistants to analyze schematics, inspect PCBs, trace connections, validate designs, and generate embedded code for KiCad projects.3977MIT
- Alicense-qualityAmaintenanceKiCad MCP Pro is an MCP server for KiCad EDA workflows. It lets AI agents automate schematic and PCB tasks, ERC/DRC validation, DFM review, and manufacturing export.49MIT
- Alicense-qualityCmaintenanceAn MCP server that gives AI agents end-to-end control of KiCad 9+ for rule checks, manufacturing exports, production-readiness certification, and live PCB editor control.MIT
- AlicenseAqualityBmaintenanceMCP server for KiCad 10 that provides live PCB access, file-based schematic handling, symbol search, schematic generation from pinouts, and a Python scripting escape hatch.23MIT
Related MCP Connectors
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
MCP server for generating rough-draft project plans from natural-language prompts.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProductOfAmerica/mcp-server-kicad'
If you have feedback or need assistance with the MCP directory API, please join our Discord server