altium设计师mcp
人工智能操作的Altium Designer库编辑器。
提供文件I/O和基本放置工具的MCP服务器,支持AI助手 (Claude Code、Claude Desktop、VSCode Copilot)创建和管理Altium Designer 组件库。
______________________________________________________________________
核心思想
人工智能处理智能。该工具处理文件I/O。
| 责任 | 所有者 |
|---|---|
| IPC-7351B计算 | 人工智能 |
| 包装布局决策 | AI |
| 风格选择 | AI |
| 数据表解释 | AI |
| 读取/写入Altium文件 | 此工具 |
| 图元放置 | 此工具 |
| STEP模型附件 | 此工具 |
这意味着AI可以创造 任何足迹 --不仅仅是预编程的包类型。 看 docs/VISION.md 了解完整的架构原理。
______________________________________________________________________
Claude Code快速入门
Claude代码设置指南 --完成分步说明 用于在上使用此MCP服务器和Claude Code CLI 视窗, Linux,以及 macOS.
______________________________________________________________________
运作原理
┌─────────────────────────────────────────────────────────────────────────────┐
│ AI-ASSISTED COMPONENT CREATION │
│ │
│ Engineer AI MCP Server │
│ │ │ │ │
│ │ "Create 0603 resistor" │ │ │
│ ├────────────────────────►│ │ │
│ │ │ │ │
│ │ │ AI reasons about: │ │
│ │ │ • IPC-7351B pad sizes │ │
│ │ │ • Courtyard margins │ │
│ │ │ • Silkscreen/symbol style │ │
│ │ │ │ │
│ │ │ write_pcblib(primitives) │ │
│ │ ├─────────────────────────────►│ │
│ │ │ │ Writes │
│ │ │ │ .PcbLib + │
│ │ │ write_schlib(symbol) │ .SchLib files │
│ │ ├─────────────────────────────►│ │
│ │ │◄─────────────────────────────┤ │
│ │ │ { success: true } │ │
│ │ │ │ │
│ │ "Done! Footprint │ │ │
│ │ and symbol created" │ │ │
│ │◄────────────────────────┤ │ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘______________________________________________________________________
MCP工具
read_pcblib
读取Altium的脚印 .PcbLib 文件。所有坐标单位均为毫米。
{
"name": "read_pcblib",
"arguments": {
"filepath": "./MyLibrary.PcbLib"
}
}分页选项 (适用于大型图书馆):
{
"name": "read_pcblib",
"arguments": {
"filepath": "./LargeLibrary.PcbLib",
"component_name": "RESC1608X55N",
"limit": 10,
"offset": 0,
"compact": true
}
}| 参数 | 说明 |
|---|---|
component_name | 仅获取此特定足迹 |
limit | 返回的最大足迹 |
offset | 跳过前N个足迹 |
compact | 统一时省略冗余的每层焊盘数据(默认值: true) |
write_pcblib
在Altium上留下脚印 .PcbLib 文件。人工智能提供了原始定义。
{
"name": "write_pcblib",
"arguments": {
"filepath": "./Passives.PcbLib",
"footprints": [{
"name": "RESC1608X55N",
"description": "Chip resistor, 0603 (1608 metric)",
"pads": [
{ "designator": "1", "x": -0.75, "y": 0, "width": 0.9, "height": 0.95 },
{ "designator": "2", "x": 0.75, "y": 0, "width": 0.9, "height": 0.95 }
],
"tracks": [
{ "x1": -0.8, "y1": -0.425, "x2": 0.8, "y2": -0.425, "width": 0.12, "layer": "Top Overlay" },
{ "x1": -0.8, "y1": 0.425, "x2": 0.8, "y2": 0.425, "width": 0.12, "layer": "Top Overlay" }
],
"regions": [
{ "vertices": [{"x": -1.45, "y": -0.73}, {"x": 1.45, "y": -0.73}, {"x": 1.45, "y": 0.73}, {"x": -1.45, "y": 0.73}], "layer": "Top Courtyard" }
]
}],
"append": false
}
}| 参数 | 说明 |
|---|---|
append | 如果 true,向现有文件添加封装;如果 false,创建新文件(默认值: false) |
read_schlib
从Altium读取符号 .SchLib 文件。坐标以原理图单位表示(10个单位=1个网格)。
{
"name": "read_schlib",
"arguments": {
"filepath": "./MySymbols.SchLib"
}
}分页选项 (适用于大型图书馆):
{
"name": "read_schlib",
"arguments": {
"filepath": "./LargeLibrary.SchLib",
"component_name": "RES_0603",
"limit": 10,
"offset": 0
}
}write_schlib
将符号写入Altium .SchLib 文件。人工智能提供了原始定义。
{
"name": "write_schlib",
"arguments": {
"filepath": "./MySymbols.SchLib",
"symbols": [...],
"append": false
}
}| 参数 | 说明 |
|---|---|
append | 如果 true,将符号添加到现有文件中;如果 false,创建新文件(默认值: false) |
符号属性:
| 属性 | 描述 |
|---|---|
name | 符号名称(必填) |
description | 符号说明 |
designator_prefix | 指示符前缀(例如“R”、“U”、“C”) |
part_count | 多零件符号的零件数(默认值:1) |
pins | 引脚定义数组 |
引脚属性:
| 属性 | 描述 |
|---|---|
designator | 引脚编号(必填) |
name | 引脚名称(必填) |
x, y | 以示意图单位表示的位置(必填) |
length | 针脚长度(必填) |
orientation | left, right, up, down (必填) |
electrical_type | input, output, bidirectional, passive, power |
owner_part_id | 多零件符号的零件号(从1开始,默认值:1) |
symbol_inner_edge | 内边缘的图钉符号: none, dot, clock, schmitt等等。 |
symbol_outer_edge | 外边缘的图钉符号: none, dot, active_low_input等等。 |
symbol_inside | 内部引脚符号: none, dot, clock等等。 |
symbol_outside | 外部引脚符号: none, dot, clock等等。 |
list_components
列出Altium库文件中的组件名称。支持大型库的分页。
{
"name": "list_components",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"limit": 50,
"offset": 0,
"include_metadata": true
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | 库文件的路径 |
limit | 否 | 要返回的最大组件数(默认值:全部) |
offset | 否 | 要跳过的组件数量(默认值:0) |
include_metadata | 否 | 包括焊盘/引脚计数等组件元数据(默认值: false) |
答复包括:
total_count:库中的组件总数returned_count:此响应中的组件数量offset:当前偏移has_more:是否有更多组件可用
随着 include_metadata: true (PcbLib):
{
"components": [
{ "name": "RESC0603", "pad_count": 2, "track_count": 4, "has_3d_model": true }
]
}随着 include_metadata: true (SchLib):
{
"components": [
{ "name": "RESISTOR", "part_count": 1, "pin_count": 2, "footprint_count": 1 }
]
}extract_style
从现有库中提取样式信息。
{
"name": "extract_style",
"arguments": {
"filepath": "./MyLibrary.PcbLib"
}
}返回有关轨迹宽度、焊盘形状、引脚长度、颜色和层使用情况的统计信息。
delete_component
从Altium库文件中删除一个或多个组件。两者都适用 .PcbLib 和 .SchLib 文件夹。 使用 dry_run=true 预览更改而不修改文件。
{
"name": "delete_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_names": ["OLD_FOOTPRINT", "UNUSED_COMPONENT"],
"dry_run": false
}
}| 参数 | 说明 |
|---|---|
component_names | 要删除的组件名称数组 |
dry_run | 如果 true,显示在不修改文件的情况下将删除的内容(默认值: false) |
按组件状态返回(deleted 或 not_found)并更新了组件计数。
删除前会自动创建备份(请参阅 自动备份).
validate_library
验证Altium库文件是否存在常见问题。两者都适用 .PcbLib 和 .SchLib 文件夹。
{
"name": "validate_library",
"arguments": {
"filepath": "./MyLibrary.PcbLib"
}
}检查:
- 空组件(无焊盘/引脚)
- 组件中的重复指示符
- 无效坐标(NaN,无穷大)
- 零尺寸或负尺寸
- 缺少车身图形(SchLib)
返回状态(valid, warnings,或 invalid)发现了一系列问题。
export_library
将Altium库导出为JSON或CSV格式,以进行版本控制、备份或外部处理。
{
"name": "export_library",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"format": "json",
"compact": true
}
}| 参数 | 说明 |
|---|---|
format | 导出格式: json 对于完整数据, csv 用于汇总表 |
compact | 统一时省略冗余的每层焊盘数据(默认值: true) |
JSON格式 返回包括所有基元的完整组件数据。
CSV格式 返回一个包含列的摘要表:名称、描述、焊盘/引脚计数等。
extract_step_model
从Altium中提取嵌入式STEP 3D模型。PcbLib文件。模型压缩存储在库中; 此工具将它们提取为独立的.step文件。支持多种提取模式和分页。
{
"name": "extract_step_model",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"output_path": "./extracted_model.step",
"model": "RESC1005X04L.step",
"mode": "auto"
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | 通往的路径。包含嵌入式3D模型的PcbLib文件 |
output_path | 否 | 保存提取的.step文件的路径。如果省略,则返回base64编码的数据。 |
model | 否 | 型号名称(例如。, RESC1005X04L.step)或要提取的GUID。如果省略并且只存在一个模型,则自动提取它。如果存在多个模型但未指定模型,则列出可用模型。 |
mode | 否 | 提取模式: auto (默认), list, extract_all, extract_by_footprint |
footprint_name | 否 | 封装名称(必填 extract_by_footprint 模式) |
limit | 否 | 要列出的最大模型数(默认值:全部) |
offset | 否 | 列出时要跳过的模型数量(默认值:0) |
提取模式:
| 模式 | 描述 |
|---|---|
auto | 默认行为——提取单个模型,如果存在多个模型,则列出 |
list | 列出所有可用型号,无需提取 |
extract_all | 将所有模型提取到一个目录中(需要 output_path 成为一个目录) |
extract_by_footprint | 提取特定足迹使用的模型(需要 footprint_name) |
回复(列出型号):
{
"status": "list",
"filepath": "./MyLibrary.PcbLib",
"message": "Multiple models found. Specify 'model' parameter with name or ID to extract.",
"total_count": 50,
"returned_count": 10,
"offset": 0,
"has_more": true,
"models": [
{ "id": "{GUID...}", "name": "model1.step", "size_bytes": 12345 },
{ "id": "{GUID...}", "name": "model2.step", "size_bytes": 67890 }
]
}响应(提取成功):
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"output_path": "./extracted_model.step",
"model_id": "{GUID...}",
"model_name": "RESC1005X04L.step",
"size_bytes": 12345,
"message": "STEP model extracted to './extracted_model.step'"
}import_library
将组件从JSON数据导入Altium库。这与 export_library — 它接受相同的JSON格式 export_library 生成,实现往返工作流。
{
"name": "import_library",
"arguments": {
"output_path": "./NewLibrary.PcbLib",
"json_data": {
"file_type": "PcbLib",
"footprints": [...]
},
"append": false
}
}| 参数 | 说明 |
|---|---|
output_path | 输出库文件(.PcbLib或.SchLib)的路径 |
json_data | 包含库数据的JSON对象(格式与 export_library 输出) |
append | 如果 true,将组件添加到现有文件中;如果 false,创建新文件(默认值: false) |
JSON格式(PcbLib):
{
"file_type": "PcbLib",
"footprints": [
{
"name": "RESC1608X55N",
"description": "Chip resistor, 0603",
"pads": [...],
"tracks": [...],
"regions": [...]
}
]
}JSON格式(SchLib):
{
"file_type": "SchLib",
"symbols": [
{
"name": "RESISTOR",
"description": "Generic resistor",
"pins": [...]
}
]
}库类型由以下因素确定:
- 这
file_typeJSON数据中的字段(首选) - 输出文件扩展名(.PcbLib或.SchLib)
使用案例:
- 往返编辑:导出→ 修改JSON→ 导入
- 版本控制:将库存储为JSON,需要时导入
- 迁移:在格式之间转换或合并来自外部源的数据
- 备份还原:从JSON备份中重新创建库
diff_libraries
比较两个Altium库文件并报告差异。两个文件的类型必须相同。
{
"name": "diff_libraries",
"arguments": {
"filepath_a": "./OldLibrary.PcbLib",
"filepath_b": "./NewLibrary.PcbLib"
}
}| 参数 | 说明 |
|---|---|
filepath_a | 第一个(基本/旧)库的路径 |
filepath_b | 第二个(新的/更改的)库的路径 |
退货:
- 添加:组件在B中,但不在A中
- 移除:组件在A中,但不在B中
- 修改过的:两个组件都发生了变化(计数差异、描述变化)
batch_update
对Altium库文件中的所有组件执行批量更新。支持PcbLib 操作(轨道宽度更新、图层重命名)和SchLib操作(参数更新)。
{
"name": "batch_update",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"operation": "update_track_width",
"parameters": {
"from_width": 0.2,
"to_width": 0.25,
"tolerance": 0.001
}
}
}| 参数 | 说明 |
|---|---|
filepath | PcbLib或SchLib文件的路径 |
operation | 其中之一: update_track_width, rename_layer, update_parameters |
parameters | 操作特定参数 |
PcbLib操作:
| 操作 | 参数 | 说明 |
|---|---|---|
update_track_width | from_width, to_width, tolerance | 更新所有匹配的曲目 from_width (±公差)至 to_width |
rename_layer | from_layer, to_layer | 将所有图元从一个图层更改为另一个图层 |
SchLib操作:
| 操作 | 参数 | 说明 |
|---|---|---|
update_parameters | param_name, param_value, symbol_filter?, add_if_missing? | 跨符号更新参数值 |
示例:重命名图层(PcbLib)
{
"name": "batch_update",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"operation": "rename_layer",
"parameters": {
"from_layer": "Mechanical 1",
"to_layer": "Mechanical 2"
}
}
}图层名称接受两种间隔格式(Top Layer)和camelCase(TopLayer).
示例:跨符号更新参数(SchLib)
{
"name": "batch_update",
"arguments": {
"filepath": "./MySymbols.SchLib",
"operation": "update_parameters",
"parameters": {
"param_name": "Manufacturer",
"param_value": "Acme Corp",
"symbol_filter": "^RES.*",
"add_if_missing": true
}
}
}| 参数 | 说明 |
|---|---|
param_name | 要更新的参数的名称 |
param_value | 参数的新值 |
symbol_filter | 可选正则表达式,用于过滤要更新的符号 |
add_if_missing | 如果为true,则将参数添加到没有该参数的符号中(默认值:false) |
copy_component
复制Altium库文件中的组件。使用以下命令创建新组件 名称不同,但基元相同。可用于创建变体。
{
"name": "copy_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"source_name": "RESC0603_IPC_MEDIUM",
"target_name": "RESC0603_IPC_MEDIUM_V2",
"description": "0603 resistor variant 2"
}
}| 参数 | 说明 |
|---|---|
filepath | 库文件的路径(.PcbLib或.SchLib) |
source_name | 要复制的组件的名称 |
target_name | 新复制组件的名称 |
description | 新组件的可选描述 |
返回复制后的新组件计数。
rename_component
重命名Altium库文件中的组件。这是一个改变的原子操作 组件的名称,同时保留所有基元和属性。比 复制+删除以进行简单重命名。
{
"name": "rename_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"old_name": "RESC0603_OLD",
"new_name": "RESC0603_NEW"
}
}| 参数 | 说明 |
|---|---|
filepath | 库文件的路径(.PcbLib或.SchLib) |
old_name | 要重命名的组件的当前名称 |
new_name | 组件的新名称 |
返回重命名后的组件计数(未更改)。
copy_component_cross_library
将组件从一个Altium库复制到另一个库。两个库的类型必须相同 (PcbBib到PcbLib或SchLib到SchLib)。可用于整合库或共享 项目之间的组件。
{
"name": "copy_component_cross_library",
"arguments": {
"source_filepath": "./SourceLibrary.PcbLib",
"target_filepath": "./TargetLibrary.PcbLib",
"component_name": "RESC0603_IPC_MEDIUM",
"new_name": "RESC0603_COPIED",
"description": "Copied from SourceLibrary",
"ignore_missing_models": false,
"preserve_external_paths": false
}
}| 参数 | 说明 |
|---|---|
source_filepath | 源库文件(.PcbLib或.SchLib)的路径 |
target_filepath | 目标库文件的路径(必须与源文件类型相同) |
component_name | 要从源库复制的组件的名称 |
new_name | 目标库中组件的可选新名称(默认为原始名称) |
description | 组件的可选新描述(默认为原始描述) |
ignore_missing_models | 如果 true,即使缺少引用的嵌入式3D模型,也要复制组件(仅限PcbLib)。组件体引用将被删除。(默认值: false) |
preserve_external_paths | 如果 true,保留外部三维模型文件路径引用(默认值: false --外部路径被移除,因为它们不可移植) |
行为:
- 如果目标文件不存在,将创建它
- 如果目标文件存在,组件将被添加到其中
- 如果目标中已存在同名组件,则返回错误
- 嵌入式3D模型与组件(如果存在且有效)一起复制
- 默认情况下会删除外部STEP文件引用(路径不可移植);使用
preserve_external_paths: true为了留住他们
merge_libraries
将多个Altium库合并为一个库。所有源库必须相同 类型(全部PcbLib或全部SchLib)。组件从每个源复制到目标库中。
{
"name": "merge_libraries",
"arguments": {
"source_filepaths": [
"./LibraryA.PcbLib",
"./LibraryB.PcbLib",
"./LibraryC.PcbLib"
],
"target_filepath": "./MergedLibrary.PcbLib",
"on_duplicate": "skip"
}
}| 参数 | 说明 |
|---|---|
source_filepaths | 源库文件(.PcbLib或.SchLib)的路径数组 |
target_filepath | 目标库文件的路径(将被创建或附加到) |
on_duplicate | 如何处理重复名称: skip (忽略), error (失败), rename (自动后缀)。违约: error |
行为:
- 如果目标文件不存在,将创建它
- 如果目标文件存在,组件将附加到该文件
- 重复处理选项:
- error:如果发现重复项,则立即失败(默认) - skip:默默地忽略重复项,保留第一个出现项 - rename:使用自动重命名重复项 _1, _2等后缀
示例响应:
{
"status": "success",
"target_filepath": "./MergedLibrary.PcbLib",
"file_type": "PcbLib",
"sources_count": 3,
"merged_count": 45,
"skipped_count": 2,
"renamed_count": 0,
"final_count": 45,
"message": "Merged 45 components from 3 sources into './MergedLibrary.PcbLib' (total: 45)"
}reorder_components
在Altium库文件(.PcbLib或.SchLib)中重新排序组件。将所需订单指定为 组件名称列表。不在列表中的组件将放置在原始组件的末尾 相对顺序。
{
"name": "reorder_components",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_order": ["RESC1608X55N", "RESC0805X40N", "RESC0402X20N"]
}
}| 参数 | 说明 |
|---|---|
filepath | 通往的道路。PcbLib或。SchLib文件 |
component_order | 组件名称按所需顺序排列 |
行为:
- 中列出的组件
component_order按指定顺序先出现 - 不在列表中的组件将按其原始相对顺序附加在末尾
- 姓名在
component_order库中不存在的内容将被忽略
示例响应:
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"component_count": 5,
"original_order": ["CAPC0402X20N", "RESC1608X55N", "RESC0805X40N", "RESC0402X20N", "INDC1005X55N"],
"new_order": ["RESC1608X55N", "RESC0805X40N", "RESC0402X20N", "CAPC0402X20N", "INDC1005X55N"],
"not_in_library": [],
"appended_at_end": ["CAPC0402X20N", "INDC1005X55N"],
"message": "Reordered 5 components in './MyLibrary.PcbLib' (2 components appended at end)"
}update_component
更新Altium库文件中的组件,保留其位置。对于PcbLib 文件,提供 footprint 对象。对于SchLib文件,请提供 symbol 对象。组件 与 component_name 参数。
{
"name": "update_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_name": "RESC0402X20N",
"footprint": {
"name": "RESC0402X20N",
"description": "Updated resistor 0402",
"pads": [
{"designator": "1", "x": -0.5, "y": 0, "width": 0.5, "height": 0.5, "layer": "TopLayer"},
{"designator": "2", "x": 0.5, "y": 0, "width": 0.5, "height": 0.5, "layer": "TopLayer"}
]
}
}
}| 参数 | 说明 |
|---|---|
filepath | 通往的道路。PcbLib或。SchLib文件 |
component_name | 要更新的组件的名称(必须存在) |
footprint | 对于PcbLib:封装数据(格式与 write_pcblib) |
symbol | 对于SchLib:符号数据(格式与 write_schlib) |
示例响应:
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"file_type": "PcbLib",
"component_name": "RESC0402X20N",
"new_name": "RESC0402X20N",
"renamed": false,
"component_count": 5,
"message": "Updated component 'RESC0402X20N' in './MyLibrary.PcbLib'"
}search_components
使用正则表达式或glob模式在多个Altium库中搜索组件。退货 将组件名称与其源库路径进行匹配。支持两者 .PcbLib (脚印) 和 .SchLib (符号)文件。
{
"name": "search_components",
"arguments": {
"filepaths": [
"./Resistors.PcbLib",
"./Capacitors.PcbLib",
"./ICs.PcbLib"
],
"pattern": "SOIC-*",
"pattern_type": "glob"
}
}| 参数 | 说明 |
|---|---|
filepaths | 要搜索的库文件路径数组(.PcbLib或.SchLib) |
pattern | 搜索模式以匹配组件名称 |
pattern_type | 图案类型: glob (通配符如 * 和 ?)或 regex默认值: glob |
球形图案:
*匹配任意数量的字符?匹配单个字符- 搜索不区分大小写
示例响应:
{
"status": "success",
"pattern": "SOIC-*",
"pattern_type": "glob",
"libraries_searched": 3,
"components_searched": 150,
"matches_found": 5,
"matches": [
{ "name": "SOIC-8", "library": "./ICs.PcbLib", "type": "PcbLib" },
{ "name": "SOIC-14", "library": "./ICs.PcbLib", "type": "PcbLib" },
{ "name": "SOIC-16", "library": "./ICs.PcbLib", "type": "PcbLib" }
],
"message": "Found 5 matches for 'SOIC-*' across 3 libraries (150 components searched)"
}get_component
从Altium库中按名称获取单个组件。返回完整的组件数据 (封装或符号),无需读取和过滤整个库。支持两者 .PcbLib (脚印)和 .SchLib (符号)文件。
{
"name": "get_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_name": "SOIC-8"
}
}| 参数 | 说明 |
|---|---|
filepath | Altium库文件的路径(.PcbLib或.SchLib) |
component_name | 要检索的组件的确切名称 |
示例响应(PcbLib):
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"component_name": "SOIC-8",
"type": "PcbLib",
"units": "mm",
"component": {
"name": "SOIC-8",
"description": "8-pin SOIC package",
"pads": [...],
"tracks": [...]
},
"message": "Retrieved footprint 'SOIC-8' from './MyLibrary.PcbLib'"
}错误响应(找不到组件):
{
"isError": true,
"content": [{
"type": "text",
"text": "Component 'SOIC-99' not found in library. Available components: SOIC-8, SOIC-14, SOIC-16 ... and 5 more"
}]
}compare_components
详细比较两个特定组件,显示基元、参数和 物业。组件可以来自同一个库或不同的库。返回详细信息 原始电平差(焊盘、轨道、引脚等)。
{
"name": "compare_components",
"arguments": {
"filepath_a": "./LibraryA.PcbLib",
"component_a": "RESC0603_V1",
"filepath_b": "./LibraryB.PcbLib",
"component_b": "RESC0603_V2",
"include_geometry": true,
"tolerance": 0.001
}
}| 参数 | 说明 |
|---|---|
filepath_a | 第一个库文件(.PcbLib或.SchLib)的路径 |
component_a | 第一个组件的名称 |
filepath_b | 第二个库文件的路径(可以与 filepath_a) |
component_b | 第二个组件的名称 |
include_geometry | 包括详细的几何图形比较(默认值: true) |
tolerance | 浮点比较的公差(mm)(默认值: 0.001) |
示例响应:
{
"status": "different",
"summary": {
"identical": false,
"pad_differences": 2,
"track_differences": 1,
"description_changed": true
},
"differences": {
"pads": [
{ "designator": "1", "field": "width", "a": 0.9, "b": 1.0 }
]
}
}render_footprint
从PcbLib文件渲染足迹的ASCII艺术可视化。显示焊盘、轨迹、, 以及简单文本格式的其他图元,用于快速预览。
{
"name": "render_footprint",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_name": "RESC0603_IPC_MEDIUM",
"scale": 2.0,
"max_width": 80,
"max_height": 40
}
}| 参数 | 说明 |
|---|---|
filepath | PcbLib文件的路径 |
component_name | 要渲染的足迹名称 |
scale | 每毫米字符数(默认值:2.0) |
max_width | 最大字符宽度(默认值:80) |
max_height | 最大字符高度(默认值:40) |
返回带有完整显示的焊盘指示符的ASCII艺术(例如,“1”、“10”、“A01”)。传说: # =焊盘面积, - =轨道, o =电弧, + =来源。
render_symbol
从SchLib文件中渲染原理图符号的ASCII艺术可视化。显示引脚, 以简单的文本格式显示矩形、线条和其他图元,以便快速预览。
{
"name": "render_symbol",
"arguments": {
"filepath": "./MyLibrary.SchLib",
"component_name": "LM358",
"scale": 1.0,
"max_width": 80,
"max_height": 40,
"part_id": 1
}
}| 参数 | 说明 |
|---|---|
filepath | SchLib文件的路径 |
component_name | 要渲染的符号的名称 |
scale | 每10个原理图单位的字符数(默认值:1.0) |
max_width | 最大字符宽度(默认值:80) |
max_height | 最大字符高度(默认值:40) |
part_id | 多零件符号的零件ID(默认值:1,所有零件使用0) |
返回ASCII艺术,其中完整显示了引脚指示符(例如“1”、“10”、“VCC”)。传说: |-+ =矩形, ~ =引脚线, o =电弧, O =椭圆, + =来源。
manage_schlib_parameters
管理Altium SchLib文件中的组件参数。支持列表、获取、设置、, 添加和删除参数,如值、制造商、零件号等。
{
"name": "manage_schlib_parameters",
"arguments": {
"filepath": "./MyLibrary.SchLib",
"component_name": "LM358",
"operation": "set",
"parameter_name": "Value",
"value": "LM358D"
}
}| 参数 | 说明 |
|---|---|
filepath | SchLib文件的路径 |
component_name | 符号名称 |
operation | 操作: list, get, set, add, delete |
parameter_name | 参数名称(获取/设置/添加/删除所需) |
value | 参数值(设置/添加时需要) |
hidden | 参数是否隐藏(设置/添加可选) |
x, y | 以原理图单位表示的位置(可选择添加) |
操作:
| 操作 | 说明 |
|---|---|
list | 返回符号的所有参数 |
get | 按名称返回单个参数 |
set | 更新现有参数的值 |
add | 创建新参数 |
delete | 删除参数 |
manage_schlib_footprints
管理Altium SchLib符号中的封装链接。支持列出、添加和删除 封装引用将原理图符号链接到PCB封装。
{
"name": "manage_schlib_footprints",
"arguments": {
"filepath": "./MyLibrary.SchLib",
"component_name": "LM358",
"operation": "add",
"footprint_name": "SOIC-8_3.9x4.9mm"
}
}| 参数 | 说明 |
|---|---|
filepath | SchLib文件的路径 |
component_name | 符号名称 |
operation | 操作: list, add, remove |
footprint_name | 封装名称(添加/删除时需要) |
description | 封装描述(可选添加) |
操作:
| 操作 | 说明 |
|---|---|
list | 返回符号的所有链接足迹 |
add | 将新足迹链接到符号 |
remove | 从符号中删除示意图链接 |
repair_library
通过删除孤立数据来修复库文件。对于PcbLib文件,这将删除组件主体 指向不存在的嵌入式STEP模型的引用。这修复了三维模型所在的库 数据已损坏或未完全删除。
{
"name": "repair_library",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"dry_run": true
}
}| 参数 | 说明 |
|---|---|
filepath | 库文件(.PcbLib)的路径 |
dry_run | 如果 true,报告在不修改文件的情况下将删除的内容(默认值: false) |
示例响应:
{
"library_type": "PcbLib",
"footprints_checked": 5,
"orphaned_references_removed": [
{ "footprint_name": "RESC0603", "removed_count": 2 }
],
"total_removed": 2,
"dry_run": false
}bulk_rename
使用模式匹配重命名库中的多个组件。支持glob模式和 带有捕获组的正则表达式,用于灵活的批量重命名操作。
{
"name": "bulk_rename",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"pattern": "^RESC(.*)$",
"replacement": "RES_$1",
"pattern_type": "regex",
"dry_run": true
}
}| 参数 | 说明 |
|---|---|
filepath | 库文件的路径(.PcbLib或.SchLib) |
pattern | 匹配组件名称的模式 |
replacement | 替换字符串(使用 $1, $2等用于正则表达式捕获组) |
pattern_type | 图案类型: glob 或 regex (默认值: glob) |
dry_run | 如果 true,预览更改而不修改文件(默认值: false) |
示例响应:
{
"renamed": [
{ "old_name": "RESC0402", "new_name": "RES_0402" },
{ "old_name": "RESC0603", "new_name": "RES_0603" }
],
"skipped": [],
"conflicts": [],
"dry_run": true
}模式示例:
| 图案类型 | 图案 | 替换 | 输入 | 输出 |
|---|---|---|---|---|
| glob | RESC* | RES_ | RESC0603 | RES_0603 (后缀保留) |
| 正则表达式 | ^RESC(.*)$ | RES_$1 | RESC0603 | RES_0603 |
| 正则表达式 | ^(.*)_V(\d+)$ | $1_REV$2 | CAP_V2 | CAP_REV2 |
component_exists
检查Altium库中是否存在一个或多个组件。可用于验证引用 在执行复制或合并等操作之前。
{
"name": "component_exists",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_names": ["RESC0603", "CAPC0402", "MISSING_COMPONENT"]
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | 库文件的路径(.PcbLib或.SchLib) |
component_names | Yes | 要检查的组件名称数组 |
答复:
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"file_type": "PcbLib",
"results": [
{ "name": "RESC0603", "exists": true },
{ "name": "CAPC0402", "exists": true },
{ "name": "MISSING_COMPONENT", "exists": false }
],
"all_exist": false,
"found_count": 2,
"missing_count": 1
}update_pad
更新PcbLib封装中焊盘的特定属性,而无需更换整个组件。 按指示符查找焊盘,并仅更新指定的属性。
{
"name": "update_pad",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_name": "RESC0603",
"designator": "1",
"updates": {
"width": 1.0,
"height": 0.9,
"shape": "rectangle"
},
"dry_run": false
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | PcbLib文件的路径 |
component_name | 是 | 足迹名称 |
designator | 是 | 要更新焊盘指示符(例如“1”、“A1”) |
updates | 是 | 要更新属性的对象 |
dry_run | 否 | 预览更改而不修改文件(默认值: false) |
可更新的衬垫属性:
| 属性 | 描述 |
|---|---|
x, y | 位置(mm) |
width, height | 衬垫尺寸(mm) |
shape | 衬垫形状: rectangle, round, oval, rounded_rectangle |
rotation | 旋转角度(度) |
hole_size | 孔径(mm)(用于通孔垫) |
答复:
{
"status": "success",
"component_name": "RESC0603",
"designator": "1",
"changes": [
{ "property": "width", "old": 0.9, "new": 1.0 },
{ "property": "height", "old": 0.95, "new": 0.9 },
{ "property": "shape", "old": "RoundedRectangle", "new": "rectangle" }
]
}update_primitive
更新PcbLib封装中图元(轨迹、圆弧、文本、填充、区域)的特定属性。 按类型和索引查找基元,并仅更新指定的属性。
{
"name": "update_primitive",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_name": "RESC0603",
"primitive_type": "track",
"index": 0,
"updates": {
"width": 0.15,
"layer": "Top Overlay"
},
"dry_run": false
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | PcbLib文件的路径 |
component_name | 是 | 足迹名称 |
primitive_type | 是 | 类型: track, arc, text, fill, region |
index | Yes | 基元在其类型数组中的从零开始的索引 |
updates | 是 | 要更新属性的对象 |
dry_run | 否 | 预览更改而不修改文件(默认值: false) |
按类型列出的可更新属性:
| 类型 | 属性 |
|---|---|
track | x1, y1, x2, y2, width, layer |
arc | x, y, radius, start_angle, end_angle, width, layer |
text | x, y, text, height, rotation, layer |
fill | x1, y1, x2, y2, rotation, layer |
region | layer |
list_backups
列出Altium库的可用备份文件。之前会自动创建备份 破坏性操作。
{
"name": "list_backups",
"arguments": {
"filepath": "./MyLibrary.PcbLib"
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | 库文件的路径 |
答复:
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"backups": [
{
"filename": "MyLibrary.PcbLib.20260126_143022.bak",
"path": "./MyLibrary.PcbLib.20260126_143022.bak",
"timestamp": "2026-01-26T14:30:22",
"size_bytes": 45678
},
{
"filename": "MyLibrary.PcbLib.20260125_091500.bak",
"path": "./MyLibrary.PcbLib.20260125_091500.bak",
"timestamp": "2026-01-25T09:15:00",
"size_bytes": 44123
}
],
"backup_count": 2
}restore_backup
从备份文件还原Altium库。如果没有指定特定的备份,则恢复 从最近的备份中。
{
"name": "restore_backup",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"backup_filename": "MyLibrary.PcbLib.20260125_091500.bak"
}
}| 参数 | 必填 | 说明 |
|---|---|---|
filepath | 是 | 要还原的库文件的路径 |
backup_filename | 否 | 要还原的特定备份文件名(默认值:最新) |
答复:
{
"status": "success",
"filepath": "./MyLibrary.PcbLib",
"restored_from": "MyLibrary.PcbLib.20260125_091500.bak",
"backup_timestamp": "2026-01-25T09:15:00",
"message": "Restored './MyLibrary.PcbLib' from backup 'MyLibrary.PcbLib.20260125_091500.bak'"
}______________________________________________________________________
原始类型
封装图元(PcbLib)
| 原始 | 描述 |
|---|---|
| 垫 | 带指示符、位置、尺寸、形状、层的SMD或通孔焊盘(见下面的焊盘形状) |
| 经由 | 具有层跨度、孔尺寸和热释放的垂直互连 |
| 轨道 | 任何层上的线段(丝网印刷、装配等) |
| 弧 | 任何层上的圆弧或圆 |
| 区域 | 填充多边形(庭院、铜浇注) |
| 文本 | 带有字体、大小、位置和图层的文本字符串 |
| 填充 | 任何图层上的填充矩形 |
| 组件主体 | 3D模型参考(嵌入式STEP模型) |
焊盘形状和引脚1指示器
这 shape 焊盘上的属性控制铜的形状。使用此指示引脚1:
| 形状 | 值 | 用法 |
|---|---|---|
| 矩形 | "rectangle" | 引脚1指示器 --用于第一个垫子,以便在视觉上区分它 |
| 圆角矩形 | "rounded_rectangle" | SMD焊盘的默认值(最常见) |
| 圆形 | "round" 或 "circle" | 圆形焊盘,默认为通孔(两个值相等) |
| 椭圆形 | "oval" | 长方形衬垫,适用于受限空间 |
示例——用矩形垫标记引脚1:
{
"pads": [
{ "designator": "1", "x": -0.75, "y": 0, "width": 0.9, "height": 0.95, "shape": "rectangle" },
{ "designator": "2", "x": 0.75, "y": 0, "width": 0.9, "height": 0.95, "shape": "rounded_rectangle" }
]
}这遵循IPC-7351惯例,其中引脚1具有独特的形状(通常是矩形或方形角),而其他焊盘使用圆角。
符号图元(SchLib)
| 原始 | 描述 |
|---|---|
| 针 | 带有名称、指示符、电气类型和方向的组件引脚 |
| 矩形 | 填充或未填充的矩形(组件主体) |
| 圆角矩形 | 带圆角半径的圆角矩形 |
| 线路 | 单线段 |
| 多段线 | 多个连接的线段 |
| 多边形 | 带边框和填充颜色的填充多边形 |
| 弧 | 圆弧或圆 |
| 椭圆 | 椭圆或圆形(填充或未填充) |
| 椭圆弧 | 具有分数半径的椭圆弧段 |
| 贝塞尔 | 三次贝塞尔曲线(4个控制点) |
| 标签 | 文本标签(记录=4) |
| 文本 | 文本注释(记录=3) |
| 参数 | 组件参数(值、零件号等) |
| 足迹模型 | 引用PcbLib中的封装 |
标准Altium层
封装的常见层(每个层都有一个等效的底部):
| 图层 | 用法 |
|---|---|
| 顶层 | 铜焊盘(SMD) |
| 底层 | 底部铜垫 |
| 多层 | 通孔焊盘(全铜层) |
| 顶部覆盖 | 丝网印刷 |
| 顶部焊膏 | 焊膏模板 |
| 顶部焊料 | 焊料掩模开口 |
| 顶部组件 | 组件大纲(文件) |
| 顶层庭院 | 庭院边界(IPC-7351) |
| 顶部3D车身 | 3D模型轮廓 |
支持的其他层:
| 图层 | 用法 |
|---|---|
| 中间层1–30 | 内部铜层 |
| 内部平面1-16 | 电源/接地平面 |
| 机械1-16 | 用户定义的机械层 |
| 钻孔指南 | 钻孔标记 |
| 钻孔图 | 钻孔图表/表格 |
| 禁止进入层 | 路由禁区 |
______________________________________________________________________
安装
看 CONTRIBUTING.md§开发设置 获取构建说明。
发布二进制文件将位于 target/release/altium-designer-mcp.
命令行用法
altium-designer-mcp [OPTIONS] [CONFIG_FILE]| 选项 | 描述 |
|---|---|
CONFIG_FILE | 配置文件的路径(可选,如果省略,则使用默认位置) |
-v, --verbose | 增加日志记录的详细程度(-v 信息, -vv 调试, -vvv 跟踪) |
-q, --quiet | 降低日志记录的详细程度(仅显示错误) |
-h, --help | 打印帮助信息 |
-V, --version | 打印版本信息 |
使用Claude Desktop
添加到您的Claude Desktop MCP配置中:
{
"mcpServers": {
"altium": {
"command": "altium-designer-mcp",
"args": ["/path/to/config.json"]
}
}
}______________________________________________________________________
配置
配置文件位置:
- Linux/macOS:
~/.altium-designer-mcp/config.json - 窗户:
%USERPROFILE%\.altium-designer-mcp\config.json
{
"allowed_paths": [
"/path/to/your/altium/libraries",
"/another/library/path"
],
"logging": {
"level": "warn"
}
}配置选项
| 选项 | 描述 |
|---|---|
allowed_paths | 可以访问库文件的目录路径数组(默认:当前目录) |
logging.level | 日志级别:跟踪、调试、信息、警告、错误(默认:警告) |
______________________________________________________________________
STEP模型集成
STEP模型是 附加,未生成。该工具将现有的STEP文件链接到封装。
{
"step_model": {
"filepath": "./3d-models/0603.step",
"x_offset": 0,
"y_offset": 0,
"z_offset": 0,
"rotation": 0
}
}嵌入式与外部模型
Altium支持两种引用3D模型的方式:
| 类型 | 存储 | 便携性 |
|---|---|---|
| 嵌入式 | STEP数据存储在内部。PcbLib文件 | 完全可移植——模型随库一起旅行 |
| 外部的 | 磁盘上.step文件的文件路径引用 | 不可移植--要求文件存在于引用的路径中 |
使用时 copy_component_cross_library 或 merge_libraries:
- 嵌入式模型 与组件一起复制
- 外部模型参考 由于文件路径不能在不同的计算机或目录结构之间移植,因此会被删除并显示警告
要在复制组件时保留三维模型,请确保它们嵌入到源库中(而不是外部引用)。
提取嵌入式模型
使用 extract_step_model 从库中提取嵌入式STEP数据:
{
"name": "extract_step_model",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"output_path": "./extracted_model.step"
}
}对于参数化3D模型生成,计划在未来项目中使用专用的机械MCP服务器。
______________________________________________________________________
自动备份
在执行任何破坏性操作(删除、更新、合并、批量更新)之前,服务器会自动 创建目标文件的带时间戳的备份。备份使用以下格式:
MyLibrary.PcbLib.20260125_143022.bak备份保留: 每个文件只保留5个最新备份。较旧的备份是 自动删除以防止无限制的磁盘使用。
创建备份的操作:
delete_componentupdate_componentupdate_padupdate_primitiverename_componentcopy_componentcopy_component_cross_library(目标文件)merge_libraries(目标文件)reorder_componentsbatch_updatebulk_renamewrite_pcblib/write_schlib(覆盖时)import_library(覆盖时)
禁用备份: 所有写入操作都接受 create_backup 参数(默认值: true). 设置为 false 要跳过备份创建,请执行以下操作:
{
"name": "delete_component",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"component_names": ["OLD_COMPONENT"],
"create_backup": false
}
}管理备份: 使用 list_backups 查看可用备份和 restore_backup 到 从以前的版本恢复。
模拟运行支持: 最具破坏性的行动支持 dry_run=true 预览更改 不修改文件:
delete_component--预览要删除的组件update_component--预览组件替换更改update_pad/update_primitive--预览属性更改bulk_rename--预览名称更改repair_library--预览要删除的孤立引用copy_component/rename_component/reorder_componentswrite_pcblib/write_schlib/import_librarycopy_component_cross_library/merge_libraries
______________________________________________________________________
备注
长组件名称
支持长度超过31个字符的组件名称。OLE复合文件格式限制 存储名称最多为31个字符,因此较长的名称会在内部自动截断,同时 全名保留在组件参数中。这是透明处理的——你可以 使用任何长度的组件名称,它将在读/写往返时保留。
______________________________________________________________________
贡献
欢迎投稿!看 贡献.md 作为指导方针。
______________________________________________________________________
发展
运行测试
cargo test测试是自包含的,并以编程方式生成自己的数据。临时文件创建于 .tmp/ (git被忽略)并自动清理。
代码质量
cargo fmt --check # Check formatting
cargo clippy # Lint______________________________________________________________________
许可证
版权所有(C)2026嵌入式社会 .
GNU通用公共许可证v3.0--请参阅 许可证.
______________________________________________________________________
链接
______________________________________________________________________
示例文件
Altium库文件示例包含在 scripts/ 文件夹 仅手动调试. 自动测试不依赖于这些文件。
看 scripts/README.md 有关可用示例文件和分析脚本的详细信息。
______________________________________________________________________
现有技术
该项目建立在以下工作的基础上:
- Altium夏普 C# Altium 文件解析器(MIT)
- 匹伐替尼 --Python Altium库
- python altium --Altium格式文档
