🔌 KiCad + KiCad-MCP-Server 安装与联动教程
一句话讲清两者关系:KiCad 是画 PCB 的软件本体,KiCad-MCP-Server 是一座桥——它通过 MCP(Model Context Protocol)协议,让 AI 助手(Claude / WorkBuddy / Cline 等)用自然语言直接读写 KiCad 的原理图和 PCB 文件,并可与正在运行的 KiCad 界面实时联动。
一、架构总览:它们是怎么"联动"起来的
核心结论: 联动有两个层次——
| 层次 | 后端 | 是否需要 KiCad 界面开着 | 改动如何同步到 UI |
|---|---|---|---|
| 文件级联动 | SWIG | ❌ 不需要(纯文件读写) | 人在 KiCad 里 File → Revert 或重开工程 |
| 实时联动 | IPC | ✅ 必须开着 | 改动立刻出现在 UI,无需手动刷新 |
两种后端可自动切换(auto 模式:优先 IPC,连不上就回退 SWIG)。
二、前置条件
| 组件 | 要求 | 说明 |
|---|---|---|
| KiCad | 9.0 或更高 | 必须自带 Python(pcbnew 模块),官方安装包默认自带 |
| Node.js | 18 或更高 | 运行 MCP Server(本机 22.x) |
| Python | 3.9+(用 KiCad 捆绑的) | Windows 捆绑 3.11,不要另装系统 Python |
| MCP 客户端 | 任一 | WorkBuddy / Claude Desktop / Claude Code / Cline / OpenCode |
三、第一步:安装 KiCad
- 到 kicad.org/download 下载官方安装包。
- Windows 安装时确认勾选 Python 组件(官方安装器默认勾选,务必保留)。
- 安装完成后,找到 KiCad 捆绑的 Python,验证
pcbnew模块可用:
|
|
⚠️ 路径坑(重点):KiCad 9.0 的老文档写的是
lib\python3\dist-packages,但 KiCad 10.0 的 Windows 实际布局是bin\Lib\site-packages。请以你自己机器上的import pcbnew能成功为准来定 PYTHONPATH,不要照抄老文档。
四、第二步:安装 KiCad-MCP-Server
|
|
⚠️ 最容易踩的两个坑:
- 必须用 KiCad 捆绑的 python.exe 装 requirements,装到系统 Python 里等于白装——MCP Server 启动时 import pcbnew 会失败。
npm run build不能省略,MCP 配置指向的是dist/index.js,不编译就没这个文件。
Python 依赖清单(requirements.txt 核心项)
| 包 | 作用 |
|---|---|
kicad-python (kipy) |
IPC 实时 UI 同步 |
kicad-skip |
原理图(.kicad_sch)读写 |
sexpdata |
S-expression 解析 |
Pillow / pymupdf / cairosvg |
板子/原理图渲染成 PNG |
colorlog / pydantic / requests / python-dotenv |
日志、校验、HTTP、环境变量 |
备选:仓库还提供了自动化脚本——Windows 用
setup-windows-opencode.ps1(针对 OpenCode 客户端),macOS 用setup-macos.sh(--verify/--dry-run/--apply)。手动装更通用,脚本装更省事。
五、第三步:配置 MCP 客户端,把两者接起来
MCP Server 通过 stdio 与客户端通信,客户端只需在配置文件里声明"用 node 跑 dist/index.js,并带上 KiCad 的 Python 路径"。
5.1 WorkBuddy(本机方案)
编辑 C:\Users\<用户名>\.workbuddy\mcp.json,在 mcpServers 里加:
|
|
5.2 Claude Desktop
配置路径:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
|
|
5.3 各平台 PYTHONPATH 速查
| 平台 | PYTHONPATH(site-packages 位置) |
|---|---|
| Windows (KiCad 10) | C:\Program Files\KiCad\10.0\bin\Lib\site-packages |
| Windows (KiCad 9) | C:\Program Files\KiCad\9.0\lib\python3\dist-packages |
| Linux | /usr/lib/kicad/lib/python3/dist-packages |
| macOS | /Applications/KiCad/KiCad.app/.../Versions/3.x/lib/python3.x/site-packages |
路径不确定时,直接运行
python -c "import pcbnew; print(pcbnew.__file__)",打印出来的目录就是 PYTHONPATH。
5.4 完整环境变量清单
| 变量 | 默认 | 作用 |
|---|---|---|
PYTHONPATH |
— | 必填,pcbnew 模块所在目录 |
KICAD_PYTHON |
自动检测 | 覆盖 KiCad 捆绑 python 路径(非标准安装用) |
KICAD_BACKEND |
auto |
后端选择:auto / ipc / swig |
KICAD_AUTO_LAUNCH |
false |
需要时自动启动 KiCad UI |
KICAD_EXECUTABLE |
自动检测 | 覆盖 KiCad 可执行文件路径 |
KICAD_INTERACTIVE_SCHEMATIC |
false |
Windows:原理图写入后自动触发 UI 重载 |
LOG_LEVEL |
info |
日志级别:error/warn/info/debug |
KICAD_MCP_DEV |
0 |
开发者模式,导出时保存会话日志 |
六、联动机制详解:两种工作模式
6.1 文件级联动(SWIG,默认可用,无需开 KiCad)
MCP 用 pcbnew 模块直接读写 .kicad_sch / .kicad_pcb 文件,KiCad 界面不用开着也能干活。
- AI → 人:AI 用 MCP 工具改完文件 → 人在 KiCad 里
File → Revert(或关闭重开 PCB/原理图编辑器)→ 看到改动。 - 人 → AI:人在 KiCad 里编辑 →
Ctrl+S保存 → AI 用get_board_info等工具读回最新状态。
特点:无需 GUI、稳定;但同步是"手动 save/reload",约 1~5 秒延迟,属于"近实时"。
6.2 实时联动(IPC,实验性,改动秒级上屏)
MCP 通过 kicad-python (kipy) 库,用 Protobuf over socket 直接连运行中的 KiCad 进程,改动立刻出现在 UI,无需手动刷新,还支持 undo/redo 事务。
开启条件(缺一不可):
- KiCad 9.0+ 正在运行;
- KiCad 内开启 IPC:
Preferences → Plugins → Enable IPC API Server; - 已安装
kicad-python(pip install kicad-python,requirements 里已含); - PCB 编辑器里打开了一个 board。
后端自动选择:启动时
auto模式先试 IPC,连不上自动回退 SWIG(文件操作仍可用);KiCad 稍后启动并开 IPC 后,下一次调用支持 IPC 的工具会自动重连切到 IPC。 注意"会话钉扎":一旦open_project把项目钉在 SWIG 上,本次会话不会中途升到 IPC,需在 GUI 里打开同一工程后重新open_project才会切到 IPC。
6.3 三种典型联动工作流
七、验证联动是否成功
7.1 确认 MCP Server 能启动
|
|
能稳定挂住不秒退,说明 pcbnew 导入成功(秒退基本就是 PYTHONPATH 不对)。
7.2 让 AI 跑一句冒烟测试
在客户端对话里说:
|
|
返回里重点看三个字段:
backend:ipc还是swigrealtime_sync:是否实时同步ipc_connected:IPC 是否已连上
7.3 端到端验证(文件级)
|
|
然后人工打开 KiCad 工程,确认元件确实在里面。
八、常见问题排查
| 现象 | 根因 | 解决 |
|---|---|---|
| MCP Server 秒退 | import pcbnew 失败 |
检查 PYTHONPATH 指向 KiCad 的 site-packages;用 KiCad 的 python.exe 验证 import pcbnew |
ModuleNotFoundError: No module named 'pcbnew' |
PYTHONPATH 错 / 装了系统 Python | 用 KiCad 捆绑 python 装依赖;核对 5.3 路径表 |
| 客户端里看不到 kicad server | 配置路径非绝对 / 没重启客户端 | 确认 dist/index.js 存在;完全退出并重开客户端 |
| AI 改了我看不见 | 没 reload | KiCad 里 File → Revert 或重开编辑器 |
| AI 读不到我的改动 | 没保存 | 先 Ctrl+S,再让 AI 读 |
| 想实时但一直是 swig | IPC 没开 | KiCad 开 Enable IPC API Server 并打开 board,再调一次工具重连 |
kicad-python not found |
没装 kipy | pip install kicad-python |
| Windows 脚本被拦 | 执行策略 | Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser |
看日志
日志默认在 ~/.kicad-mcp/logs/kicad_interface-<pid>.log(每个 Server 进程一个文件),排错优先看这里。
九、本机实际配置速查(Windows / KiCad 10.0)
| 项 | 值 |
|---|---|
| KiCad 安装目录 | D:\Program Files\KiCad\10.0 |
| KiCad 捆绑 Python | D:\Program Files\KiCad\10.0\bin\python.exe |
| PYTHONPATH | D:\Program Files\KiCad\10.0\bin\Lib\site-packages |
| MCP Server 目录 | F:\KiCAD-MCP-Server |
| MCP 入口 | F:\KiCAD-MCP-Server\dist\index.js |
| WorkBuddy 配置 | C:\Users\12889846\.workbuddy\mcp.json |
| Server 版本 | 2.8.2(MIT,已维护;另有下一代 Rust 版 Konnect) |
十、一句话总结
装 KiCad(带 Python)→ 装 Node → clone KiCAD-MCP-Server → 用 KiCad 的 python 装 requirements → npm run build → 在 MCP 客户端里配置
node dist/index.js+ 正确的 PYTHONPATH → 重启客户端。 默认走 SWIG 文件级联动(无需开 KiCad),要实时就在 KiCad 里开 IPC API Server 走 IPC 后端。