电路设计工具软件KiCad对接AI的MCP Server

KiCad MCP Server 项目为 KiCad 电子设计自动化软件提供一个 Model Context Protocol (MCP) 服务端接口,使大型语言模型(LLM,如 Claude)能够通过自然语言与 KiCad 项目进行交互pulsemcp.com。该服务器充当 AI 助手与 KiCad 之间的桥梁,支持读取工程信息、执行设计检查以及生成可视化结果等功能,从而提升电路设计的分析、验证和故障排查能力pulsemcp.com

该项目的主要功能包括:

  • 项目管理:扫描和列出指定目录下的 KiCad 项目,支持查看项目详情并调用 KiCad 打开工程github.com。例如,用户可以请求“列出我最近的 KiCad 项目”,服务器将返回按修改时间排序的项目列表github.com
  • PCB设计分析:提供对 PCB 设计和原理图的指标分析,如元件密度、布局评估等github.com。例如询问“分析一下温度传感器板的元件密度”,服务器会计算板上元件的分布情况并给出见解github.com
  • Netlist 提取:从原理图提取网络连接关系,允许查询特定元件的连接情况github.com。例如询问“Arduino 扩展板中 MCU 引脚连接了哪些元件?”,服务器可返回该微控器引脚连接的所有元件列表github.com
  • BOM 管理:分析并导出物料清单(Bill of Materials),列出工程中所有元件及其数量github.com。例如命令“生成我的智能手表项目的 BOM”,服务器会生成详细的物料清单供用户查看或导出github.com
  • 设计规则检查 (DRC):通过 KiCad 提供的命令行接口运行设计规则检查,并支持对比历史检查结果github.com。例如请求“对我的电源板运行 DRC 并与上周的结果比较”,服务器会调用 KiCad CLI 执行 DRC,返回违例报告并指出与之前检查的差异github.com
  • PCB 可视化:生成 PCB 布局的可视化图像,如板卡缩略图或特定层的渲染图,用于直观展示设计github.com。例如“给我看我的音频放大器 PCB 的缩略图”,服务器将返回该电路板的可视化渲染图像github.com
  • 电路模式识别:自动识别原理图中常见的电路模块或拓扑结构github.com。例如询问“我的物联网设备中使用了哪种电源拓扑?”,服务器会分析原理图连接关系,识别其中是否存在降压(buck)、升压(boost)或线性稳压等电源电路模式github.com

通过以上功能,KiCad MCP Server 实现了 自然语言交互:用户可以使用日常语言提问或命令,LLM 会将其意图翻译为对 MCP 服务器的资源查询或工具调用,然后服务器执行相应操作并返回结果github.com github.com。这使非专家用户也能通过对话完成 PCB 项目管理和分析操作。

安装与运行说明

支持平台与环境要求:KiCad MCP Server 可在 macOS、Windows 和 Linux 系统上运行github.com。需要 Python 3.10 或更高版本、已安装 KiCad 9.0 或更高版本,以及一个 MCP 协议客户端(如 Claude Desktop)github.com。在开始之前,请确保上述环境就绪,并安装好 KiCad(KiCad 安装路径在配置中需指定,详见下文)。

主要依赖项:项目使用 Python 编写,依赖一些 Python 库,如 mcp[cli](提供 MCP 协议的SDK)、kicad-python(用于与 KiCad API交互)、httpx(HTTP客户端库,用于HTTP通信)、pandas(用于数据处理,可能用于BOM/DRC结果分析),以及 pytest(用于运行单元测试)。这些依赖会通过安装步骤中的 requirements.txt 进行统一安装。

安装步骤

  1. 获取源码:克隆项目仓库并进入目录。
    • git clone https://github.com/lamaalrajih/kicad-mcp.git
    • cd kicad-mcp
  2. 设置 Python 虚拟环境:创建并激活虚拟环境,以避免污染全局环境。
    • python3 -m venv venv
    • source venv/bin/activate # Windows下执行 venv\Scripts\activate
  3. 安装依赖:使用 pip 安装所需的库。
    • pip install -r requirements.txt #该命令会安装 MCP 协议 SDK 及其他依赖项github.com
  4. 配置环境:根据自身工程路径和KiCad安装位置,复制并修改环境配置文件 .env
    • cp .env.example .env
    • vim .env # 使用喜欢的编辑器打开 .env
      • .env 文件中,设置 KICAD_SEARCH_PATHS 为包含所有 KiCad 项目文件的目录列表(多个路径用逗号分隔)github.com github.com。例如: ini复制编辑KICAD_SEARCH_PATHS=~/pcb,~/Electronics,~/Projects/KiCad 如果 KiCad 安装路径不是默认路径,可通过 KICAD_APP_PATH 指定 KiCad 可执行程序的位置github.com(例如 KICAD_APP_PATH=/Applications/KiCad7/KiCad.app 对于macOS安装的 KiCad 7github.com)。此外,还可配置 KICAD_USER_DIR 来指定 KiCad 用户目录等设置github.com
  5. 运行服务器:环境配置完成后,启动 MCP 服务端:
    • python main.py
      • 终端将显示服务器初始化日志,表明 KiCad MCP Server 正在本地运行并等待客户端连接。
  6. 配置 MCP 客户端:以 Claude Desktop 为例,需要在 Claude Desktop 的配置中添加该 KiCad MCP Server。根据 README 提供的示例,在客户端的配置文件(如 claude_desktop_config.json)中加入类似如下的配置条目:
    • { "mcpServers": { "kicad": { "command": "/绝对/路径/到/项目/kicad-mcp/venv/bin/python", "args": [ "/绝对/路径/到/项目/kicad-mcp/main.py" ] } } }
      • 以上配置指明 Claude Desktop 在启动时应以指定的 Python 解释器运行 kicad-mcp 项目的 main.py,从而启动 KiCad MCP Servergithub.com。请确保填写实际的项目路径和 Python 路径。保存配置后,重新启动 Claude Desktop(或所使用的 MCP 客户端)使配置生效github.com

完成上述步骤后,Claude 等 MCP 客户端即可通过自然语言指令调用 KiCad MCP Server 提供的功能。例如,在聊天中询问PCB设计问题时,Claude 会将请求转发给本地运行的 KiCad MCP Server,获取结果后再以自然语言形式答复用户。

与 KiCad 的交互方式与接口逻辑

KiCad MCP Server 通过多种方式与 KiCad 软件交互,以实现对项目文件的访问和对KiCad功能的调用:

  • 项目文件访问:服务器会根据配置的 KICAD_SEARCH_PATHS 搜索 KiCad 项目文件(如 .kicad_pro 工程文件)github.com。当 LLM 请求列出或打开某项目时,服务器在这些路径下查找相应文件,并可返回项目列表或元数据信息。打开项目的请求则可能通过调用操作系统命令启动 KiCad 应用来打开指定工程。
  • 解析 KiCad 文件:服务器利用 KiCad 官方 Python API 或解析库(如 kicad-python)直接读取 KiCad 项目文件内容,包括原理图和 PCB 布局数据。这允许服务器提取 元件列表、网络连接(netlist) 等数据结构,用于回答有关元件连接关系、元件属性等查询。例如获取 netlist 时,服务器可能调用 KiCad 的 Python模块 (pcbneweeschema) 来提取网络表信息,再提供给 LLMgithub.com
  • 调用 KiCad 命令行接口 (CLI):对于某些需要 KiCad 内部运算的功能,服务器直接调用 KiCad 提供的命令行工具执行操作。例如设计规则检查(DRC)功能调用 KiCad CLI 运行 DRC 并获取结果github.com。KiCad 7+ 提供 kicad-cli 实用程序,可在无GUI模式下执行 DRC检查、生成网表或导出 BOM 等操作。KiCad MCP Server 会通过 Python 的 subprocess 调用这些 CLI 命令,传入项目文件路径来执行检查或导出,并将结果解析后反馈给 LLM。
  • 生成图形/渲染:对于 PCB 可视化请求,服务器可能调用 KiCad 的绘图命令(例如使用 pcbnew 的 Python接口生成板子的截图,或调用KiCad CLI导出PCB为图像)。这些生成的图像文件由服务器临时保存,并通过 MCP 协议作为资源传给 LLM,最终在对话界面中显示给用户github.com

在 MCP 接口逻辑上,KiCad MCP Server 遵循 Model Context Protocol 标准,实现了资源(Resources)工具(Tools)和提示(Prompts)三种交互组件github.com

  • 资源:即只读数据接口,提供KiCad项目信息给 LLM 使用。资源不会改变任何文件,仅返回信息。例如“项目列表”就是一个资源,LLM 请求该资源以获取所有项目名称路径;Netlist 提取、BOM 信息等也作为资源提供,只需读取数据github.com。资源函数通常封装在 kicad_mcp/resources/ 目录下,对应不同类别的信息。
  • 工具:即执行操作的接口,触发实际的软件操作或运算。Tools 可能更改状态或生成新的输出,如“运行DRC检查”就是一个工具,它会实际调用KiCad执行检查github.com;“生成PCB缩略图”也是工具,会生成图像文件。工具通常实现在 kicad_mcp/tools/ 目录下,每个工具对应一种可执行操作,LLM 调用工具会引发服务器执行相应逻辑,再将结果反馈。
  • 提示(Prompts):一些预定义的多步交互或复杂指令的模板。它们类似于脚本化的对话流程,帮助LLM处理常见任务。例如项目中提供了 debug_pcb_issues 这样的提示模板,用于一步步指导LLM定位和解决PCB问题。Prompts 定义在 kicad_mcp/prompts/ 下,LLM 可以根据需要调用特定 Prompt 来获取复杂任务的上下文指引。

底层通信方面,MCP 协议通常采用 JSON-RPC 2.0 风格的消息机制,MCP Server 通过标准输入输出或本地端口与 MCP Client 交换 JSON 消息。KiCad MCP Server 借助 MCP SDK(mcp[cli]库)实现了这些通信和调度逻辑,使其能够监听来自客户端的请求、解析请求调用相应的 resource/tool 函数,将结果封装为响应发送回去。整个过程对于最终用户是透明的:用户只需向 AI 提出请求,AI 客户端和 KiCad MCP Server 在幕后通过MCP接口完成数据查询和操作执行github.com github.com

简言之,KiCad MCP Server 内部将 KiCad 软件的功能封装成资源和工具接口,对外通过 MCP 协议提供服务,从而使 LLM 能够“听懂”用户的设计需求并在 KiCad 上加以执行,实现对 KiCad 项目的自然语言操控。

核心模块设计与职责

KiCad MCP Server 采用模块化设计,代码仓库结构清晰,主要模块及其职责如下表所示:

模块/文件职责描述及功能
main.py项目入口,启动 MCP 服务器。读取配置后初始化 Server 对象,注册各资源和工具,然后开始侦听来自客户端的请求。
kicad_mcp/server.pyMCP服务器的核心逻辑,设置服务器(如指定通信方式stdin/stdout),注册资源、工具和提示等。负责将LLM请求路由到相应处理函数,并将结果封装为响应。
kicad_mcp/config.py配置模块,定义常量和全局设置。例如KiCad默认搜索路径、KiCad可执行路径默认值等。读取环境变量或.env文件,将配置供其他模块使用。
kicad_mcp/context.py上下文管理模块,维护服务器运行期间的共享状态或生命周期相关信息。例如缓存上次查询的项目,或在服务器启动/停止时执行某些清理操作。
kicad_mcp/resources/资源处理包,包含多个Python文件,每个文件或函数提供一种数据资源获取功能github.com。例如可能有 projects.py 提供项目列表资源、netlist.py 提供网络表资源、bom.py 提供BOM资源等(具体文件名以实际实现为准)。这些资源不改变数据,只读出信息供LLM查询。
kicad_mcp/tools/工具处理包,包含实现各种可执行操作的模块github.com。每个工具对应一种操作,如 drc_tool.py 触发DRC检查、bom_tool.py 生成BOM文件、visualization_tool.py 渲染PCB图像等。工具函数中会调用KiCad相关API或CLI,并将结果处理后返回。
kicad_mcp/prompts/提示模板包,内含若干预定义prompt脚本github.com。这些模板可能采用一定格式(例如Jinja2或纯文本)编写,描述LLM在特定场景下的交互流程,如调试PCB问题、检查元件封装一致性等。服务器将这些模板内容提供给LLM,指导其输出特定格式的问答。
kicad_mcp/utils/工具函数包,封装各模块通用的辅助功能github.com。例如文件路径处理、调用外部进程的封装、KiCad文件解析函数、结果格式化函数等,供 resources/tools 使用以避免重复代码。
docs/文档目录,包含各功能的详细指南和开发者说明等Markdown文档github.com。例如 project_guide.mdbom_guide.md 等文档对对应功能做了说明。
tests/测试目录,包含单元测试脚本,用于验证各模块功能正确性github.com

以上模块各司其职,main.py 调用 server.py 初始化服务器时,会注册所有 资源工具(通常通过在各资源/工具模块内定义注册函数来将其加入服务器)github.com。通过这样的结构,开发者可以方便地扩展新功能 —— 只需在 resources/tools/ 下添加新的模块和处理函数,并在服务器初始化时注册即可github.com。项目的开发指南也建议新增功能时先归类为资源、工具或提示,然后在相应位置实现并注册github.com。这种模块化设计提高了代码的可读性和可维护性,使各个子系统的职责边界清晰。

BOM、DRC、Netlist、模式识别等子系统

KiCad MCP Server 内包含多个子系统,对应上述提到的关键功能点。下面分别说明 BOM管理DRC检查网络表(Netlist)提取电路模式识别 等子系统的结构和作用:

  • BOM(物料清单)子系统:BOM 管理功能允许用户获取工程的物料清单,包括所有元件的名称、数量、参考标号等详细信息github.com。其实现可能分为BOM资源BOM工具两部分:
    • BOM资源 用于读取当前工程中元件的数据并汇总为清单(例如通过解析 KiCad 原理图/PCB 文件或调用 KiCad 导出 BOM 的功能),将结果以表格或列表形式提供给 LLM。
    • BOM工具 则可能用于导出 BOM 文件(如CSV/Excel),或执行进一步处理(比如过滤特定类别元件)。
    BOM 子系统的作用是帮助用户快速获取设计中的元件列表,支持设计选型和生产准备。用户可以通过自然语言请求 BOM,例如“请生成当前项目的物料清单”,服务器会返回完整的 BOM 数据。github.com
  • DRC(设计规则检查)子系统:DRC 功能通过 KiCad 的引擎检查 PCB 设计是否违反设计规则,如布线间距、孔径大小等。KiCad MCP Server 的 DRC 子系统利用 KiCad CLI 来运行检查:当收到 LLM 请求时,服务器调用 kicad-cli 对指定板进行DRC计算,生成DRC报告文本github.com。随后,服务器会解析报告中的违例条目,可能将结果转换为概述性信息(如“未发现错误”或列出若干条主要违规)回复给用户。 此外,该子系统还支持历史比较:通过保留先前的DRC结果或统计,服务器可以比较当前违例数量与过去某次检查的差异,以便用户追踪修复进展github.com github.com。DRC 子系统的结构包括调用外部KiCad检查的逻辑以及结果处理逻辑,作用是帮助用户发现并逐步消除PCB设计中的违规,保障设计质量和可制造性。
  • Netlist(网络连接)子系统:网络表提取子系统负责提供电路中节点与元件连接关系的信息github.com。实现上,它可能通过 KiCad 的原理图API或解析 .net 文件获取所有网络及连接的元件列表。作为资源接口,Netlist 子系统允许用户查询诸如“元件A连接到哪些元件”或“网络N包含哪些引脚”这类问题,服务器将基于网络表数据构建答案github.com。 该子系统的结构可能包含一个 Netlist 数据模型,将 KiCad 提取的网络连接信息存储为方便查询的结构(如字典或图数据)。作用在于 辅助原理图分析设计理解:用户无需手动查阅原理图即可通过提问获取连接关系,例如快速找出某芯片的所有下游元件,有助于理解信号流或排查连接错误。
  • 电路模式识别子系统:此子系统通过分析原理图的元件组合和连接拓扑,自动识别出常见的电路模式或功能模块github.com。实现上,它可能内置一组模式特征库或规则,例如识别降压稳压器可能需要存在开关管、电感和二极管组成的特定结构,识别运算放大器滤波电路可能需要检测运放与电阻电容的典型连接等等。 当 LLM 请求识别电路模式时,服务器扫描 netlist 中各子电路,与已知模式库进行匹配。如果匹配成功,返回模式名称及相关元件。github.com例如,上述例子中询问电源拓扑时,服务器找出了原理图中符合降压(buck)、升压(boost)或线性稳压模式的子电路并报告给用户github.com。模式识别子系统的作用是智能分析电路功能,帮助用户了解设计中使用了哪些经典电路设计,提高设计解读和学习效率。

上述子系统均通过 MCP Server 的资源或工具接口对外提供服务,LLM 可根据用户意图调用。例如,当用户问一个关于设计规则的问题时,LLM会调用DRC工具获取结果;问到某芯片连接,LLM会请求Netlist资源查找连接关系;要求模式识别时,LLM 调用相应分析功能。各子系统相互独立又与核心服务器集成,组成了完整的 AI 辅助 KiCad 设计分析平台。值得注意的是,项目未来计划还会扩展这些子系统,例如引入3D 模型可视化、Gerber 文件导出、组件搜索等功能,进一步丰富AI对KiCad的操控能力github.com

项目许可证和活跃度信息

许可证:KiCad MCP Server 项目采用 MIT开源许可证,这意味着任何人可以自由地使用、修改和分发本项目的代码github.com。MIT 许可证的使用表明作者希望社区能够参与并改进该工具,同时也提示用户自行承担使用风险。

社区活跃度:截至 2025年中期,该项目在 GitHub 上积累了相当的关注度,星标(Star)数量已超过150个,fork数量十余个,表明有一定数量的开发者对其感兴趣github.com。项目由 Lama Al Rajih 发起并主要维护,另有其他贡献者提交改进github.com。自首次发布(2025年3月20日)以来,代码库持续更新,在2025年7月仍有新功能和修复提交github.com。目前已有一些开放的Issue和Pull Request,显示出社区对完善该项目的参与。值得一提的是,作者在项目说明中提供了警告,提示此项目初版是快速开发原型,尚未经过充分测试,使用过程中可能遇到问题,并表示将随着时间推移逐步完善pulsemcp.com github.com。尽管如此,随着近期的版本更新(包括安全性改进、测试补充等github.com github.com),项目稳定性和功能性正在提升。

总的来说,KiCad MCP Server 作为新兴的 AI+EDA 集成工具,目前处于积极开发阶段。在 MIT 许可证的保障和社区的参与下,它有望迅速演进。对于希望使用自然语言控制 KiCad、或开发 AI 辅助设计工具的用户和开发者来说,该项目提供了一个有前景的起点。通过关注项目仓库的更新和Issue讨论,可以及时了解其新功能动态和最佳实践。今后,随着模式识别库的扩充、3D 可视化等高级功能的加入,KiCad MCP Server 有潜力成为电子设计领域一个重要的智能助手组件。用户在试用时应注意其“快速黑客实现”的背景,做好备份并关注官方更新,以获得最佳使用体验。

参考资料:

  1. lamaalrajih, “KiCad MCP Server – README,” GitHub, 2025github.com github.com github.com github.com.
  2. Lama Alrajih, KiCad MCP Server, PulseMCP, Mar. 20, 2025pulsemcp.com.
  3. lamaalrajih, “KiCad MCP Server – Prerequisites & Installation,” GitHub, 2025github.com github.com.
  4. lamaalrajih, “KiCad MCP Server – Configuration,” GitHub, 2025github.com.
  5. lamaalrajih, “KiCad MCP Server – Feature Highlights,” GitHub, 2025github.com github.com.
  6. lamaalrajih, “KiCad MCP Server – Feature Highlights (BOM & DRC),” GitHub, 2025github.com.
  7. lamaalrajih, “KiCad MCP Server – Natural Language Interaction,” GitHub, 2025github.com github.com.
  8. lamaalrajih, “KiCad MCP Server – Project Structure,” GitHub, 2025github.com github.com.
  9. lamaalrajih, “KiCad MCP Server – License & Stats,” GitHub, 2025github.com github.com.
  10. lamaalrajih, “KiCad MCP Server – Commit History,” GitHub, Jul. 23, 2025github.com.

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注