kicad编辑mcp
MCP服务器,用于手术KiCad原理图和项目编辑。与配对 kicad mcp服务器 (分析)为人工智能代理提供KiCad项目的结构化读/写访问权限。使用自定义的s表达式手术引擎——只有目标值会改变;其他内容保持字节不变。仅修改属性,不更改拓扑。
哲学
仅修改现有图元的属性。切勿更改电路拓扑或物理布局。
内容包括:
- 组件属性(值、额定值、MPN、数据表、DNP标志)
- 标题栏元数据(修订、日期、作者)
- 网络标签重命名(例如。
Net-(U1-PA5)→SPI1_SCK) - 净等级规则(轨道宽度、间隙、差速器设置)
故意排除的内容:
- 添加或删除元件(更改电路拓扑)
- 添加或删除导线(更改连接)
- 移动组件或迹线(空间--LLM看不到布局)
- PCB修改(物理布局——使用KiCad GUI)
- 库编辑(影响使用该库的所有项目)
这使得服务器可以安全地运行在生产原理图上——最坏的情况是属性值错误,很容易被审查并通过git恢复。
工具
| 工具 | 类型 | 描述 |
|---|---|---|
list_components | 读取 | 列出所有带有引用、值和封装的组件 |
get_component | 读取 | 通过引用指示符获取组件的所有属性,包括可见性信息 |
update_component | 写入 | 设置或删除组件属性;通过以下方式支持可见性控制 {"value": ..., "visible": bool} |
update_schematic_info | 写入 | 修改标题栏元数据(标题、修订、日期、作者、公司) |
rename_net | 在整个原理图中写入 | 重命名网络标签 |
list_net_classes | 阅读 | 列出网络类规则和模式作业 |
update_net_class | 编写 | 创建或修改网络类规则和模式作业 |
重要提示:KiCad缓存
KiCad将文件缓存在内存中。此服务器所做的更改是 在重新打开之前不可见:
| 文件已编辑 | 需要执行操作 |
|---|---|
.kicad_sch (原理图) | 关闭并重新打开原理图 |
.kicad_pro (项目/网络类) | 关闭并重新打开项目 |
Docker(推荐)
一次构建图像:
docker build -t kicad-edit-mcp .每个项目 .mcp.json
将KiCad项目目录装载到 /data 容器内部:
{
"mcpServers": {
"kicad-edit": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-v", "/path/to/kicad-project:/data",
"kicad-edit-mcp"]
}
}
}通过工具锁定 DISABLED_TOOLS:
{
"mcpServers": {
"kicad-edit": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-v", "/path/to/kicad-project:/data",
"kicad-edit-mcp"],
"env": { "DISABLED_TOOLS": "rename_net,update_net_class" }
}
}
}只读挂载(在文件系统级别无法写入):
{
"mcpServers": {
"kicad-edit": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-v", "/path/to/kicad-project:/data:ro",
"kicad-edit-mcp"]
}
}
}安装(本地,无Docker)
pip install fastmcp sexpdata或者诗歌:
poetry install本地注册
基本注册(启用所有工具):
claude mcp add kicad-edit-mcp -- python /path/to/server.py通过env var进行工具锁定:
DISABLED_TOOLS=rename_net,update_net_class claude mcp add kicad-edit-mcp -- python /path/to/server.py工具锁定(硬护栏)
默认情况下,工具处于启用状态(选择退出模式)。 禁用的工具从未在MCP注册 --LLM无法看到、调用甚至知道它们的存在。这是协议级别的硬护栏,而不是基于软提示的限制。
设置 DISABLED_TOOLS 将环境变量转换为逗号分隔的工具名称列表以禁用:
# Disable net editing tools
DISABLED_TOOLS=rename_net,update_net_class python server.py
# Disable all write tools
DISABLED_TOOLS=update_component,update_schematic_info,rename_net,update_net_class python server.py中的工具名称未知 DISABLED_TOOLS 触发stderr警告(拼写错误保护)。缺少名称默认为启用。
对于不列出每个写入工具的完全只读强制,请使用Docker只读卷挂载(/data:ro)--无论注册了哪些工具,文件系统都会强制执行它。
