KiCad MCP Server
Provides tools for interacting with KiCad EDA software, enabling control of schematics, PCBs, manufacturing outputs, design checks, and library management.
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., "@KiCad MCP ServerRun a design rule check on the current PCB."
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.
KiCad MCP Server
A Model Context Protocol (MCP) server for controlling KiCad EDA software — schematics, PCBs, manufacturing outputs, design checks, and library management — through any MCP-compatible AI assistant.
The server exposes 22 routers containing ~280-306 operations (the spread is
because the routing router exposes 8-30 operations depending on the installed
Java version). All operations return structured {ok, message, error, data}
dicts.
How It Works
The server controls KiCad through three layers:
IPC API (
kicad-python/ kipy): live board and project control. Requires a running KiCad GUI instance with IPC enabled (KiCad 9+). Handles reads, mutations, and interactive operations.kicad-cli: headless export, DRC, ERC, import, and file upgrades. No GUI needed. Handles all manufacturing output formats.
SWIG pcbnew (legacy): direct board manipulation via KiCad's bundled Python bindings. Deprecated since KiCad 9, removed in KiCad 11. Only loads when KiCad's bundled Python is the interpreter.
A fourth layer — kicad-sch-api — provides pure-Python schematic editing
with no KiCad instance required.
On Windows, the server can auto-launch KiCad as a detached background process.
Related MCP server: KiCad MCP Server
Installation
From PyPI:
pip install kicad-eda-mcp
# Optional: HTTP/SSE transport (remote/multi-client)
pip install uvicorn starletteFrom source (development):
pip install -e ".[dev]"Quick Start
Any MCP client (stdio)
Add to your MCP client configuration:
{
"mcpServers": {
"kicad": {
"type": "stdio",
"command": "kicad-eda-mcp"
}
}
}With mutations enabled
python -m kicad_mcp --enable-mutationsHTTP/SSE mode (multi-client)
python -m kicad_mcp --http --port 8765Requires uvicorn and starlette (install separately — not in the default
dependencies).
Progressive disclosure (context economy)
python -m kicad_mcp --tool-mode dynamicExposes only kicad_discover, kicad_load_toolset, kicad_unload_toolset
plus the always-loaded kicad_system and kicad_calculator routers. The LLM
loads additional toolsets on demand:
kicad_load_toolset(name="board")Available Routers
Router | Ops | Backend | Purpose |
| 12 | CLI/IPC | Connection, version, documents, capabilities, multi-instance management |
| 5 | IPC | Project text variables, net classes |
| 53 | IPC | PCB CRUD, queries, mutations, footprint ops, layer control |
| 27 | CLI | All PCB export formats (Gerbers, PDF, SVG, STEP, drill, position, etc.) |
| 1 | CLI | Design Rule Check (DRC) |
| 10 | CLI | ERC + exports (PDF/BOM/netlist/SVG/DXF) |
| 51 | kicad-sch-api | Pure-Python schematic editing (no KiCad needed) |
| 10 | CLI/git | SVG export, upgrade, parametric generation, IPC pad calc |
| 8 | CLI/git | SVG export, upgrade, STM32/AVR/connector symbol generation |
| 3 | CLI | Gerber convert/diff/info |
| 1 | CLI | Jobset execution |
| 30 | CLI/git | Search, KLC checks, file format editing, visual diff |
| 7 | SWIG | Legacy pcbnew operations (KiCad <=10) |
| 5 | IPC/CLI | Signal/power integrity, pin analysis, routing quality, SPICE |
| 14 | CLI/IPC | SI/PI/EMC calculators, design lint, pin function analysis |
| 0 | — | Device tree / test code generation (disabled stubs) |
| 10 | pure math | PCB calculators (track width, via, RF, impedance, etc.) |
| 6 | CLI | High-level composers (manufacturing package, design check, etc.) |
| 5 | pure Python | .kicad_wks worksheet parsing and creation |
| 8-30 | CLI/API | Algorithmic routing via Freerouting (Java-dependent) |
| 13 | CLI/IPC | Cascading quality gates, checkpoints, DRC progress |
| 5 | IPC/sch-api | Force-directed PCB and schematic auto-placement |
Total: 22 routers, 276 fixed operations + 8-30 routing operations (284 without Java, 306 with Java 21+).
Tool Modes and Discovery
The server supports three tool exposure modes:
Mode | Visible tools | Use case |
| 3 meta-tools + always-loaded routers | Context economy — LLM loads toolsets on demand |
| All 22 routers | Balanced — each router is one tool with an |
| All operations as individual tools | Future expansion (same as router for now) |
Meta-tools (available in all modes)
Meta-tool | Description |
| List all toolsets with descriptions and load status |
| Load a toolset by name (triggers background dependency check) |
| Unload a toolset to free context space |
| Switch to a pre-defined profile (see below) |
| Report total routers, operations, dependency status |
| Search all operations by keyword |
Profiles
Pre-defined toolset combinations for common workflows:
Profile | Toolsets included |
| system, calculators, exports, analysis, libraries |
| system, calculators |
| system, calculators, board, schematic, schematic_edit, routing, workflow, exports, analysis |
| system, calculators, schematic, schematic_edit, libraries, workflow |
| system, calculators, board, exports, routing, analysis, workflow |
| system, calculators, exports, libraries, workflow |
| system, calculators, board, analysis, routing, workflow |
| system, calculators, board, analysis, exports, workflow |
| system, calculators, analysis, schematic, workflow |
| system, calculators, analysis, board, exports, workflow |
| All toolsets including legacy SWIG |
Dependencies
Installed at pip install time (hard dependencies)
These are in pyproject.toml and installed automatically:
Package | Purpose |
| MCP SDK (server, transport, types) |
| IPC API client (kipy) for live board control |
| Pure-Python schematic editing |
| Process management for auto-launch/supervisor |
| Required by the footprint generator for |
Optional dependencies
Package | Install command | Purpose |
|
| HTTP/SSE transport |
|
| STEP 3D model diff and audit |
The server includes a fallback self-heal mechanism (deps.py): if a hard
dependency is somehow missing at runtime, it attempts a pip install in the
background when the corresponding toolset is loaded. This is a safety net, not
the primary install path.
Clone-on-demand library repositories
Library utility operations (KLC checks, footprint generation, symbol generation) require two GitLab repositories that are not bundled with KiCad:
kicad-library-utils— KLC checks, file format modules, symbol generatorskicad-footprint-generator— Parametric footprint generation
These are auto-cloned to ~/.cache/kicad-eda-mcp/ on first use and updated
periodically (every 24 hours by default). Requires git in PATH.
Check status:
kicad_library → lib_statusFreerouting (algorithmic routing)
The routing router uses Freerouting, which requires Java:
CLI pipeline (DSN export, autoroute, SES import): Java 17+
API server pipeline (REST, sessions, jobs): Java 21+
If Java is not installed, only the 8 Java-independent routing operations
(analysis, cleanup, status check) are visible. Use
download_java_for_routing to auto-download a JRE from Adoptium, then
restart the MCP server.
The Freerouting JAR is auto-downloaded from GitHub releases on first use.
Resources
Browsable context available without a tool call:
Resource | Description |
| System capabilities and available control layers |
| Complete list of board layer names and IDs |
| All available export formats |
| Available PCB calculators |
| KiCad Library Convention rules (S/F/G/M categories, 84 rules) |
| Built-in SPICE simulation models (opamp, varistor, potentiometer) |
| Available KLC check and library management operations |
| Available quality gate operations and descriptions |
| Pre-built circuit templates for rapid design |
Key Operations by Category
KLC compliance checks (kicad_library)
Operation | Description |
| Validate symbols against 20+ KLC rules (S3-S7, EC01-03, G1) |
| Validate footprints against 18+ KLC rules (F5-F9, EC01, G1) |
| Audit which footprints have 3D models |
| Diff two library versions (added/removed/changed) |
| Validate library table files |
Footprint/symbol file editing (kicad_library)
Operation | Description |
| Load |
| Create new footprint programmatically |
| Modify existing footprint (name, description, tags) |
| Load |
| Create new symbol in a library |
| Modify existing symbol properties |
Symbol generation (kicad_symbol + kicad_library)
Operation | Description |
| Create symbol from CSV pinout table |
| Generate STM32 symbols from STM32CubeMX XML |
| Generate AVR DA/DB symbols from IO mux CSV |
| Generate connector symbols |
| Generate resistor network symbols |
| Generate DIP switch symbols |
Parametric footprint generation (kicad_footprint)
Operation | Description |
| List available generators (gullwing, no_lead, BGA, DIP, connectors, etc.) |
| Generate IPC-7351 compliant footprint with 3D model |
| Batch generate multiple footprints in parallel |
| Preview without writing files |
| Calculate IPC-7351 pad dimensions (gullwing/nolead, 3 density levels) |
Visual diff (kicad_library)
Operation | Description |
| Generate HTML visual diff with renders and overlays |
| Text diff between two symbols |
| Diff YAML generator spec files |
| Normalize and compare S-expression files |
Quality gates (kicad_quality_gates)
Operation | Description |
| Top-level cascading gate: runs all sub-gates, returns PASS/FAIL/BLOCKED |
| Check schematic completeness (missing footprints, unannotated, empty values) |
| Check net connectivity (unconnected pins, single-pin nets) |
| Check PCB design rules via DRC |
| Check placement geometry (overlaps, off-board, courtyard) |
| Check schematic-to-PCB net parity |
| Check manufacturing readiness (drill sizes, annular rings) |
| One-call review: board info, nets, DRC, footprints, stats |
| Snapshot project files to a timestamped backup |
| Restore project files from a checkpoint |
Common Workflows
Export manufacturing files
kicad_workflow → export_manufacturing_package
pcb_file: "myboard.kicad_pcb"
output_dir: "fab/"Run design checks
kicad_workflow → full_design_check
sch_file: "mysch.kicad_sch"
pcb_file: "myboard.kicad_pcb"Calculate track width
kicad_calculator → track_width
current_a: 2.0
temp_rise_c: 10
layer: "external"Calculate IPC-7351 pad dimensions
kicad_footprint → calc_ipc_pad
package_type: "gullwing"
body_length: 5.0
body_width: 4.4
lead_width: 0.42
density_level: "nominal"Check KLC compliance
kicad_library → check_klc_symbol
library_path: "mylib.kicad_sym"
verbose: 2
kicad_library → check_klc_footprint
footprint_paths: "SOIC-8.kicad_mod"
verbose: 2Generate footprint from parametric generator
kicad_footprint → generate_footprint
generator: "package/gullwing"
part: "SOT-23"
output_dir: "footprints/"Generate symbol from CSV
kicad_library → generate_symbol_from_csv
csv_path: "pinout.csv"
output_path: "mysym.kicad_sym"Run the full quality gate
kicad_quality_gates → project_quality_gate
pcb_file: "myboard.kicad_pcb"
sch_file: "mysch.kicad_sch"Configuration
Environment variables
Variable | Default | Description |
|
| Enable write operations (0=read-only, 1=writes allowed) |
|
| Default dry_run for mutations unless explicitly overridden |
|
| Auto-launch KiCad if not running |
|
| Auto-shutdown KiCad after N seconds idle (0=never) |
|
| Health-check interval for the supervisor (seconds) |
| auto | Override IPC socket path |
| auto | Override IPC authentication token |
|
| Client name reported to KiCad |
|
| Timeout for IPC API requests (milliseconds) |
|
| Max retries when connecting to the IPC socket |
|
| Delay between IPC connect retries (seconds) |
| auto | Override KiCad executable path |
| auto | Override kicad-cli path |
| auto | Override KiCad bundled Python path (for SWIG) |
|
| Cache directory for cloned library repos |
|
| Seconds between library repo updates (0=pull every call) |
|
| Logging level: DEBUG, INFO, WARNING, ERROR |
| none | Log file path (default: stderr only) |
|
| HTTP bind host |
|
| HTTP port |
|
| Commit message prefix for mutation operations |
CLI flags
python -m kicad_mcp [options]
--http Run in HTTP/SSE mode (default: stdio)
--host HOST HTTP bind host (default: 127.0.0.1)
--port PORT HTTP port (default: 8765)
--editor-type TYPE Scope tools to an editor: all|schematic|pcb|symbol|footprint
(default: all). NOTE: filtering is not yet implemented —
the flag is accepted but has no effect.
--tool-mode MODE Tool visibility: dynamic|router|full (default: router)
--enable-mutations Allow write operations (default: read-only)
--auto-launch on|off Auto-launch KiCad if not running (default: on)
--log-level LEVEL Logging level: DEBUG|INFO|WARNING|ERROR (default: INFO)Requirements
KiCad 9+ (10 recommended for full IPC API support)
Python 3.10+
kicad-cliin PATH (included with KiCad)gitin PATH (for clone-on-demand library repos)For algorithmic routing: Java 17+ (CLI pipeline) or Java 21+ (API server)
Known Limitations
These are inherent to KiCad's version or are unimplemented features, verified against KiCad 10.0.5 and the official KiCad documentation.
Gerber tool (kicad_gerber)
KiCad's kicad-cli has no gerber or gerbview subcommand (only fp,
jobset, pcb, sch, sym, version). Gerber viewing/conversion/diff is a
GUI-only (GerbView) feature. The kicad_gerber router detects this and returns
a clear error pointing to alternatives (GerbView GUI, gerbv, or a Python
Gerber library). This is an upstream KiCad limitation, not a bug in this server.
Board PNG export
pcb export png is documented in the KiCad master branch but is absent from
the installed KiCad 10.0.x CLI. The export router detects the supported-format
list at runtime and returns a clear error suggesting svg or pdf instead.
PNG export will work once KiCad adds the png subcommand to the CLI.
SWIG backend (kicad_swig)
The SWIG-based pcbnew Python bindings are deprecated since KiCad 9.0 and are
scheduled for removal in KiCad 11. The SWIG backend only loads when KiCad's
bundled Python is used as the interpreter; with a system Python (the common
case), swig_pcbnew reports as unavailable. The IPC API is the supported
replacement for KiCad 10+. The autoroute, panelize, and silkscreen_fix
operations under kicad_swig are unimplemented stubs.
IPC API scope (KiCad 9/10)
Per the KiCad developer documentation, the IPC API in KiCad 9 and 10 supports
communication with a running GUI instance only. Headless mode via
kicad-cli api-server is a KiCad 11 feature. The IPC API in KiCad 9/10 has no
support for plotting or exporting files from designs (also added in KiCad 11);
exports are handled by the kicad-cli backend instead. There is no IPC-based
autorouter or panelizer in any KiCad version.
Code generation (kicad_codegen)
The device_tree and test_code operations are unimplemented stubs. They
return a descriptive message but do not parse the schematic or generate any
file. Device-tree and test-scaffold generation are not KiCad features;
implementing them is future work.
Editor-type filtering (--editor-type)
The --editor-type flag is accepted by the CLI but tool filtering is not yet
implemented. All routers are exposed regardless of the value passed. This is
reserved for future use.
Mutations
Board and project write operations (add tracks/vias/text/footprints, place
footprints, commit/save) are disabled by default for safety. Set
KICAD_MCP_ENABLE_MUTATIONS=1 (or pass --enable-mutations) to enable them.
Every mutation supports dry_run=true to preview without writing.
Contributing
See CONTRIBUTING.md for development setup, testing, and code style guidelines.
License
MIT. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP servers for KiCad schematic, PCB, symbol, footprint, and project automation, enabling AI-assisted electronic design via tools for read/write, analysis, and exports.1005MIT
- AlicenseBqualityAmaintenanceAn MCP server that enables AI assistants to analyze schematics, inspect PCBs, trace connections, validate designs, and generate embedded code for KiCad projects.3972MIT
- Flicense-qualityDmaintenanceA Model Context Protocol (MCP) server that exposes KiCad PCB design automation tools to AI assistants and other MCP clients.
- Alicense-qualityBmaintenanceAn MCP server providing full control over KiCad 10, enabling PCB editing, schematic editing, design data, and production output via natural language.MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for generating rough-draft project plans from natural-language prompts.
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/Akhil-Chaturvedi/KiCad-EDA-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server