代理kicad管道
KiCad 9.0用于AI代理的PCB设计自动化。
提供 FastMCP服务器 (pcb-pipeline)它公开了八个高级工具,涵盖了整个PCB设计流程,以及一组 零号特工技能 和 子代理配置文件 用于多代理编排。
适用于任何支持MCP的代理框架(agent Zero、Claude Desktop、Cursor等)。
______________________________________________________________________
里面是什么
agent-kicad-pipeline/
├── pcb-pipeline/ FastMCP server — the core artifact
│ ├── pcb_pipeline_mcp.py 8 high-level MCP tools
│ ├── schematic_builder.py Auto-layout schematic + netlist from component/net lists
│ ├── pcb_placer.py Connectivity-aware footprint placement (no pcbnew needed)
│ ├── requirements.txt fastmcp
│ └── settings-snippet.json MCP server config block for Agent Zero settings.json
│
├── pcb-design-agents/ Agent Zero sub-agent profiles (5 consolidated agents)
│ ├── pcb-orchestrator/ Router: gathers requirements, calls pcb_init, manages gates
│ ├── pcb-schematic/ Calls pcb_schematic(components[], nets[]) — no coordinates
│ ├── pcb-layout-drc/ pcb_layout → DRC loop → pcb_route → post-DRC (full cycle)
│ ├── pcb-finalize/ Quality check + pcb_export (task: "quality" or "export")
│ └── pcb-vision-parts/ Vision-based part/footprint identification (optional)
│
├── kicad-project-init/ Skill: scaffold a new KiCad project
├── kicad-schematic-design/ Skill: schematic entry scripts
├── kicad-pcb-layout/ Skill: footprint placement scripts
├── kicad-route-pcb/ Skill: Freerouter auto-routing
├── kicad-run-drc/ Skill: DRC checks
├── kicad-manufacturing-export/ Skill: Gerber / BOM / CPL / STEP export
├── kicad-create-custom-symbol/ Skill: custom symbol creation
├── kicad-create-custom-footprint/ Skill: custom footprint creation
├── kicad-import-dxf/ Skill: import DXF board outlines
│
├── install_pcb_pipeline.sh Installer: copy + pip-install into Docker container
└── run_agent_zero.sh Docker startup script (skills-venv, Xvfb, env vars)______________________________________________________________________
pcb流水线MCP工具
| 工具 | 输入 | 它的作用 |
|---|---|---|
pcb_init | 项目名称、板尺寸、工厂 | 创建项目脚手架(dirs, .kicad_pro,占位符示意图) |
pcb_schematic | components[], nets[] | 自动放置符号,生成 .kicad_sch + .net — 无需坐标 |
pcb_search_lib | 查询,类型 | 搜索符号/封装库,返回 lib_id 准备使用的字符串 |
pcb_layout | 项目目录,可选提示 | 导入网表→ PCB,运行连接感知足迹放置 |
pcb_route | 项目目录 | 通过Freerouter JAR自动路由 |
pcb_drc | 项目目录 | 运行KiCad DRC,返回结构化违规列表 |
pcb_export | 项目目录,工厂 | 导出Gerbers、钻孔、BOM、CPL、原理图PDF、PCB PDF、STEP |
pcb_status | 项目目录 | 返回当前阶段、文件列表和统计信息 |
为什么使用管道服务器而不是单个MCP调用?
生的 kicad-mcp 工具需要30-50多次单独调用才能完成一个完整的电路板,并暴露出几个可靠性陷阱:
run_ercKiCad 9上的无头分段故障(SIGSEGV)update_pcb_from_schematic在没有实时显示的情况下发生故障pcbnew.LoadBoard()悄无声息地回来了None没有DISPLAY=:99- 代理必须在每次呼叫时手动计算组件坐标
管道服务器在服务器端处理所有环境复杂性。代理人描述 *什么* 建设;服务器知道了 *怎么*.
______________________________________________________________________
快速启动
先决条件(Docker容器)
- KICAD 9.0(
apt-get install kicad在Kali Linux上) - Java
apt-get install default-jre-headless)--Freerouter需要 - 自由路由JAR
/a0/usr/freerouting/freerouting.jar - Xvfb持续打开
:99(开始于run_agent_zero.sh) - Agent Zero Docker镜像:
agent0ai/agent-zero:latest
安装MCP服务器
# From the macOS host — copies scripts into data volume, installs fastmcp
./install_pcb_pipeline.sh agent-zero然后添加 pcb-pipeline 阻止来自 pcb-pipeline/settings-snippet.json 进入 mcp_servers JSON字符串 ~/agent-zero-data/settings.json:
"pcb-pipeline": {
"type": "stdio",
"command": "/a0/usr/skills-venv/bin/python3",
"args": ["/a0/usr/tools/pcb-pipeline/pcb_pipeline_mcp.py"],
"autoApprove": [],
"env": {
"KICAD_CLI_PATH": "/usr/local/bin/kicad-cli-xvfb",
"KICAD_SYMBOL_LIBS": "/kicad-support/symbols",
"KICAD_FOOTPRINT_LIBS": "/kicad-support/footprints",
"FREEROUTING_JAR": "/a0/usr/freerouting/freerouting.jar",
"SKILLS_DIR": "/a0/usr/skills"
}
}部署Agent Zero技能和配置文件
# Copy skills into the project
cp -r kicad-*/ ~/agent-zero-data/projects/pcb-design/.a0proj/skills/
# Copy sub-agent profiles
cp -r pcb-design-agents/*/ ~/agent-zero-data/projects/pcb-design/.a0proj/agents/______________________________________________________________________
代理提示示例
Design a 3-channel LED driver board.
Components:
U1 NE555 timer Timer:NE555 Package_SO:SOIC-8_3.9x4.9mm_P1.27mm
R1 10Ω resistor Device:R Resistor_SMD:R_0402_1005Metric
R2 10Ω resistor Device:R Resistor_SMD:R_0402_1005Metric
R3 10Ω resistor Device:R Resistor_SMD:R_0402_1005Metric
D1 red LED Device:LED LED_SMD:LED_0603_1608Metric
D2 red LED Device:LED LED_SMD:LED_0603_1608Metric
D3 red LED Device:LED LED_SMD:LED_0603_1608Metric
C1 100nF decoupling Device:C Capacitor_SMD:C_0402_1005Metric
J1 2-pin connector Connector:Conn_01x02 Connector_PinHeader_2.54mm:PinHeader_1x02
Nets:
VCC → U1.8, C1.1, J1.1
GND → U1.1, C1.2, R1.2, R2.2, R3.2, J1.2
OUT → U1.3, R1.1, R2.1, R3.1
CH1 → R1.2, D1.A
CH2 → R2.2, D2.A
CH3 → R3.2, D3.A
GND → D1.K, D2.K, D3.K
Board: 50×40mm, target JLCPCB.编排者通过示意图进行委派→ 布局→ 路线→ DRC → 出口,返回a fab/ 文件夹已准备好上传。
______________________________________________________________________
Docker环境
这 skills-venv 在 /a0/usr/skills-venv/ 由创建 run_agent_zero.sh 并坚持 agent-zero-data 音量。它包含 fastmcp, ezdxf, svgwrite,以及 reportlab.
系统 python3 在 /usr/bin/python3 提供 pcbnew (与KiCad软件包一起安装)。
关键环境变量:
KICAD_CLI_PATH=/usr/local/bin/kicad-cli-xvfb # wrapper: DISPLAY=:99 exec kicad-cli
DISPLAY=:99 # persistent Xvfb (run_agent_zero.sh)
FREEROUTING_JAR=/a0/usr/freerouting/freerouting.jar______________________________________________________________________
已知的限制和解决方法
| 问题 | 此处使用的解决方法 |
|---|---|
run_erc KiCad 9上的SIGSEGV无头 | schematic_preflight.py 结构检查 |
update_pcb_from_schematic 无头失败 | sch_to_pcb_sync.py 字符串操作同步 |
export_bom_csv MCP工具损坏 | generate_bom.py 回退+从PCB文本中内联BOM |
pcbnew.LoadBoard() 沉默 None | 所有pcbnew调用都使用 DISPLAY=:99 在子进程环境中 |
track_count 始终为0发布路线 | pcb_drc unconnected_count 用作路由完整性代理 |
______________________________________________________________________
安全说明
settings.json 文件被排除在外 .gitignore -它们可以包含模型API基础URL。 永不承诺 *.env, secrets.env,或任何 settings.json 文件夹。 API密钥存储在 ~/agent-zero-data/.env 在主机上,而不是在此存储库中。
______________________________________________________________________
许可证
麻省理工学院