mixelpixx/KiCAD-MCP-Server
If you are the rightful owner of KiCAD-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
KiCAD MCP is a Model Context Protocol implementation that allows AI assistants to interact with KiCAD for PCB design using natural language.
KiCAD MCP Server
A production-ready Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with KiCAD for PCB design automation. Built on the MCP 2025-06-18 specification, this server provides comprehensive tool schemas and real-time project state access for intelligent PCB design workflows.
Overview
The Model Context Protocol is an open standard from Anthropic that allows AI assistants to securely connect to external tools and data sources. This implementation provides a standardized bridge between AI assistants and KiCAD, enabling natural language control of professional PCB design operations.
Key Capabilities:
- 52 fully-documented tools with JSON Schema validation
- 8 dynamic resources exposing project state
- Full MCP 2025-06-18 protocol compliance
- Cross-platform support (Linux, Windows, macOS)
- Real-time KiCAD UI integration
- Comprehensive error handling and logging
What's New in v2.1.0
Comprehensive Tool Schemas
Every tool now includes complete JSON Schema definitions with:
- Detailed parameter descriptions and constraints
- Input validation with type checking
- Required vs. optional parameter specifications
- Enumerated values for categorical inputs
- Clear documentation of what each tool does
Resources Capability
Access project state without executing tools:
kicad://project/current/info- Project metadatakicad://project/current/board- Board propertieskicad://project/current/components- Component list (JSON)kicad://project/current/nets- Electrical netskicad://project/current/layers- Layer stack configurationkicad://project/current/design-rules- Current DRC settingskicad://project/current/drc-report- Design rule violationskicad://board/preview.png- Board visualization (PNG)
Protocol Compliance
- Updated to MCP SDK 1.21.0 (latest)
- Full JSON-RPC 2.0 support
- Proper capability negotiation
- Standards-compliant error codes
Available Tools
The server provides 52 tools organized into functional categories:
Project Management (4 tools)
create_project- Initialize new KiCAD projectsopen_project- Load existing project filessave_project- Save current project stateget_project_info- Retrieve project metadata
Board Operations (9 tools)
set_board_size- Configure PCB dimensionsadd_board_outline- Create board edge (rectangle, circle, polygon)add_layer- Add custom layers to stackset_active_layer- Switch working layerget_layer_list- List all board layersget_board_info- Retrieve board propertiesget_board_2d_view- Generate board preview imageadd_mounting_hole- Place mounting holesadd_board_text- Add text annotations
Component Placement (10 tools)
place_component- Place single component with footprintmove_component- Reposition existing componentrotate_component- Rotate component by angledelete_component- Remove component from boardedit_component- Modify component propertiesget_component_properties- Query component detailsget_component_list- List all placed componentsplace_component_array- Create component grids/patternsalign_components- Align multiple componentsduplicate_component- Copy existing component
Routing & Nets (8 tools)
add_net- Create electrical netroute_trace- Route copper tracesadd_via- Place vias for layer transitionsdelete_trace- Remove tracesget_nets_list- List all netscreate_netclass- Define net class with rulesadd_copper_pour- Create copper zones/poursroute_differential_pair- Route differential signals
Library Management (4 tools)
list_libraries- List available footprint librariessearch_footprints- Search for footprintslist_library_footprints- List footprints in libraryget_footprint_info- Get footprint details
Design Rules (4 tools)
set_design_rules- Configure DRC parametersget_design_rules- Retrieve current rulesrun_drc- Execute design rule checkget_drc_violations- Get DRC error report
Export (5 tools)
export_gerber- Generate Gerber fabrication filesexport_pdf- Export PDF documentationexport_svg- Create SVG vector graphicsexport_3d- Generate 3D models (STEP/VRML)export_bom- Produce bill of materials
Schematic Design (6 tools)
create_schematic- Initialize new schematicload_schematic- Open existing schematicadd_schematic_component- Place symbolsadd_schematic_wire- Connect component pinslist_schematic_libraries- List symbol librariesexport_schematic_pdf- Export schematic PDF
UI Management (2 tools)
check_kicad_ui- Check if KiCAD is runninglaunch_kicad_ui- Launch KiCAD application
Prerequisites
Required Software
KiCAD 9.0 or Higher
- Download from kicad.org/download
- Must include Python module (pcbnew)
- Verify installation:
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"
Node.js 18 or Higher
- Download from nodejs.org
- Verify:
node --versionandnpm --version
Python 3.10 or Higher
- Usually included with KiCAD
- Required packages (auto-installed):
- kicad-skip >= 0.1.0 (schematic support)
- Pillow >= 9.0.0 (image processing)
- cairosvg >= 2.7.0 (SVG rendering)
- colorlog >= 6.7.0 (logging)
- pydantic >= 2.5.0 (validation)
- requests >= 2.32.5 (HTTP client)
- python-dotenv >= 1.0.0 (environment)
MCP Client Choose one:
- Claude Desktop - Official Anthropic desktop app
- Claude Code - Official CLI tool
- Cline - VSCode extension
Supported Platforms
- Linux (Ubuntu 22.04+, Fedora, Arch) - Primary platform, fully tested
- Windows 10/11 - Fully supported with automated setup
- macOS - Experimental support
Installation
Linux (Ubuntu/Debian)
# Install KiCAD 9.0
sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases
sudo apt-get update
sudo apt-get install -y kicad kicad-libraries
# Install Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Clone and build
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
npm install
pip3 install -r requirements.txt
npm run build
# Verify
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"
Windows 10/11
Automated Setup (Recommended):
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
.\setup-windows.ps1
The script will:
- Detect KiCAD installation
- Verify prerequisites
- Install dependencies
- Build project
- Generate configuration
- Run diagnostics
Manual Setup: See for detailed instructions.
macOS
# Install KiCAD 9.0 from kicad.org/download/macos
# Install Node.js
brew install node@20
# Clone and build
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
npm install
pip3 install -r requirements.txt
npm run build
Configuration
Claude Desktop
Edit configuration file:
- Linux/macOS:
~/.config/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Configuration:
{
"mcpServers": {
"kicad": {
"command": "node",
"args": ["/path/to/KiCAD-MCP-Server/dist/index.js"],
"env": {
"PYTHONPATH": "/path/to/kicad/python",
"LOG_LEVEL": "info"
}
}
}
}
Platform-specific PYTHONPATH:
- Linux:
/usr/lib/kicad/lib/python3/dist-packages - Windows:
C:\Program Files\KiCad\9.0\lib\python3\dist-packages - macOS:
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages
Cline (VSCode)
Edit: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Use the same configuration format as Claude Desktop above.
Claude Code
Claude Code automatically detects MCP servers in the current directory. No additional configuration needed.
Usage Examples
Basic PCB Design Workflow
Create a new KiCAD project named 'LEDBoard' in my Documents folder.
Set the board size to 50mm x 50mm and add a rectangular outline.
Place a mounting hole at each corner, 3mm from the edges, with 3mm diameter.
Add text 'LED Controller v1.0' on the front silkscreen at position x=25mm, y=45mm.
Component Placement
Place an LED at x=10mm, y=10mm using footprint LED_SMD:LED_0805_2012Metric.
Create a grid of 4 resistors (R1-R4) starting at x=20mm, y=20mm with 5mm spacing.
Align all resistors horizontally and distribute them evenly.
Routing
Create a net named 'LED1' and route a 0.3mm trace from R1 pad 2 to LED1 anode.
Add a copper pour for GND on the bottom layer covering the entire board.
Create a differential pair for USB_P and USB_N with 0.2mm width and 0.15mm gap.
Design Verification
Set design rules with 0.15mm clearance and 0.2mm minimum track width.
Run a design rule check and show me any violations.
Export Gerber files to the 'fabrication' folder.
Using Resources
Resources provide read-only access to project state:
Show me the current component list.
What are the current design rules?
Display the board preview.
List all electrical nets.
Architecture
MCP Protocol Layer
- JSON-RPC 2.0 Transport: Bi-directional communication via STDIO
- Protocol Version: MCP 2025-06-18
- Capabilities: Tools (52), Resources (8)
- Error Handling: Standard JSON-RPC error codes
TypeScript Server (src/)
- Implements MCP protocol specification
- Manages Python subprocess lifecycle
- Handles message routing and validation
- Provides logging and error recovery
Python Interface (python/)
- kicad_interface.py: Main entry point, MCP message handler
- schemas/tool_schemas.py: JSON Schema definitions for all tools
- resources/resource_definitions.py: Resource handlers and URIs
- commands/: Modular command implementations
project.py- Project operationsboard.py- Board manipulationcomponent.py- Component placementrouting.py- Trace routing and netsdesign_rules.py- DRC operationsexport.py- File generationschematic.py- Schematic designlibrary.py- Footprint libraries
KiCAD Integration
- pcbnew API: Direct Python bindings to KiCAD
- kicad-skip: Schematic file manipulation
- Platform Detection: Cross-platform path handling
- UI Management: Automatic KiCAD UI launch/detection
Development
Building from Source
# Install dependencies
npm install
pip3 install -r requirements.txt
# Build TypeScript
npm run build
# Watch mode for development
npm run dev
Running Tests
# TypeScript tests
npm run test:ts
# Python tests
npm run test:py
# All tests with coverage
npm run test:coverage
Linting and Formatting
# Lint TypeScript and Python
npm run lint
# Format code
npm run format
Troubleshooting
Server Not Appearing in Client
Symptoms: MCP server doesn't show up in Claude Desktop or Cline
Solutions:
- Verify build completed:
ls dist/index.js - Check configuration paths are absolute
- Restart MCP client completely
- Check client logs for error messages
Python Module Import Errors
Symptoms: ModuleNotFoundError: No module named 'pcbnew'
Solutions:
- Verify KiCAD installation:
python3 -c "import pcbnew" - Check PYTHONPATH in configuration matches your KiCAD installation
- Ensure KiCAD was installed with Python support
Tool Execution Failures
Symptoms: Tools fail with unclear errors
Solutions:
- Check server logs:
~/.kicad-mcp/logs/kicad_interface.log - Verify a project is loaded before running board operations
- Ensure file paths are absolute, not relative
- Check tool parameter types match schema requirements
Windows-Specific Issues
Symptoms: Server fails to start on Windows
Solutions:
- Run automated diagnostics:
.\setup-windows.ps1 - Verify Python path uses double backslashes:
C:\\Program Files\\KiCad\\9.0 - Check Windows Event Viewer for Node.js errors
- See
Getting Help
- Check the GitHub Issues
- Review server logs:
~/.kicad-mcp/logs/kicad_interface.log - Open a new issue with:
- Operating system and version
- KiCAD version (
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())") - Node.js version (
node --version) - Full error message and stack trace
- Relevant log excerpts
Project Status
Current Version: 2.1.0-alpha
Production-Ready Features:
- Project creation and management
- Board outline and sizing
- Layer management
- Component placement (with library integration needed)
- Mounting holes and text annotations
- Design rule checking
- Export to Gerber, PDF, SVG, 3D
- Schematic creation and editing
- UI auto-launch
- Full MCP protocol compliance
In Development:
- JLCPCB parts integration
- Digikey API integration
- Advanced routing algorithms
- Real-time UI synchronization via IPC API
- Smart BOM management
Roadmap:
- AI-assisted component selection
- Design pattern library (Arduino shields, RPi HATs)
- Interactive design review mode
- Automated documentation generation
- Multi-board projects
See for detailed development timeline.
Contributing
Contributions are welcome! Please follow these guidelines:
- Report Bugs: Open an issue with reproduction steps
- Suggest Features: Describe use case and expected behavior
- Submit Pull Requests:
- Fork the repository
- Create a feature branch
- Follow existing code style
- Add tests for new functionality
- Update documentation
- Submit PR with clear description
See for detailed guidelines.
License
This project is licensed under the MIT License. See for details.
Acknowledgments
- Built on the Model Context Protocol by Anthropic
- Powered by KiCAD open-source PCB design software
- Uses kicad-skip for schematic manipulation
Citation
If you use this project in your research or publication, please cite:
@software{kicad_mcp_server,
title = {KiCAD MCP Server: AI-Assisted PCB Design},
author = {mixelpixx},
year = {2025},
url = {https://github.com/mixelpixx/KiCAD-MCP-Server},
version = {2.1.0-alpha}
}