KiCad MCP Server
Enables analysis of KiCad electronic schematics through natural language queries to search components, trace signal paths, explore connections, and analyze multi-board systems.
README
KiCad MCP Server
Model Context Protocol (MCP) server for analyzing KiCad schematics. Query components, trace nets, explore connections, and analyze multi-board systems through a simple tool interface.
Features
- Circuit Analysis: Load and analyze KiCad
.kicad_schfiles - Component Queries: Search, filter, and examine components with detailed pin information
- Net Tracing: Explore nets, trace signal paths, and find connection routes
- Multi-Board Systems: Analyze signals across multiple connected boards
- Smart Caching: Optional file caching for faster repeated queries
- Dynamic Configuration: Add/remove boards and systems without restarting
Installation
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
Requirements: Python 3.10+
Quick Start
1. Configure MCP Client
Add to your MCP client configuration (e.g., Claude Desktop's claude_desktop_config.json):
{
"mcpServers": {
"kicad": {
"command": "uv",
"args": [
"--directory",
"/path/to/kicad-mcp",
"run",
"kicad-mcp"
]
}
}
}
2. Create Configuration File
Create .kicad_mcp.yaml in your project directory:
boards:
main:
path: /path/to/main.kicad_sch
description: Main controller board
sensor:
path: /path/to/sensor.kicad_sch
description: Sensor board
systems:
complete:
boards: [main, sensor]
description: Full system with all boards
cache:
enabled: true
directory: ~/.cache/kicad_mcp
check_mtime: true
Configuration
Configuration files are searched in priority order:
- Environment variable:
$KICAD_MCP_CONFIG - Local project:
.kicad_mcp.yaml(current directory or parent directories) - Global config:
~/.config/kicad_mcp/config.yaml - Default: Empty configuration (no boards pre-loaded)
Configuration Options
- boards: Named board configurations with paths and descriptions
- systems: Multi-board system definitions referencing board names
- cache.enabled: Enable/disable pickle caching of parsed schematics
- cache.directory: Where to store cache files
- cache.check_mtime: Invalidate cache when source files change
Available Tools
Board Management
| Tool | Description |
|---|---|
list_configured_boards |
List all boards from configuration |
list_configured_systems |
List all multi-board systems |
load_board |
Load a board by name (with caching) |
load_system |
Load a multi-board system |
reload_config |
Reload configuration without restarting |
Configuration Management
| Tool | Description |
|---|---|
add_board |
Add a new board to configuration |
remove_board |
Remove a board from configuration |
add_system |
Add a new multi-board system |
remove_system |
Remove a system from configuration |
Circuit Analysis (Single Board)
| Tool | Description |
|---|---|
get_overview |
High-level schematic summary (component count, nets, categories) |
list_components |
List all components, optionally filtered by category |
list_nets |
List all nets, optionally power nets only |
examine_component |
Detailed component info (value, pins, connected nets) |
examine_net |
Detailed net info (connections, component types) |
check_pin_connection |
Find which net a specific pin connects to |
Connection Tracing (Single Board)
| Tool | Description |
|---|---|
trace_connection |
Find connection path between two components |
find_connected_components |
Find all components within N hops of a component |
Multi-Board Analysis
| Tool | Description |
|---|---|
get_system_overview |
Overview of multi-board system |
trace_cross_board_signal |
Trace a signal across multiple boards |
Usage Examples
Analyze a Single Board
# Get overview
get_overview(source="main")
# or use direct path:
get_overview(source="/path/to/board.kicad_sch")
# List all ICs
list_components(source="main", category="ICs")
# Examine a specific component
examine_component(source="main", reference="U1")
# Check what IC2 pin 5 connects to
check_pin_connection(source="main", reference="IC2", pin_number="5")
Trace Connections
# Find path between two components
trace_connection(source="main", start_ref="U1", end_ref="U5")
# Find everything connected to a regulator within 2 hops
find_connected_components(source="main", reference="U3", max_hops=2)
# Examine a power net
examine_net(source="main", net_name="VCC")
Multi-Board Systems
# Load and overview a system
load_system(system_name="complete")
get_system_overview(system_name="complete")
# Trace SPI signal across boards
trace_cross_board_signal(
system_name="complete",
signal_net="/MISO",
start_component="main:U1",
end_component="sensor:U2"
)
Dynamic Configuration
# Add a new board
add_board(
name="power",
path="/path/to/power.kicad_sch",
description="Power supply board"
)
# Create a system with it
add_system(
name="full_system",
boards=["main", "sensor", "power"],
description="Complete system with power"
)
# Reload after manual config edits
reload_config()
Source Parameter
Most analysis tools accept a source parameter which can be:
- Board name from configuration (e.g.,
"main") - Direct file path to a
.kicad_schfile (e.g.,"/path/to/board.kicad_sch")
System tools use system_name to reference configured multi-board systems.
Development
# Install with dev dependencies
uv sync --extra dev
# Run tests
pytest
# Format code
black src/
# Type checking
mypy src/
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.