Altium MCP Server
TLDR: 使用 Claude 控制或询问有关 Altium 项目的问题。
这是一个 Model Context Protocol (MCP) 服务器,提供了通过 Python 与 Altium Designer 交互的接口。该服务器允许以编程方式查询和操作 PCB 设计。
注意:目前,使用 Claude 在 PCB 上放置元件时会严重失败。
示例命令
- 运行所有输出任务
- 为附加的数据表中的元件创建符号,并使用当前打开的符号作为参考示例。
- 从附加的 MPM3650 开关稳压器数据表创建原理图符号,并确保严格遵守符号放置规则。(注意:需要打开一个原理图库。使用
C:\AltiumMCP\symbol_placement_rules.txt
描述作为引脚放置规则。请根据您的偏好进行修改。)
- 复制我选中的布局。(将提示用户选择目标元件。支持元件、走线、圆弧、过孔、多边形和区域)
- 显示所有内层。显示顶层和底层。关闭焊膏层。
- 获取设计中所有由 Molex 制造的元件
- 获取 U4 的描述和零件编号
- 按照开关稳压器的最佳实践将选中的元件放置在 PCB 上。注意:它会尝试,但放置效果很差。希望我能找到改进的方法。
- 获取设计中所有 IC 的标号列表
- 获取所有长度匹配规则
安装
目前仅在 Windows 上测试过,且 Altium 脚本中硬编码了
C:\AltiumMCP
路径。这可能是需要改进的地方。- 将仓库克隆到
C:\
,最终得到C:\AltiumMCP\
目录
- 安装 uv
在 Windows 上
然后
- 在
C:\AltiumMCP\
目录中打开 cmd 并运行uv sync
,以从 pyproject.toml 文件中添加包。
Claude for Desktop 集成
在 Claude > 帮助 > 启用开发者模式下启用开发者模式。
转到 Claude > 设置 > 开发者 > 编辑配置 > claude_desktop_config.json,并包含以下内容:
以下内容特定于 Windows,TODO: 找到如何在两者上运行而不使用硬编码路径
使用 Claude
重启 Claude:右键点击系统托盘中的 Claude 图标 > 退出。然后重新打开 Claude 桌面。
一旦在 Claude 中设置了配置文件,并且插件在 Altium 中运行,您将看到一个带有 Altium MCP 工具的锤子图标。
!AltiumMCP 在侧边栏中
配置
首次启动 Claude 时,服务器将自动尝试定位您的 Altium Designer 安装。它将搜索所有以
C:\Program Files\Altium\AD*
开头的目录,并使用具有最大修订号的目录。如果找不到任何目录,首次运行服务器时将提示您手动选择 Altium 可执行文件 (X2.EXE)。Altium 的 DelphiScript 脚本用于在 MCP 服务器和 Altium 之间创建 API。它期望在 C:\AltiumMCP\AltiumScript\
中找到此脚本项目。可用工具
服务器提供了多种工具来与 Altium Designer 交互:
输出任务
get_output_job_containers
: 使用当前打开的 .OutJob 文件,读取所有可用的输出容器
run_output_jobs
: 从当前打开的 .OutJob 传递输出任务容器名称列表以运行任意数量的任务。.OutJob
必须是当前聚焦的文档。
元件信息
get_all_designators
: 获取当前板子中所有元件的标号列表
get_all_component_property_names
: 获取所有可用元件属性名称的列表
get_component_property_values
: 获取所有元件的特定属性值
get_component_data
: 通过标号获取特定元件的详细数据
get_component_pins
: 获取指定元件的引脚信息
原理图/符号
get_schematic_data
: 获取指定元件的原理图数据
create_schematic_symbol
(YouTube): 将带有引脚类型和坐标的引脚列表传递给 Altium 脚本
get_symbol_placement_rules
: 创建符号的辅助工具,读取C:\AltiumMCP\symbol_placement_rules.txt
以获取符号创建的引脚放置规则。
get_library_symbol_reference
: 创建符号的辅助工具,使用打开的库符号作为示例来创建符号
!符号创建器
布局操作
get_all_nets
: 返回 PCB 中所有唯一网络的列表
create_net_class
(YouTube): 从网络列表创建网络类
get_pcb_layers
: 获取包括电气层、机械层、层对等的详细层信息
set_pcb_layer_visibility
(YouTube): 打开或关闭任何层组。例如打开内层。关闭丝印层。
get_pcb_rules
: 获取布局中所有 PCB 规则的规则描述。
get_selected_components_coordinates
: 获取当前选中元件的位置和旋转信息
move_components
: 通过 X 和 Y 偏移移动指定元件
layout_duplicator
(YouTube): 假设您已经在 PCB 上选择了源元件,开始布局复制。
layout_duplicator_apply
:layout_duplicator
的第二个操作。代理将自动使用元件信息来预测源和目标元件之间的匹配,然后将这些匹配发送到放置脚本。
这种布局复制方式与 Altium 内置的布局复制方式相比的酷之处在于,元件不必完全匹配,因为 LLM 可以通过描述来理解哪些元件匹配,哪些不匹配。这是无法硬编码的。
!布局复制器
两者
get_screenshot
: 截取 Altium PCB 窗口或原理图窗口的当前视图的截图。如果打开了不同的文档类型,它会自动聚焦到其中任何一个。注意:Claude 不擅长分析电路或布局截图。ChatGPT 非常擅长,但他们尚未发布 MCP,因此此功能在未来将更有用。
服务器状态
get_server_status
: 检查 MCP 服务器的状态,包括 Altium 和脚本文件的路径
工作原理
服务器通过脚本桥与 Altium Designer 通信:
- 它将命令请求写入
C:\AltiumMCP\request.json
- 它启动 Altium 并指示运行
Altium_API.PrjScr
脚本
- 脚本处理请求并将结果写入
C:\AltiumMCP\response.json
- 服务器读取并返回响应
参考
- BlenderMCP: 我受到 MCP 在 Blender 中使用的启发,并以此为参考。https://github.com/ahujasid/blender-mcp
- 使用 Petar Perisin 和 Randy Clemmons 的 CopyDesignatorsToMechLayerPair 脚本作为参考,了解如何 .Replicate 对象(用于布局复制器)
- Petar Perisin 的 Select Bad Connections 脚本:用于理解如何遍历连接到焊盘的 PCB 原语(走线、圆弧、过孔等)
- Matija Markovic 和 Petar Perisin 的 Distribute 脚本:用于理解如何正确通知 GUI 我已更新走线的网络
- Petar Perisin 的 Room from Poly:作为检测多边形与焊盘重叠的参考,因为我无法使更传统的方法工作。
- Petar Perisin 的 Layer Panel 脚本:作为获取层和更改层可见性的参考
- Jeff Collins 有一个 XIA_Release_Manager.pas 脚本,教会了我输出任务的艺术。请参阅他在 Altium 论坛上的帖子:https://forum.live.altium.com/#/posts/189423
免责声明
TODO:
- 添加 OutJob 生成功能
- 获取层堆栈:
Scripts - Outputs/LayerStackExporter/
- 创建一个单独的函数,带有一个 case 语句,决定聚焦哪个文档
- 显示/隐藏面板:
DXP/ReportPCBViews.pas
- 创建规则:
PCB/CreateRules.pas
- 运行 DRC:IPCB_Board.RunBatchDesignRuleCheck(
- 将光标移动到位置:IPCB_Board.XCursor, IPCB_Board.YCursor
- 添加获取原理图和 PCB 库路径以获取封装
- 添加从库中获取符号
- 记录每个工具的响应时间
- 添加转到原理图表
- 转到带有元件标号的表
- Board.ChooseLocation(x, y, 'Test');
- 缩放到选中的对象:
- 更改原理图选择过滤器:SelectionFilter.pas
- 放置原理图对象(从库中放置元件):PlaceSchObjects.pas
- 如何从库中读取元件面板中的元件?
TODO 测试:
需要添加以下测试单元
get_pcb_layers
set_pcb_layer_visibility
layout_duplicator
get_pcb_screenshot
- Author:waytomcp
- URL:https://www.waytomcp.com/article/coffeenmusic/altium-mcp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!