Token导航 LogoToken导航TokenDH.com
Altium MCP logo
开发工具未说明官方级别未说明来源级核验

Altium MCP

MCP Server

Altium MCP Server是一个通过Python与Altium Designer交互的接口,允许编程方式查询和操作PCB设计。

工具数

25

提示词数

0

GitHub Stars

78

资源数

0
开发工具Claude命令行工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

coffeenmusic

提供方

coffeenmusic

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Altium MCP服务器

TLDR:使用Claude来控制或询问有关Altium项目的问题。 这是一个模型上下文协议(MCP)服务器,它提供了一个通过Python与Altium Designer交互的接口。该服务器允许以编程方式查询和操纵PCB设计。

注意:让克劳德在PCB上放置组件目前很难。

示例命令

  • 运行所有输出作业
  • 在附加的数据表中为零件创建符号,并将当前打开的符号用作参考示例。
  • 根据随附的MPM3650开关稳压器数据表创建原理图符号,并确保严格遵守符号放置规则。(注意:需要打开原理图库。用途 AppData\Roaming\Claude\Claude Extensions\local.dxt.altium-mcp\server\symbol_placement_rules.txt 描述为引脚放置规则。请根据自己的喜好进行修改。)
  • 在我的运算放大器库中找到LM358符号并打开它
  • 根据随附的LM324数据表为四路运算放大器创建多部分符号(创建具有共享V+/V电源引脚的a、B、C、D部分)
  • 在随附的数据表中为SMD零件创建PCB封装,并将其添加到我打开的PcbLib中
  • 复制我选择的布局。(将提示用户现在选择目标组件。支持组件、轨迹、圆弧、通路、多边形和区域)
  • 展示我所有的内心世界。显示顶层和底层。关闭焊膏。
  • 把Molex设计的所有零件都给我
  • 给我U4的描述和零件号
  • 根据开关稳压器的最佳实践,将选定的零件放在我的pcb上。注意:它尝试了,但位置很糟糕。希望我能找到一种方法来改善这一点。
  • 给我一份我设计中所有IC代号的清单
  • 给我所有长度匹配规则

安装MCP服务器

最简单的安装方法是使用Claude Code,将其指向此仓库并要求它为您安装。或者,请参阅下文。

在 YouTube 上观看

  1. 确保Claude安装了Python 3.10+: drop down > File > Settings > Extensions > Advanced > Python如果没有,请安装Python并将其添加到PATH中。
  2. 下载 altium-mcp.dxt 来自的桌面扩展文件 发布
  3. 在Windows上的克劳德桌面中: drop down > File > Settings > Extensions > Advanced > Install Extension... 选择.dxt文件

您不需要重新启动Claude,现在您应该在搜索栏附近的工具菜单中看到altium mcp。

altium-mcp in the tools menu

创建新的.dxt(面向开发人员)

Bootstrap Venv(推荐)

这种方法附带了一个小型引导脚本(start_server.py)它创建了一个虚拟环境,pip在首次启动时在用户的机器上安装依赖关系。.dxt很小(约60 KB),适用于任何Python 3.10+版本。

将预编译包捆绑在 server/lib/ 不再建议使用——当用户的Python版本与用于构建捆绑包的版本不匹配时,它就会中断 .pyd 文件(例如,为3.11编译的pydantic_core在3.13上失败)。

它是如何工作的:

  1. start_server.py (在回购根目录处)检查 server/.venv/Scripts/python.exe
  2. 如果venv不存在,它会创建一个,pip会安装固定的依赖项
  3. 然后发射 server/main.py 使用venv的Python
  4. 首次发射大约需要20-30秒;后续发射是即时的

构建步骤:

  1. 确保 start_server.py 存在于repo根目录(内容见下文)
  2. 确保 server/main.py 没有旧的 site.addsitedir 在顶部砍
  3. 更新 manifest.json:set entry_pointstart_server.py,删除任何 env/PYTHONPATH 字段和使用 manifest_version: "0.3"
  4. 打包DXT——使用 dxt pack 或手动压缩并重命名:
Compress-Archive -Path manifest.json, start_server.py, pyproject.toml, server -DestinationPath altium-mcp.zip
Rename-Item altium-mcp.zip altium-mcp.dxt

不包括 server/lib/server/.venv/ 在.dxt中。 关键在于这些是在用户的机器上创建的。

start_server.py:

import subprocess
import sys
from pathlib import Path

SCRIPT_DIR = Path(__file__).parent
VENV_DIR = SCRIPT_DIR / "server" / ".venv"
REQUIREMENTS = [
    "mcp[cli]==1.5.0",
    "pillow>=11.1.0",
    "pywin32>=310",
]

def ensure_venv():
    python_exe = VENV_DIR / "Scripts" / "python.exe"
    if python_exe.exists():
        return str(python_exe)

    subprocess.check_call([sys.executable, "-m", "venv", str(VENV_DIR)])
    pip_exe = str(VENV_DIR / "Scripts" / "pip.exe")
    subprocess.check_call([pip_exe, "install", "--quiet"] + REQUIREMENTS)
    return str(python_exe)

if __name__ == "__main__":
    venv_python = ensure_venv()
    server_path = str(SCRIPT_DIR / "server" / "main.py")
    sys.exit(subprocess.call([venv_python, server_path]))

manifest.json 服务器部分:

"server": {
    "type": "python",
    "entry_point": "start_server.py",
    "mcp_config": {
      "command": "python",
      "args": ["${__dirname}/start_server.py"]
    }
  }

陷阱

这些是调试DXT构建过程中来之不易的经验教训。违反其中任何一项都会产生难以诊断的错误。

  1. 请勿使用 os.execv()start_server.py. DXT安装到包含空格的路径上(Claude Extensions).在Windows上, os.execv 在空间处分割路径并失败。使用 sys.exit(subprocess.call([...])) 相反。
  1. mcp==1.5.0. 使用 >=1.5.0 引入了最新版本,该版本对API进行了突破性的更改(FastMCP.__init__() 放下了 description 郭)。服务器代码是针对1.5.0编写的。
  1. 请勿使用 manifest_version: "0.4" 随着 "type": "uv". Claude Desktop尚不支持它。你会得到 Invalid manifest: server: Required.使用 "type": "python" 随着 manifest_version: "0.3".
  1. 移除后 site.addsitedir hack from main.py,修复 pathlib.Path 参考。 黑客包括 import pathlib 在文件的顶部。稍后的日志设置将使用 pathlib.Path(...) 哪个会扔 NameError 一旦这种进口消失了。更改为 Path(...) --the from pathlib import Path 导入已存在于文件中,只需确保它在日志设置之前出现。
  1. 请勿捆绑 server/lib/ 在DXT中。 这是旧的方法,违背了venv bootstrap的目的。

传统:捆绑服务器/lib(不推荐)

这种方法将所有依赖项捆绑在一起 server/lib/ 和设置 PYTHONPATH 指向它。它产生一个更大的.dxt(约17 MB) 仅当用户的Python版本与用于编译捆绑包的版本匹配时才有效.

  1. 填充包: python -m pip install --no-cache-dir --target server/lib -r requirements.txt
  2. 设置清单 entry_pointserver/main.py 并添加 "env": {"PYTHONPATH": "${__dirname}/server/lib"}mcp_config
  3. 包裹: npm install -g @anthropic-ai/dxt && dxt pack

DXT资源

配置

首次启动claude时,服务器将自动尝试定位您的Altium Designer安装。它将搜索以开头的所有目录 C:\Program Files\Altium\AD* 并使用修订号最大的版本。如果找不到任何可执行文件,则在首次运行服务器时,系统将提示您手动选择Altium可执行文件(X2.EXE)。Altium的DelphiScript脚本用于在mcp服务器和Altium之间创建API。

可用工具

服务器提供了几个与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 (油管):将带有引脚类型和坐标的引脚列表传递给Altium脚本。通过以下方式支持多部分符号(例如四运算放大器) part_count 参数和a owner_part_id 每个引脚上的字段(共享电源/GND引脚使用0)。还支持活动低引脚名称超号,在每个超号字符后放置一个反斜杠(例如。 R\E\S\E\T\ 渲染为 RESET 与overbar)。
  • get_symbol_placement_rules:创建符号的辅助工具,该工具读取 ~\AppData\Roaming\Claude\Claude Extensions\local.dxt.altium-mcp\server\symbol_placement_rules.txt 获取符号创建的引脚放置规则。
  • get_library_symbol_reference:创建符号的辅助工具,以开放库符号为例创建符号
  • search_library_symbol:在原理图库(.SchLib)中按名称搜索符号并导航到它。支持部分名称匹配。如果提供了路径,将在Altium中打开库文件,如果没有,将显示文件选择器。

Symbol Creator

布局操作

  • get_all_nets:从pcb返回唯一网络列表
  • create_net_class (油管):从网络列表中创建一个网络类
  • get_pcb_layers:获取详细的图层信息,包括电气、机械、图层对等。
  • get_pcb_layer_stackup:获取堆叠信息,如电介质、层厚度等。
  • set_pcb_layer_visibility (油管):打开或关闭任何一组图层。例如,启用内层。关掉丝绸。
  • get_pcb_rules:获取布局中所有pcb规则的规则描述。
  • get_selected_components_coordinates:获取当前选定组件的位置和旋转信息
  • move_components:按X和Y偏移移动指定组件
  • layout_duplicator (油管):假设您已经选择了PCB上的源组件,则开始布局复制。
  • layout_duplicator_apply:行动#2 layout_duplicator.Agent将自动使用部件信息来预测源组件和目标组件之间的匹配,然后将这些匹配发送到位置脚本。

与Altium的内置布局复制不同,这种布局复制的酷之处在于,不必匹配确切的组件,因为LLM可以查看描述并了解哪些组件匹配,哪些组件不匹配。这真的不能硬编码。 Placement Duplicator

PCB封装库

两者

  • get_screenshot:截取当前视图的Altium PCB窗口或原理图窗口的屏幕截图。如果它是打开的,但聚焦了不同的文档类型,它应该自动聚焦其中任何一个。注意:克劳德不太擅长分析电路或布局截图等图像。ChatGPT非常擅长它,但他们还没有发布MCP,所以这个功能在未来会更有用。

服务器状态

  • get_server_status:检查MCP服务器的状态,包括Altium和脚本文件的路径

运作原理

服务器使用脚本桥与Altium Designer通信:

  1. 它将命令请求写入 workspace\request.json
  2. 它启动Altium,并指示运行 Altium_API.PrjScr 脚本
  3. 脚本处理请求并将结果写入 workspace\response.json
  4. 服务器读取并返回响应

参考文献

  • 从Jeff Collins和William Kitchen的精简版中获取脚本的项目路径
  • BlenderMCP:听说MCP在Blender中使用,我受到了启发,并将其作为参考。https://github.com/ahujasid/blender-mcp
  • 使用Petar Perisin和Randy Clemmons的CopyDesignatorsToMechLayerPair脚本作为参考。复制对象(用于布局复制器)
  • Petar Perisin的Select Bad Connections脚本:用于理解如何行走连接到焊盘的pcb图元(轨道、弧形、过孔等)
  • Matija Markovic和Petar Perisin分发脚本:了解如何正确地让GUI知道我何时更新了曲目网络
  • 来自Poly的Petar Perisin的房间:用作检测Poly与焊盘重叠的参考,因为我无法找到更传统的方法来工作。
  • Petar Perisin的图层面板脚本:用作获取图层和更改图层可见性的参考
  • Jeff Collins有一个XIA_Release_Manager.pas脚本,它教会了我输出作业的艺术。请参阅他在Altium论坛上的帖子:https://forum.live.altium.com/#/posts/189423

贡献者

免责声明

这是第三方集成,不是Altium制造的。由...制作 咖啡音乐

一切:

  • 更改选择筛选器:

- scripts-libraries\Scripts - PCB\FilterObjects\ - scripts-libraries\Scripts - SCH\SelectionFilter\

  • 显示/隐藏面板: DXP/ReportPCBViews.pas
  • 创建规则: PCB/CreateRules.pas
  • 运行DRC:IPCB_Board。RunBatchDesignRuleCheck(
  • 将光标移动到位置:IPCB_Board。XCursor,IPCB_Board。YCursor
  • 为封装添加get原理图和pcb库路径。
  • 从库中添加get符号
  • 记录每个工具的响应时间
  • 添加到原理图页
  • 转到带有组件指示符的表
  • 董事会。选择位置(x,y,“测试”);
  • 缩放到选定对象:
  • 更改原理图选择过滤器:SelectionFilter.pas
  • 放置原理图对象(从库中放置元件):PlaceSchObjects.pas
  • 如何从“组件”面板中的库中读取组件?

TODO测试: 需要添加以下测试单元

  • get_pcb_layers
  • set_pcb_layer_visibility
  • layout_duplicator
  • get_pcb_screenshot

目录标签

目录标签

开发工具Claude命令行工具Pascal本地部署PCB设计自动化工具电子设计自动化Altium集成

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

25

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP