使用说明
KiCad MCP服务器
用于分析KiCad印刷电路板的模型上下文协议(MCP)服务器。它 提供PCB分析工具包,具有多板原理图信号跟踪和 组件数据表查找,通过简单的工具界面公开。
单板原理图文本查询(元件列表、每网转储、单板
连接跟踪)已移动到同伴 kicad-schema 项目,呈现
原理图为结构化的YAML。此服务器专注于仍然难以进行的分析
以文本形式执行:跨板边界、数据表发现和PCB的信号
PCB分析工具构建的布局表面。
特性
- 多板分析:跨多个连接板跟踪信号
- 数据表查找:将制造商和零件号解析为数据表URL
- 电路板和系统配置:登记板和登记系统;在不重新启动的情况下添加或删除它们
- PCB来源:合伙人a
.kicad_pcbPCB分析工具的每个电路板布局 - PCB工具(kicad-cli):无头设计规则检查、3D板渲染和每层SVG导出
.kicad_pcb布局 - KiCad实时会话:通过官方IPC API连接到正在运行的KiCad 9 PCB编辑器,用于选择同步和可逆GUI交叉探测
- 智能缓存:解析原理图的可选文件缓存,以实现更快的重复查询
安装
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
需求:Python 3.10+和KiCad(用于 kicad-cli).服务器发现
kicad-cli 自动位于macOS应用程序捆绑包路径, /usr/bin,以及 PATH;set
这 KICAD_CLI 环境变量指向特定的可执行文件。
快速开始
1.配置MCP客户端
添加到您的MCP客户端配置中(例如,Claude Desktop的 claude_desktop_config.json):
{
"mcpServers": {
"kicad": {
"command": "uv",
"args": [
"--directory",
"/path/to/kicad-mcp",
"run",
"kicad-mcp"
]
}
}
}
2.创建配置文件
创建 .kicad_mcp.yaml 在您的项目目录中:
boards:
main:
path: /path/to/main.kicad_sch
pcb: /path/to/main.kicad_pcb # optional: PCB layout for PCB-analysis tools
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
配置
配置文件按优先级顺序搜索:
- 环境变量:
$KICAD_MCP_CONFIG - 本地项目:
.kicad_mcp.yaml(当前目录或父目录) - 全局配置:
~/.config/kicad_mcp/config.yaml - 默认:空配置(未预装电路板)
配置选项
- 板子:命名板配置。每块板都有:
path:路径到.kicad_sch原理图文件pcb(可选):路径到.kicad_pcbPCB分析工具使用的布局文件description(可选):人类可读的描述
- 系统:引用板名称的多板系统定义
- cache.enabled:启用/禁用解析原理图的pickle缓存
- cache.directory:缓存文件的存储位置
- cache.check_mtime:源文件更改时使缓存无效
可用工具
董事会管理
| 工具 | 说明 |
|---|---|
list_configured_boards |
列出配置中的所有板 |
list_configured_systems |
列出所有多板系统 |
load_board |
按名称加载电路板(带缓存) |
load_system |
加载多板系统 |
reload_config |
重新加载配置而不重新启动 |
配置管理
| 工具 | 说明 |
|---|---|
add_board |
在配置中添加新板(原理图 path,可选 pcb) |
remove_board |
从配置中删除板 |
add_system |
添加新的多板系统 |
remove_system |
从配置中删除系统 |
多板分析
| 工具 | 说明 |
|---|---|
get_system_overview |
多板系统概述 |
trace_cross_board_signal |
跨多个板跟踪信号 |
数据表
| 工具 | 说明 |
|---|---|
search_datasheet |
将制造商和零件号解析为数据表URL |
PCB布局(kicad-cli)
这些工具在 .kicad_pcb 通过KiCad的无头布局 kicad-cli.
这 source 参数接受已配置的板名(使用其 pcb 路径),a
通往a的直接路径 .kicad_pcb,或通往 .kicad_sch (决心
兄弟姐妹 .kicad_pcb).
| 工具 | 说明 |
|---|---|
pcb_drc |
运行设计规则检查;返回按规则分组的违规,包括严重性、mm坐标、总计和JSON报告路径。 故障已关闭 --失败的运行会返回显式错误,而不会返回错误的干净传递。接受 severity 和 max_violations 过滤器。 |
pcb_render |
将电路板以3D形式渲染为PNG,以内联图像加上保存的文件路径的形式返回。相机控制: side, zoom, rotate, pan, pivot, perspective, floor, width, height, quality, background. |
pcb_export_layers |
每层导出一个SVG(例如。 F.Cu,B.Cu,Edge.Cuts)并返回文件路径。 fit 默认为 board (仅板面积)用于下游种植。 |
底层包装存在 kicad_mcp.kicad_cli 并且可以作为普通商品进口
功能,因此非MCP消费者(如需要的裁剪/突出显示工具
每层安装的板面积SVG)可以直接调用它们。
PCB布局(解析模型)
这些工具读取一个键入的内存模型 .kicad_pcb (放置,铜,
堆栈、焊盘、轨道、通孔、区域)用纯Python解析 kiutils 图书馆
并缓存为 (path, mtime) --没有 kicad-cli 过程。他们的 source 解决
通过 KiCadMCPConfig.resolve_pcb_source (已配置的电路板 pcb 路径,a
直接的 .kicad_pcb 路径,或a .kicad_sch 兄弟姐妹)。可查询模型仍然存在
在 kicad_mcp.pcb_model;直接2D PNG渲染存在
kicad_mcp.pcb_rendering.
| 工具 | 说明 |
|---|---|
pcb_overview |
电路板尺寸、层/堆叠汇总、占地面积/轨道/通孔/区域计数、净计数和按铜元素计数的顶部网络 |
pcb_component |
组件的位置(位置、侧面、旋转)、封装id和焊盘及其网络 |
pcb_components_near |
放置在组件半径(mm)内的足迹,距离 |
pcb_net_route |
一个网络的布线铜缆长度、层使用、宽度、通孔、端点和铜岛连接 |
pcb_diff_pair |
差分对的长度和通孔计数比较,以及常见对的名称推断 _P/_N 和 +/- 惯例 |
pcb_net_lengths |
匹配glob或正则表达式的网络的排序路由长度 |
pcb_current_capacity |
使用IPC-2221追踪电流公式,按最弱瓶颈排序,对匹配网络的模式优先电流容量进行估计 |
pcb_impedance_estimate |
模式优先或假设迹线IPC-2141阻抗估计,包括解析匹配对时的耦合差分估计 |
pcb_crop |
组件的内联PNG裁剪、网络的铜边界或显式的板坐标窗口;返回MCP图像内容和保存的路径 |
pcb_highlight_net |
内联PNG,带有一个在昏暗的铜板上绘制的明亮网格,包括较低的阿尔法区域;返回MCP图像内容和保存的路径 |
电气估算——IPC-2221载流量和IPC-2141阻抗
pcb_current_capacity 和 pcb_impedance_estimate 是估算工具,不是
热模拟或场求解器。他们使用相同的模式优先行为
pcb_net_lengths:glob或正则表达式匹配网络并返回表
在所有比赛中。当恰好有一个网匹配时, pcb_current_capacity 附加
每个分段的详细信息 (layer, width) 几何。
pcb_current_capacity 根据铜宽度估计每个布线轨道几何形状,
使用
IPC-2221内部或外部迹线电流公式,适用于该层。
行按估计的水流升序排列,因此最弱的脖子排在第一位;
min_current_a 将表格转换为通过/标记检查。估计通过桶数
IPC-2221使用所述镀层假设。
pcb_impedance_estimate 报告IPC-2141封闭式微带或带状线
每个匹配项的估计值 (layer, width) 几何,或用于假设
width_mm 加 layer 当迭代到目标宽度时。如果一个模式
解析为现有的微分对 _P/_N 或 +/- 习俗,
它从路线几何图形中导出相同的层间距,并附加耦合
差分估计。
这两种工具总是打印假设。缺少堆叠铜厚度默认值 至0.035毫米(1盎司),通孔镀层默认为25µm,缺少电介质 只有当高度仍然可以推导出或为 明确提供。对于没有堆叠的双层板,阻抗使用板 厚度减去两片35µm铜箔;无电介质多层板 厚度通过明确的信息拒绝受影响的层。携带的网 由于浇注横截面未建模,因此标记了区域,因此轨迹 颈部可能不是真正的电流限制。
KiCad现场会议(IPC API)
这些工具通过KiCad的官方网站与正在运行的KiCad 9 PCB编辑器进行对话
kicad-python (kipy)IPC客户端。它们与基于文件的PCB不同
上面的模型工具:它们在用户可见的KiCad GUI会话上运行并失败
当无法访问IPC服务器时关闭。要使用它们,请在中启用KiCad的API服务器
KiCad首选项→ 插件,然后在PCB编辑器中保持目标PCB打开。这
服务器尝试KiCad的默认IPC套接字,或 KICAD_API_SOCKET 当那
环境变量已设置,每次IPC调用都使用一个短超时,因此MCP
服务器未挂起。
KiCad 9 Python IPC界面公开了开放文档发现、板项
查询、选择读/写、网络查询和逐项网络查询。它没有
在中显示键入的缩放或平移命令 kicad-python 0.7.1,因此实时焦点选择
目标足迹或项目以及视图居中的报告不可用
而不是制造GUI状态。
| 工具 | 说明 |
|---|---|
kicad_session |
报告KiCad IPC是否可访问、KiCad版本、尝试的API套接字和打开的PCB文档路径 |
kicad_focus |
选择足迹 reference 或一块板 position (x_mm, y_mm)在正在运行的PCB编辑器中;当IPC客户端无法进行视图居中时,报告为不支持视图居中 |
kicad_highlight_net |
选择带电板网上的所有可选铜缆项目,以便KiCad在GUI中明显突出显示已布线的网络 |
kicad_get_selection |
将用户当前的GUI选择作为引用、网络、项目类型和项目摘要读取,这些内容与解析的模型工具(如 pcb_component 和 pcb_net_route |
kicad_open_board |
解析已配置的电路板或PCB路径 KiCadMCPConfig.resolve_pcb_source,然后关闭失败,因为KiCad 9的Python IPC客户端没有公开开放板命令 |
使用示例
多板系统
# 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"
)
数据表查找
search_datasheet(
manufacturer="Texas Instruments",
part_number="ADS1299IPAGR"
)
动态配置
# Add a new board, including its PCB layout
add_board(
name="power",
path="/path/to/power.kicad_sch",
pcb="/path/to/power.kicad_pcb",
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()
发展
# Install with dev dependencies
uv sync --extra dev
# Run tests
uv run pytest
# Lint
uv run ruff check src/
许可证
麻省理工学院