能力标签
🔌
MCP工具

Altium MCP工具

基于 Rust · 让 AI 助手直接操作你的系统与工具
英文名:altium-designer-mcp
⭐ 21 Stars 🍴 7 Forks 💻 Rust 📄 GPL-3.0 🏷 AI 8.0分
8.0AI 综合评分
mcpaialtiumrust
✦ AI Skill Hub 推荐

Altium MCP工具 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。

📚 深度解析

Altium MCP工具 是一款基于 MCP(Model Context Protocol)标准协议的 AI 工具扩展。MCP 协议由 Anthropic 开发并开源,旨在建立 AI 模型与外部工具之间的标准化通信接口,目前已被 Claude Desktop、Claude Code、Cursor 等主流 AI 工具采纳。

通过安装 Altium MCP工具,你的 AI 助手将获得额外的工具调用能力,可以用自然语言直接操控该工具的功能,无需学习复杂的命令行语法。MCP 工具的核心价值在于"一次配置,永久增强"——配置完成后,每次与 AI 对话时都可以无缝调用这些工具。

在技术实现上,MCP 工具通过标准的 JSON-RPC 协议与 AI 客户端通信,工具的功能以"工具列表"的形式暴露给 AI 模型,AI 可以按需调用。Altium MCP工具 提供了结构化的工具调用接口,使 AI 模型能够精确地理解和使用每个功能点,显著降低 AI 在工具使用上的错误率。

与传统的 API 集成相比,MCP 工具的优势在于无需编写代码——用户只需在配置文件中添加几行 JSON,即可让 AI 获得全新能力。AI Skill Hub 将 Altium MCP工具 评为 AI 评分 8.0 分,属于同类工具中的优质选择。

📋 工具概览

Altium MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。

GitHub Stars
⭐ 21
开发语言
Rust
支持平台
Windows / macOS / Linux
维护状态
轻量级项目,按需更新
开源协议
GPL-3.0
AI 综合评分
8.0 分
工具类型
MCP工具
Forks
7

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

Altium MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。

📌 核心特色
  • 通过标准 MCP 协议与 Claude、Cursor 等主流 AI 客户端深度集成
  • 提供结构化工具调用接口,显著降低 AI 集成复杂度
  • 支持 Claude Desktop 和 Claude Code 无缝接入,开箱即用
  • 可与其他 MCP 工具组合叠加,构建完整 AI 工作站
  • 轻量无侵入设计,不影响现有系统架构
🎯 主要使用场景
  • 在 Claude Desktop 对话中直接调用本地工具,实现 AI 与系统的深度联动
  • 通过自然语言驱动复杂的多步骤自动化任务,代替繁琐手动操作
  • 将多个 MCP 工具组合使用,构建个人专属 AI 工作站
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/embedded-society/altium-designer-mcp

# 方式二:手动配置 claude_desktop_config.json
{
  "mcpServers": {
    "altium-mcp--": {
      "command": "npx",
      "args": ["-y", "altium-designer-mcp"]
    }
  }
}

# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
📋 安装步骤说明
  1. 确认已安装 Node.js(v18 或以上版本)
  2. 打开 Claude Desktop 或 Claude Code 的 MCP 配置文件
  3. 按「交给 Agent 安装 → Claude Desktop」标签中的 JSON 配置填入 mcpServers 字段
  4. 保存配置文件并重启 Claude 客户端
  5. 重启后,在对话中即可使用本工具
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 安装后在 Claude 对话中直接使用
# 示例:
用户: 请帮我用 Altium MCP工具 执行以下任务...
Claude: [自动调用 Altium MCP工具 MCP 工具处理请求]

# 查看可用工具列表
# 在 Claude 中输入:"列出所有可用的 MCP 工具"
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
// claude_desktop_config.json 配置示例
{
  "mcpServers": {
    "altium_mcp__": {
      "command": "npx",
      "args": ["-y", "altium-designer-mcp"],
      "env": {
        // "API_KEY": "your-api-key-here"
      }
    }
  }
}

// 保存后重启 Claude Desktop 生效
📑 README 深度解析 真实文档 完整度 62/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

altium-designer-mcp

An AI-operated Altium Designer libraries editor.

An MCP server that provides file I/O and primitive placement tools, enabling AI assistants (Claude Code, Claude Desktop, VSCode Copilot) to create and manage Altium Designer component libraries.

---

Installation

See CONTRIBUTING.md § Development Setup for build instructions.

The release binary will be at target/release/altium-designer-mcp.

Quick Start with Claude Code

Claude Code Setup Guide — Complete step-by-step instructions for using this MCP server with Claude Code CLI on Windows, Linux, and macOS.

---

Command-Line Usage

altium-designer-mcp [OPTIONS] [CONFIG_FILE]
OptionDescription
CONFIG_FILEPath to configuration file (optional, uses default location if omitted)
-v, --verboseIncrease logging verbosity (-v info, -vv debug, -vvv trace)
-q, --quietDecrease logging verbosity (only show errors)
-h, --helpPrint help information
-V, --versionPrint version information

Usage with Claude Desktop

Add to your Claude Desktop MCP configuration:

{
    "mcpServers": {
        "altium": {
            "command": "altium-designer-mcp",
            "args": ["/path/to/config.json"]
        }
    }
}

---

Sample Files

Sample Altium library files are included in the scripts/ folder for manual debugging only. Automated tests do not depend on these files.

See scripts/README.md for details on available sample files and analysis scripts.

---

Configuration

Configuration file location:

  • Linux/macOS: ~/.altium-designer-mcp/config.json
  • Windows: %USERPROFILE%\.altium-designer-mcp\config.json
{
    "allowed_paths": [
        "/path/to/your/altium/libraries",
        "/another/library/path"
    ],
    "logging": {
        "level": "warn"
    }
}

Configuration Options

OptionDescription
allowed_pathsArray of directory paths where library files can be accessed (default: current directory)
logging.levelLog level: trace, debug, info, warn, error (default: warn)

---

`list_components`

List component names in an Altium library file. Supports pagination for large libraries.

{
    "name": "list_components",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "limit": 50,
        "offset": 0,
        "include_metadata": true
    }
}
ParameterRequiredDescription
filepathYesPath to the library file
limitNoMaximum number of components to return (default: all)
offsetNoNumber of components to skip (default: 0)
include_metadataNoInclude component metadata like pad/pin counts (default: false)

Response includes:

  • total_count: Total number of components in the library
  • returned_count: Number of components in this response
  • offset: Current offset
  • has_more: Whether more components are available

With include_metadata: true (PcbLib):

{
    "components": [
        { "name": "RESC0603", "pad_count": 2, "track_count": 4, "has_3d_model": true }
    ]
}

With include_metadata: true (SchLib):

{
    "components": [
        { "name": "RESISTOR", "part_count": 1, "pin_count": 2, "footprint_count": 1 }
    ]
}

`delete_component`

Delete one or more components from an Altium library file. Works with both .PcbLib and .SchLib files. Use dry_run=true to preview changes without modifying the file.

{
    "name": "delete_component",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "component_names": ["OLD_FOOTPRINT", "UNUSED_COMPONENT"],
        "dry_run": false
    }
}
ParameterDescription
component_namesArray of component names to delete
dry_runIf true, show what would be deleted without modifying the file (default: false)

Returns per-component status (deleted or not_found) and updated component counts.

A backup is automatically created before deletion (see Automatic Backups).

`copy_component`

Copy/duplicate a component within an Altium library file. Creates a new component with a different name but identical primitives. Useful for creating variants.

{
    "name": "copy_component",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "source_name": "RESC0603_IPC_MEDIUM",
        "target_name": "RESC0603_IPC_MEDIUM_V2",
        "description": "0603 resistor variant 2"
    }
}
ParameterDescription
filepathPath to the library file (.PcbLib or .SchLib)
source_nameName of the component to copy
target_nameName for the new copied component
descriptionOptional description for the new component

Returns the new component count after copying.

`rename_component`

Rename a component within an Altium library file. This is an atomic operation that changes the component's name while preserving all primitives and properties. More efficient than copy + delete for simple renames.

{
    "name": "rename_component",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "old_name": "RESC0603_OLD",
        "new_name": "RESC0603_NEW"
    }
}
ParameterDescription
filepathPath to the library file (.PcbLib or .SchLib)
old_nameCurrent name of the component to rename
new_nameNew name for the component

Returns the component count after renaming (unchanged).

`copy_component_cross_library`

Copy a component from one Altium library to another. Both libraries must be the same type (PcbLib to PcbLib, or SchLib to SchLib). Useful for consolidating libraries or sharing components between projects.

{
    "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
    }
}
ParameterDescription
source_filepathPath to the source library file (.PcbLib or .SchLib)
target_filepathPath to the target library file (must be same type as source)
component_nameName of the component to copy from the source library
new_nameOptional new name for the component in the target library (defaults to original name)
descriptionOptional new description for the component (defaults to original description)
ignore_missing_modelsIf true, copy the component even if referenced embedded 3D models are missing (PcbLib only). The component body references will be removed. (default: false)
preserve_external_pathsIf true, keep external 3D model file path references (default: false — external paths are removed as they are not portable)

Behaviour:

  • If the target file does not exist, it will be created
  • If the target file exists, the component will be added to it
  • If a component with the same name already exists in the target, an error is returned
  • Embedded 3D models are copied along with the component (if present and valid)
  • External STEP file references are removed by default (paths are not portable); use preserve_external_paths: true to keep them

`reorder_components`

Reorder components in an Altium library file (.PcbLib or .SchLib). Specify the desired order as a list of component names. Components not in the list are placed at the end in their original relative order.

{
    "name": "reorder_components",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "component_order": ["RESC1608X55N", "RESC0805X40N", "RESC0402X20N"]
    }
}
ParameterDescription
filepathPath to the .PcbLib or .SchLib file
component_orderComponent names in desired order

Behaviour:

  • Components listed in component_order appear first, in the specified order
  • Components not in the list are appended at the end in their original relative order
  • Names in component_order that don't exist in the library are ignored

Example Response:

{
    "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`

Update a component in-place within an Altium library file, preserving its position. For PcbLib files, provide a footprint object. For SchLib files, provide a symbol object. The component is matched by the component_name parameter.

{
    "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"}
            ]
        }
    }
}
ParameterDescription
filepathPath to the .PcbLib or .SchLib file
component_nameName of the component to update (must exist)
footprintFor PcbLib: footprint data (same format as write_pcblib)
symbolFor SchLib: symbol data (same format as write_schlib)

Example Response:

{
    "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`

Search for components across multiple Altium libraries using regex or glob patterns. Returns matching component names with their source library paths. Supports both .PcbLib (footprints) and .SchLib (symbols) files.

{
    "name": "search_components",
    "arguments": {
        "filepaths": [
            "./Resistors.PcbLib",
            "./Capacitors.PcbLib",
            "./ICs.PcbLib"
        ],
        "pattern": "SOIC-*",
        "pattern_type": "glob"
    }
}
ParameterDescription
filepathsArray of library file paths to search (.PcbLib or .SchLib)
patternSearch pattern to match component names
pattern_typePattern type: glob (wildcards like * and ?) or regex. Default: glob

Glob Patterns:

  • * matches any number of characters
  • ? matches a single character
  • Search is case-insensitive

Example Response:

{
    "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`

Get a single component by name from an Altium library. Returns the full component data (footprint or symbol) without needing to read and filter the entire library. Supports both .PcbLib (footprints) and .SchLib (symbols) files.

{
    "name": "get_component",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "component_name": "SOIC-8"
    }
}
ParameterDescription
filepathPath to the Altium library file (.PcbLib or .SchLib)
component_nameExact name of the component to retrieve

Example Response (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'"
}

Error Response (component not found):

{
    "isError": true,
    "content": [{
        "type": "text",
        "text": "Component 'SOIC-99' not found in library. Available components: SOIC-8, SOIC-14, SOIC-16 ... and 5 more"
    }]
}

`component_exists`

Check if one or more components exist in an Altium library. Useful for validating references before performing operations like copy or merge.

{
    "name": "component_exists",
    "arguments": {
        "filepath": "./MyLibrary.PcbLib",
        "component_names": ["RESC0603", "CAPC0402", "MISSING_COMPONENT"]
    }
}
ParameterRequiredDescription
filepathYesPath to the library file (.PcbLib or .SchLib)
component_namesYesArray of component names to check

Response:

{
    "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
}

STEP Model Integration

STEP models are attached, not generated. The tool links existing STEP files to footprints.

{
    "step_model": {
        "filepath": "./3d-models/0603.step",
        "x_offset": 0,
        "y_offset": 0,
        "z_offset": 0,
        "rotation": 0
    }
}

Long Component Names

Component names longer than 31 characters are supported. The OLE Compound File format limits storage names to 31 characters, so longer names are automatically truncated internally while the full name is preserved in component parameters. This is handled transparently — you can use any length component name and it will be preserved on read/write roundtrips.

---

`compare_components`

Compare two specific components in detail, showing differences in primitives, parameters, and properties. Components can be from the same library or different libraries. Returns detailed primitive-level differences (pads, tracks, pins, etc.).

{
    "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
    }
}
ParameterDescription
filepath_aPath to the first library file (.PcbLib or .SchLib)
component_aName of the first component
filepath_bPath to the second library file (can be same as filepath_a)
component_bName of the second component
include_geometryInclude detailed geometry comparisons (default: true)
toleranceTolerance for floating-point comparisons in mm (default: 0.001)

Example Response:

{
    "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 }
        ]
    }
}

Embedded vs External Models

Altium supports two ways to reference 3D models:

TypeStoragePortability
**Embedded**STEP data stored inside the .PcbLib fileFully portable — the model travels with the library
**External**File path reference to a .step file on diskNot portable — requires the file to exist at the referenced path

When using copy_component_cross_library or merge_libraries:

  • Embedded models are copied along with the component
  • External model references are removed with a warning, as the file paths are not portable across different machines or directory structures

To preserve 3D models when copying components, ensure they are embedded in the source library (not external references).

🎯 aiskill88 AI 点评 A 级 2026-06-18

高质量的开源MCP工具,AI辅助组件库管理

⚡ 核心功能

👥 适合人群

Claude Desktop / Claude Code 用户AI 工具开发者需要扩展 AI 能力的专业人士自动化工程师

🎯 使用场景

  • 在 Claude Desktop 对话中直接调用本地工具,实现 AI 与系统的深度联动
  • 通过自然语言驱动复杂的多步骤自动化任务,代替繁琐手动操作
  • 将多个 MCP 工具组合使用,构建个人专属 AI 工作站

⚖️ 优点与不足

✅ 优点
  • +GPL-3.0 协议,可免费商用
  • +标准化 MCP 协议,生态互联性强
  • +与 Claude 官方生态无缝对接
  • +即插即用,配置简单快捷
⚠️ 不足
  • 依赖 Claude 客户端,非 Claude 用户无法使用
  • MCP 协议仍在持续演进,接口可能变更
  • 需要一定的配置步骤
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

⚠️ GPL 3.0 — 强 Copyleft,衍生作品须开源,含专利保护条款,不可闭源使用。

🔗 相关工具推荐

🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合

❓ 常见问题 FAQ

MCP是Altium Designer的组件库管理协议
💡 AI Skill Hub 点评

经综合评估,Altium MCP工具 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。

⬇️ 获取与下载
⬇ 下载源码(GPL)
⚠️ 本工具使用 GPL-3.0 协议。您可以自由下载和使用,但衍生作品必须以相同协议开源,不可商业闭源。使用前请确认符合协议要求。
📚 深入学习 Altium MCP工具
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 altium-designer-mcp
Topics mcpaialtiumrust
GitHub https://github.com/embedded-society/altium-designer-mcp
License GPL-3.0
语言 Rust
🔗 原始来源
🐙 GitHub 仓库  https://github.com/embedded-society/altium-designer-mcp 🌐 官方网站  https://github.com/embedded-society/altium-designer-mcp

收录时间:2026-06-18 · 更新时间:2026-06-18 · License:GPL-3.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。

📺 订阅 AI Skill Hub Daily Telegram 频道
每天 8 条精选 AI Skill、MCP、Agent 与自动化工具推送
加入频道 →