Skip to main content

kicad-mcp-kipy

KiCad MCP server for KiCad 10 — powered by kipy, the official KiCad Python API.

Connects AI assistants (Claude, Bob, etc.) to a running KiCad 10 instance via the Model Context Protocol, enabling real-time inspection and control of schematics and PCB layouts.

Why kicad-mcp-kipy?

kicad-mcp (Huaqiu) kicad-mcp-kipy
KiCad 10 support ❌ (KiCad 9 JSON API) ✅ (KiCad 10 Protobuf API)
macOS process detection ❌ (Issue #3)
Dependencies 115 packages ~40 packages
Python API Custom JSON/NNG kipy (official KiCad bindings)

Requirements

  • KiCad 10.x (macOS / Linux / Windows)
  • Python 3.11+
  • uv (recommended) or pip

Installation

Using uvx (recommended — no install needed)

uvx kicad-mcp-kipy

Using pip

pip install kicad-mcp-kipy
kicad-mcp-kipy

Setup

1. Enable KiCad IPC API

In KiCad's Schematic Editor or PCB Editor:

Preferences → Preferences → Scripting → Enable IPC API

2. Register in your MCP client (Bob / Claude Desktop)

.bob/mcp.json (workspace-level):

{
  "mcpServers": {
    "kicad": {
      "command": "uvx",
      "args": ["kicad-mcp-kipy"]
    }
  }
}

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "kicad": {
      "command": "uvx",
      "args": ["kicad-mcp-kipy"]
    }
  }
}

3. Open a project in KiCad

Open your schematic or PCB file in KiCad before connecting — the IPC API is only active when an editor is open.

Available Tools

General

Tool Description
get_kicad_version Get running KiCad version
get_open_documents List open schematic / PCB files
run_action Execute a KiCad menu action (e.g. "zoom_fit_in_window")

Schematic

Tool Description
schematic_get_symbols Get all symbols (reference, value, position)
schematic_get_labels Get all net labels
schematic_get_title_block Get title block info
schematic_get_as_string Get schematic as KiCad S-expression text
schematic_get_hierarchy Get hierarchical sheet structure
schematic_save Save the schematic

PCB

Tool Description
pcb_get_footprints Get all footprints (reference, value, position, layer)
pcb_get_tracks Get all tracks (start, end, layer, width)
pcb_get_vias Get all vias (position, drill size)
pcb_get_nets Get all nets (name, number)
pcb_get_enabled_layers Get enabled layer list
pcb_get_stackup Get board stackup (layer structure, thickness)
pcb_get_title_block Get PCB title block info
pcb_get_as_string Get PCB as KiCad S-expression text
pcb_save Save the PCB

How it works

AI Assistant (MCP Client)
    ↕  stdio (JSON-RPC)
kicad-mcp-kipy (MCP Server)
    ↕  pynng / NNG IPC socket  (/tmp/kicad/api.sock)
KiCad 10 IPC API Server (built-in)
    ↕  C++ SDK
KiCad Schematic / PCB Editor

KiCad 10 exposes a Protobuf-based IPC API over a local NNG socket. kipy provides Python bindings for this API. This server wraps those bindings as MCP tools.

Development

git clone https://github.com/mnori0211/kicad-mcp-kipy
cd kicad-mcp-kipy
uv sync
uv run kicad-mcp-kipy

Related

License

MIT — see LICENSE

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kicad_mcp_kipy-0.1.1.tar.gz (60.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kicad_mcp_kipy-0.1.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file kicad_mcp_kipy-0.1.1.tar.gz.

File metadata

  • Download URL: kicad_mcp_kipy-0.1.1.tar.gz
  • Upload date:
  • Size: 60.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for kicad_mcp_kipy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f68525f49516bbbf8d3edf10541eaf54fdfc0050593afd1656978b0ce197df8c
MD5 21b02b196c1e1312559a4e076edaaf91
BLAKE2b-256 2db6f07f7e959dffa58797b0c4307ca31a416374532a5bc1b35e80d8bed48d85

See more details on using hashes here.

File details

Details for the file kicad_mcp_kipy-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: kicad_mcp_kipy-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for kicad_mcp_kipy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc0c7f8875e7b2092084ec0ab4070f44b572dafe2479de6c91ea8b5eb1baaa57
MD5 e2bfe15c800cfac578cfc74b435f78c5
BLAKE2b-256 e7a69e6eb481606bff5495d5207434e270a2b19e9ea81b49b7bf60f93aa38a6f

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page