mcpField
K
KiCad Tools

KiCad Tools

本地服务
github.com科研与教育155 天前更新

关于 KiCad Tools

mcp-server-kicad 为 KiCad 项目提供 MCP 工具,面向通过 AI 助手处理原理图、PCB 和制造输出的电子设计人员。它直接读写 KiCad 文件,并以仅修改指定字节为目标;项目目前处于维护模式,仅计划安全与兼容性修复。

主要功能

  1. 01原理图与 PCB 读取和编辑
  2. 02网络追踪及 ERC、DRC 检查
  3. 03符号与封装库浏览和编辑
  4. 04生成制造文件及设计导出
  5. 05可合并运行或拆分为五个服务

适用场景

  1. 01修改原理图并检查 ERC 结果
  2. 02调整 PCB 布局并运行 DRC
  3. 03追踪跨层级原理图网络
  4. 04导出 Gerber、BOM、PDF 或网表

MCP 相关

该项目提供 MCP 服务,将 KiCad 原理图、PCB、项目和库操作作为工具开放给 MCP 客户端;可统一运行,也可拆分为五个服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"productofamerica-mcp-server-kicad": {
"command": "uvx",
"args": [
"mcp-server-kicad"
]
}
}
}
启动命令uvx mcp-server-kicad

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-server-kicad0.21.1

工具

109

收录的工具列表 · 更新于 1 周前

参数类型必填说明
schematic_pathstring否

详细介绍

mcp-server-kicad

mcp-server-kicad

让 AI 助手编辑真实的 KiCad 项目,而不破坏项目文件。

109 个 MCP 工具,涵盖原理图绘制、PCB 布局、符号和封装库、ERC 和 DRC,以及制造文件导出。无需截图、复制粘贴,也无需手动编辑 s-expression:模型调用工具,KiCad 文件随之在磁盘上更改。

PyPI Python KiCad 测试 许可证

快速开始 • 功能一览 • 配置 • 工具参考 • 要求 • 贡献

重要

维护模式。 截至 2026 年 10 月,本项目仅提供安全修复和 KiCad 兼容性修复,不计划新增工具或功能。现有安装仍可正常使用。原因

为何进入维护模式

这个插件基于一个理念构建:KiCad 文件很大,因此 AI 助手应通过工具修改文件,而不是直接编辑文本。我们将这一理念与未安装插件、但已安装 KiCad 的普通 Claude Code 进行了测试:使用相同的模型(Claude Opus 5.5)、相同的设置和相同的任务,并由 KiCad 10 本身评判每项结果(网表、板子、ERC 和 DRC)。

  • 六项单独编辑,针对一个公开的 KiCad 10 设计(更改数值、设置为不贴装、替换封装、为焊盘分配网络、旋转封装、跨图纸重命名网络),每项运行三次。普通 Claude Code 18 次全部正确。使用插件时,18 次中只有 3 次正确。
  • 一次包含 20 项板级编辑的长会话。 两者都正确完成了所有编辑,而插件会话消耗的上下文约为 1.8 倍。
  • 通过阅读每份对话记录,发现插件失败的原因:
    • 某些编辑没有对应的工具(焊盘的网络、不贴装标记、替换单个封装)。
    • 插件指示模型绝不要直接编辑 KiCad 文件,因此模型停下来改为询问。
    • 板同步工具重写了板上几乎所有封装,导致模型撤销了自己的工作。
  • 这些测试未能验证最初的设想。 普通 Claude Code 修改了一个 2 MB 的板子,却没有读取整个文件:它搜索目标元件,只编辑所需的行。

这些都是针对单个设计的小规模测试,并不能代表所有板子或模型。但结果足以让我们停止添加工具。测试材料未公开,因为所用设计没有附带许可证。

替代方案: 使用安装了 KiCad 的编码 Agent,例如 Claude Code。要求它在完成前使用 kicad-cli 检查更改(导出网表、ERC、DRC)。

仍欢迎提交 KiCad 兼容性问题报告和修复。


效果展示

"Add a 100 nF decoupling cap on U1's VCC pin, then check ERC."

  get_pin_positions            locate U1's VCC and GND pins
  auto_place_decoupling_cap    place C3 and wire both pins to their nets
  run_erc                      report what the change broke

"Now push the netlist to the board and route it."

  update_pcb_from_schematic    sync footprints and pad nets onto the PCB
  autoroute_pcb                route with Freerouting
  run_drc                      clearance, width, and unconnected checks

每个工具都直接操作真实文件,写入操作只会更改你指定的字节。无法正确完成的编辑会被拒绝,并保持文件原样。KiCad 本身仅在两种情况下写入设计文件:升级库,以及 autoroute_pcb 生成布线副本时;后者会创建一块新板,不会改动你的板子。

快速开始

Claude Code

安装插件。它会配置服务器,并随附设计技能:

claude plugin marketplace add ProductOfAmerica/mcp-server-kicad
claude plugin install kicad
Claude Desktop

从最新版本下载 kicad-<version>.mcpb,然后依次从 Settings 和 Extensions 安装。 Claude Desktop 会获取 Python 和软件包本身;你需要安装 KiCad,此外,autoroute_pcb 还需要 Java 25 或更高版本。

Desktop 不会在你的项目目录中运行,因此请填写它要求提供的原理图、板和导出路径。除非 KiCad 安装在不常见的位置,否则 kicad-cli 字段留空即可。设计技能仅适用于 Claude Code。

其他所有客户端
pip install mcp-server-kicad

然后将 MCP 客户端指向统一服务器,并在 env 中用绝对路径指定原理图、板和导出文件夹,这样工具无需每次调用时都收到路径:

{
  "mcpServers": {
    "kicad": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad"],
      "env": {
        "KICAD_SCH_PATH": "/path/to/project/project.kicad_sch",
        "KICAD_PCB_PATH": "/path/to/project/project.kicad_pcb",
        "KICAD_OUTPUT_DIR": "/path/to/project"
      }
    }
  }
}

这一个条目会注册全部 109 个工具。如果客户端在你的项目文件夹中启动服务器,则可以省略 env:服务器会从其中唯一的 .kicad_pro 文件获取路径(参见路径解析方式)。 想把工具拆分到五个较小的服务器中?请参见配置。

你将获得

五个工具服务器

可将它们作为一个统一服务器运行,也可以在需要减少上下文中的工具数量时分别运行。

服务器工具数功能
mcp-server-kicad-schematic42原理图读写、网络追踪、ERC、导出(PDF、SVG、DXF、网表、BOM)
mcp-server-kicad-pcb34板读写、网表导入、覆铜区、DRC、自动布线、导出(Gerber、钻孔、3D、贴片文件)
mcp-server-kicad-project24项目框架搭建、层次化图纸、层次结构验证、注释、跨图纸网络追踪
mcp-server-kicad-symbol5符号库浏览、创建、SVG 导出、格式升级
mcp-server-kicad-footprint4封装库浏览、SVG 导出、格式升级
六项设计技能(Claude Code 插件)

仅有工具,就能让模型点击每个按钮。随附的技能会教它该点哪些按钮、按什么顺序操作,以及如何判断“完成”。

技能适用时机
using-kicad开始任何电子或 EDA 对话时。会引导至下方合适的技能
circuit-design在创建任何文件之前,选择拓扑结构、稳压器和元件值
schematic-plan规划精确的摆放坐标和连线。仅规划,不写入文件
schematic-design执行该计划,或修改现有原理图
pcb-layout摆放封装、布线、覆铜区、层叠结构和走线宽度
verification处理 ERC 和 DRC 故障、未连接网络以及导出准备

设计技能会先将其产物交给独立的审查子 Agent(agents/)检查,再继续下一步,因此不合格的 BOM 或摆放计划会在变成原理图之前被发现。

配置

拆分服务器

需要只加载部分工具时,可使用五个条目,而不是一个:

五服务器 MCP 配置
{
  "mcpServers": {
    "kicad-schematic": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad-schematic"]
    },
    "kicad-pcb": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad-pcb"]
    },
    "kicad-symbol": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad-symbol"]
    },
    "kicad-footprint": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad-footprint"]
    },
    "kicad-project": {
      "command": "uvx",
      "args": ["--from", "mcp-server-kicad", "mcp-server-kicad-project"]
    }
  }
}

除非客户端在项目文件夹中启动服务器,否则请为每个条目添加其他所有客户端中的 env 块;对于库服务器,还需设置 KICAD_SYM_LIB 或 KICAD_FP_LIB。

每个服务器也可以直接运行:

uvx --from mcp-server-kicad mcp-server-kicad-schematic
### 路径解析方式

优先级从高到低:

  1. 工具参数。 每个工具都接受显式路径。
  2. 环境变量。 环境变量会覆盖自动检测的任何内容。
  3. 自动检测。 扫描工作目录以查找 .kicad_pro,并据此推导原理图、板和库的路径。
变量指向
KICAD_SCH_PATH.kicad_sch 原理图文件
KICAD_PCB_PATH.kicad_pcb 电路板文件
KICAD_SYM_LIB.kicad_sym 符号库文件
KICAD_FP_LIB.pretty 封装库目录
KICAD_OUTPUT_DIR导出文件和报告的写入位置

要求

  • Python 3.11+

  • KiCad 9.x 或 10.x,仅供调用 KiCad 的工具使用:

    • kicad-cli:ERC、DRC、导出、作业集、get_version、库升级和 update_pcb_from_schematic
    • pcbnew Python 绑定:fill_zones 和 autoroute_pcb(后者还需要 Java 25 或更高版本;请参阅下载 Freerouting)
    • KiCad 自带库:放置自带符号或封装时需要

    其他所有工具都直接解析文件,无需 KiCad。

CI 覆盖 Linux(KiCad 9 和 10)、macOS 和 Windows(KiCad 10),以及 Python 3.11 到 3.14。

下载 Freerouting

autoroute_pcb 会运行 Freerouting。 除非 FREEROUTING_JAR 指定了 jar 文件,否则首次调用时会从 https://github.com/freerouting/freerouting/releases/download/v2.5.0/freerouting-2.5.0.jar 下载 Freerouting 2.5.0,即 freerouting-2.5.0.jar(65 MB,需要 Java 25 或更高版本),并将其缓存为 ~/.local/share/mcp-server-kicad/freerouting-2.5.0.jar (Windows 上为 %USERPROFILE%\.local\share\mcp-server-kicad\)。保存下载文件前,以及每次使用缓存副本时,都会将其 SHA-256 与此软件包中固定的值进行校验。校验不匹配的下载不会保存;校验不匹配的缓存副本不会运行,并会重新下载。

运行 Freerouting 时会使用 --gui.enabled=false 和 --usage_and_diagnostic_data.disable_analytics=true,这是其文档为无头运行和不发送使用数据提供的设置,因此不会打开窗口,分析功能也会保持关闭。启动时,Freerouting 仍会向 GitHub 查询最新版本;它没有提供关闭此功能的设置。

若要跳过下载,请将 FREEROUTING_JAR 设为你信任的 Freerouting jar 文件的绝对路径。该 jar 文件会按原样使用,不进行哈希校验。相对路径或指向不存在文件的路径会被忽略,程序将继续下载。较早版本会在同一文件夹中缓存未固定版本的 freerouting.jar;现在不再读取该文件,可以将其删除。

查找 KiCad 安装位置

标准安装无需配置。程序会先在 PATH 中查找 kicad-cli,然后查找 macOS 上的 /Applications/KiCad/KiCad.app,最后按从新到旧的顺序查找 Windows 上的 Program Files 和 AppData。自带库和 pcbnew 的 Python 会根据其位置查找。对于特殊安装:

变量覆盖内容
KICAD_CLI_PATHkicad-cli 可执行文件,以及根据其位置推导出的所有内容
KICAD_SYMBOL_DIR存放自带 .kicad_sym 库的目录
KICAD_PYTHONpcbnew 使用的解释器(fill_zones、autoroute_pcb),可设为绝对路径或 PATH 中的名称

如果没有 kicad-cli,需要它的工具仍会列出,但会报错并指出 KICAD_CLI_PATH。

KiCad 10 文件

该服务自身的读写功能同样支持 KiCad 9 和 10 的原理图、PCB、符号库和封装,且不会更改任何非指定字节(参见 docs/adr-cst-substrate.md)。交由 KiCad 自行处理的任务只有在安装版本能够加载文件时才能成功,而 KiCad 9 无法加载 KiCad 10 的 PCB:

  • fill_zones 和 autoroute_pcb 在启动前会拒绝使用 KiCad 9 pcbnew 处理 KiCad 10 的 PCB;请安装 KiCad 10,或将 KICAD_PYTHON 指向 KiCad 10。使用 KiCad 10 的 pcbnew 处理 KiCad 9 的 PCB 时,autoroute_pcb 可以正常工作,但会警告路由后的副本将以 KiCad 10 格式返回。它绝不会触碰原始 PCB。
  • upgrade_symbol_lib 和 upgrade_footprint_lib 会按设计交由 KiCad 重写文件。每个文件仅在内容发生变化时才会被原子替换,因此升级中断不会损坏任何文件。备份会保存为 <name>.bak,每次运行都会覆盖。
Windows:受控文件夹访问

Defender 的受控文件夹访问会阻止未识别的应用写入 Documents,而 KiCad 会在此处保存数据。因此,kicad-cli 每次调用时都会在启动阶段崩溃(退出代码 3221225477),包括 --version,且错误看起来像是文件缺失:error 2: The system cannot find the file specified。

该服务会尝试绕过此问题:将 KICAD_DOCUMENTS_HOME 指向一个不受保护的本地文件夹后重试一次,并在本次会话中继续使用该设置。你可以自行设置 KICAD_DOCUMENTS_HOME 来指定文件夹(这样会关闭重试)。

无法修复你的项目文件。 如果项目位于 Documents 下,写入工具也会以同样的方式失败。请移动项目,或前往 Windows 安全中心 > 病毒和威胁防护 > 勒索软件防护 > 允许应用通过受控文件夹访问,将这些工具加入允许列表。

工具参考

原理图(42 个工具)

读取

工具描述
get_schematic_summary获取原理图图纸中的项目数量
list_schematic_components列出图纸上的所有元件(符号)
list_schematic_labels列出图纸上的所有网络标签
list_schematic_wires列出图纸上的所有导线
list_schematic_global_labels列出图纸上的所有全局标签
list_schematic_hierarchical_labels列出图纸上的所有层次标签
list_schematic_sheets列出图纸上的所有层次图纸块
list_schematic_junctions列出图纸上的所有连接点
list_schematic_no_connects列出图纸上的所有未连接标记
list_schematic_bus_entries列出图纸上的所有总线入口
get_symbol_pins获取原理图 lib_symbols 中某个符号的引脚信息
get_pin_positions获取已放置元件的绝对引脚位置,并考虑旋转和镜像
get_net_connections获取指定网络的所有连接(通过多跳 BFS 追踪导线)
list_unconnected_pins列出 ERC 报告为未连接的引脚,位置以毫米为单位;子图纸有自己的引脚列表,根图纸取自其项目

写入

工具描述
place_component在原理图中放置元件
remove_component按位号移除元件
move_component移动或旋转已放置的元件。元件的字段会随之移动;导线保持原位,与 KiCad 自带的“移动”操作相同;结果会列出所有连接发生变化的引脚。在符号自身位置调用时,会在原地旋转符号,不会吸附
set_component_property设置已放置元件的任意属性(Value、Reference、Footprint 等)
add_lib_symbol将 .kicad_sym 库中的符号定义加载到原理图中
add_wires按照 KiCad 的导线工具方式,在点之间添加一条或多条导线:三条或更多导线或引脚相交处会形成连接点,导线会在此处分段
remove_wire移除一段导线
add_junctions在三条或更多导线或引脚相交处添加一个或多个连接点,并使穿过连接点的导线分段;其他位置不允许添加
remove_junction移除连接点,并合并其分隔的导线,效果与 KiCad 的删除操作相同
add_label在指定位置添加网络标签
remove_label移除网络标签或全局标签
add_global_label添加可在所有图纸间显示的全局网络标签
add_hierarchical_label添加用于图纸间连接的层次标签
remove_hierarchical_label按名称或 UUID 移除层次标签
modify_hierarchical_label修改层次标签的文本、形状或位置
add_power_symbol放置电源符号(VCC、GND、+3V3、PWR_FLAG 等)
add_text在原理图中添加文本注释
remove_text按内容移除文本注释,可按位置筛选
wire_pins_to_net将一个或多个引脚连接到指定网络
connect_pins将两个元件引脚连接起来
auto_place_decoupling_cap在 IC 附近自动放置去耦电容
no_connect_pin在未使用的引脚上放置无连接标记(幂等)
remove_no_connect移除引脚上的一个或多个无连接标记
set_page_size设置原理图页面尺寸

分析与导出

工具描述
run_erc运行电气规则检查,位置单位为毫米;从项目根目录检查子图纸,并为其生成单独的违规项;使用 project_path 指定项目;如果运行未生成报告,则会报错,并保留 output_dir 原有内容
export_schematic将原理图导出为 PDF、SVG 或 DXF
export_netlist导出原理图网表
export_bom将物料清单导出为 CSV
PCB(34 个工具)

读取

工具描述
list_pcb_footprints列出电路板上的所有封装
list_pcb_traces列出电路板上的所有走线
list_pcb_nets列出电路板上的所有网络
list_pcb_zones列出电路板上的所有区域
list_pcb_layers列出电路板上的所有层
list_pcb_graphic_items列出电路板上的所有图形项
get_board_info电路板摘要:封装数、走线数、网络数、厚度
get_footprint_pads获取已放置封装的焊盘信息
get_footprint_bounds获取已放置封装在电路板坐标中的边界框

写入

工具描述
place_footprint在电路板上放置封装
move_footprint将封装移动到新位置
remove_footprint按位号移除封装
add_trace在两点之间添加一段走线
remove_traces移除符合筛选条件的走线段
set_trace_width更改现有走线的宽度
remove_dangling_tracks检测并移除端点未连接的走线段
add_via在指定位置添加过孔
add_thermal_vias在封装焊盘下方添加网格状散热过孔
add_pcb_text在电路板上添加文本(丝印层、装配层等)
add_pcb_line添加图形线条(板边层、丝印层等)
add_copper_zone创建未填充的铜区
add_keepout_zone创建禁止区,限制走线、过孔、焊盘、铺铜或封装
fill_zones填充电路板上的所有铜区
set_net_class创建或更新带有设计规则的网络类
update_pcb_from_schematic将原理图网表导入或同步到电路板:封装及其字段和封装筛选条件、DNP 和 BOM 标志(KiCad 10 还包括位置文件标志)、图纸关联和焊盘网络;通过项目和用户的 fp-lib-table 加载库

分析和导出

工具描述
run_drc对电路板运行设计规则检查
check_placement检查拟放置的封装位置是否与禁止区或板边冲突
validate_board检查每个已放置的封装是否与禁止区或板边冲突
autoroute_pcb使用 Freerouting 自动布线器进行走线
export_pcb将电路板图层导出为 PDF、SVG 或 DXF
export_gerbers导出所有图层或指定图层列表的 Gerber 文件
export_3d导出 3D 模型(STEP/STL/GLB),或将 3D 视图渲染为 PNG
export_positions将贴片位置文件导出为以毫米为单位的 CSV
export_ipc2581导出为 IPC-2581 格式,以交换制造数据
项目(24 个工具)

项目搭建

工具描述
create_project创建 KiCad 9 项目(.kicad_pro 和根 .kicad_sch;不含 .kicad_prl)
create_schematic创建空白原理图文件
create_symbol_library创建空白符号库文件
create_sym_lib_table创建 sym-lib-table 文件

图纸管理

工具描述
add_hierarchical_sheet添加层次图纸,并在子图纸中添加匹配标签;所有内容都会先经过检查,再进行写入
remove_hierarchical_sheet从父图纸中移除层次图纸块
modify_hierarchical_sheet修改图纸名称、文件、宽度或高度;调整大小时会使引脚保持在边缘,并移动连接到这些引脚的导线
move_hierarchical_sheet将图纸块移动到新位置,包括引脚
add_sheet_pin在图纸块的左边缘或右边缘的第一个空位添加引脚
remove_sheet_pin从层次图纸块中移除引脚
duplicate_sheet复制图纸:同时复制图纸块和子文件,分配最小可用页码,并将元件编号与原图纸错开;如果图纸本身包含子图纸,则不允许复制
reorder_sheet_pages通过重写页码,将图纸按给定顺序排列(即 KiCad 列出的顺序);请在根原理图上调用此工具

层次结构检查

| 工具 | 描述 | |------|-------------| | `is_root_schematic` | 检查原理图是否为项目根原理图或其中一个图页,包括项目下级文件夹中的图页;未被任何图页使用的文件为根原理图 | | `list_hierarchy` | 列出从根节点开始的完整图页层级树 | | `get_sheet_info` | 获取图页详情,包括引脚和标签的匹配状态 | | `validate_hierarchy` | 检查每个图页中的孤立标签和引脚、方向不匹配、重复位号、留在线路内的连接点和总线入口端,以及未连接标记和未接到镜像或旋转元件引脚上的线路端点;对于工具可修复的问题,还会提供对应的修复调用 |

跨图页分析

工具描述
trace_hierarchical_net通过引脚和标签跨层级追踪网络
list_cross_sheet_nets列出所有跨越图页边界的网络
get_symbol_instances列出根原理图中的符号实例

批注、导出、实用工具

工具描述
annotate_schematic自动分配位号,并遵循层级关系
export_hierarchical_netlist导出包含层级信息的网表(需要 kicad-cli)
flatten_hierarchy将层级原理图展平为新的单页文件,其网表与层级原理图一致;如果无法保持一致(例如跨图页总线名称),则拒绝操作且不写入任何内容
run_jobset对项目所在目录中的项目运行 KiCad 作业集;若没有运行任何任务或有任务失败,则返回错误
get_version获取 KiCad 版本信息
符号和封装库(9 个工具)

符号

工具描述
list_lib_symbols列出 .kicad_sym 库中的所有符号
get_symbol_info获取库符号的详细引脚和属性信息
add_symbol向 .kicad_sym 库添加新符号
export_symbol_svg将符号库导出为 SVG 图像
upgrade_symbol_lib将符号库升级为当前 KiCad 格式

封装

工具描述
list_lib_footprints列出 .pretty 库目录中的所有封装
get_footprint_info获取 .kicad_mod 文件的焊盘和轮廓详情
export_footprint_svg将封装导出为 SVG
upgrade_footprint_lib将封装库升级为当前 KiCad 格式

调试

使用 MCP Inspector手动驱动服务:

npx -y @modelcontextprotocol/inspector uvx --from mcp-server-kicad mcp-server-kicad

参与贡献

欢迎提交问题和拉取请求。开发环境设置请参阅 CONTRIBUTING.md,有关字节保留写入路径背后的架构决策,请参阅 docs/adr-cst-substrate.md。

许可证

GPL-3.0-or-later。截至 0.20.1(含)的版本采用 MIT 许可证;详见 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。