Altium MCP工具 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
Altium MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
Altium MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 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
# 安装后在 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 生效
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.
---
See CONTRIBUTING.md § Development Setup for build instructions.
The release binary will be at target/release/altium-designer-mcp.
Claude Code Setup Guide — Complete step-by-step instructions for using this MCP server with Claude Code CLI on Windows, Linux, and macOS.
---
altium-designer-mcp [OPTIONS] [CONFIG_FILE]
| Option | Description |
|---|---|
CONFIG_FILE | Path to configuration file (optional, uses default location if omitted) |
-v, --verbose | Increase logging verbosity (-v info, -vv debug, -vvv trace) |
-q, --quiet | Decrease logging verbosity (only show errors) |
-h, --help | Print help information |
-V, --version | Print version information |
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"altium": {
"command": "altium-designer-mcp",
"args": ["/path/to/config.json"]
}
}
}
---
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 file location:
~/.altium-designer-mcp/config.json%USERPROFILE%\.altium-designer-mcp\config.json{
"allowed_paths": [
"/path/to/your/altium/libraries",
"/another/library/path"
],
"logging": {
"level": "warn"
}
}
| Option | Description |
|---|---|
allowed_paths | Array of directory paths where library files can be accessed (default: current directory) |
logging.level | Log level: trace, debug, info, warn, error (default: warn) |
---
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
}
}
| Parameter | Required | Description |
|---|---|---|
filepath | Yes | Path to the library file |
limit | No | Maximum number of components to return (default: all) |
offset | No | Number of components to skip (default: 0) |
include_metadata | No | Include component metadata like pad/pin counts (default: false) |
Response includes:
total_count: Total number of components in the libraryreturned_count: Number of components in this responseoffset: Current offsethas_more: Whether more components are availableWith 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 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
}
}
| Parameter | Description |
|---|---|
component_names | Array of component names to delete |
dry_run | If 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/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"
}
}
| Parameter | Description |
|---|---|
filepath | Path to the library file (.PcbLib or .SchLib) |
source_name | Name of the component to copy |
target_name | Name for the new copied component |
description | Optional description for the new component |
Returns the new component count after copying.
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"
}
}
| Parameter | Description |
|---|---|
filepath | Path to the library file (.PcbLib or .SchLib) |
old_name | Current name of the component to rename |
new_name | New name for the component |
Returns the component count after renaming (unchanged).
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
}
}
| Parameter | Description |
|---|---|
source_filepath | Path to the source library file (.PcbLib or .SchLib) |
target_filepath | Path to the target library file (must be same type as source) |
component_name | Name of the component to copy from the source library |
new_name | Optional new name for the component in the target library (defaults to original name) |
description | Optional new description for the component (defaults to original description) |
ignore_missing_models | If 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_paths | If true, keep external 3D model file path references (default: false — external paths are removed as they are not portable) |
Behaviour:
preserve_external_paths: true to keep themReorder 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"]
}
}
| Parameter | Description |
|---|---|
filepath | Path to the .PcbLib or .SchLib file |
component_order | Component names in desired order |
Behaviour:
component_order appear first, in the specified ordercomponent_order that don't exist in the library are ignoredExample 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 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"}
]
}
}
}
| Parameter | Description |
|---|---|
filepath | Path to the .PcbLib or .SchLib file |
component_name | Name of the component to update (must exist) |
footprint | For PcbLib: footprint data (same format as write_pcblib) |
symbol | For 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 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"
}
}
| Parameter | Description |
|---|---|
filepaths | Array of library file paths to search (.PcbLib or .SchLib) |
pattern | Search pattern to match component names |
pattern_type | Pattern type: glob (wildcards like * and ?) or regex. Default: glob |
Glob Patterns:
* matches any number of characters? matches a single characterExample 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 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"
}
}
| Parameter | Description |
|---|---|
filepath | Path to the Altium library file (.PcbLib or .SchLib) |
component_name | Exact 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"
}]
}
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"]
}
}
| Parameter | Required | Description |
|---|---|---|
filepath | Yes | Path to the library file (.PcbLib or .SchLib) |
component_names | Yes | Array 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 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
}
}
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 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
}
}
| Parameter | Description |
|---|---|
filepath_a | Path to the first library file (.PcbLib or .SchLib) |
component_a | Name of the first component |
filepath_b | Path to the second library file (can be same as filepath_a) |
component_b | Name of the second component |
include_geometry | Include detailed geometry comparisons (default: true) |
tolerance | Tolerance 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 }
]
}
}
Altium supports two ways to reference 3D models:
| Type | Storage | Portability |
|---|---|---|
| **Embedded** | STEP data stored inside the .PcbLib file | Fully portable — the model travels with the library |
| **External** | File path reference to a .step file on disk | Not portable — requires the file to exist at the referenced path |
When using copy_component_cross_library or merge_libraries:
To preserve 3D models when copying components, ensure they are embedded in the source library (not external references).
高质量的开源MCP工具,AI辅助组件库管理
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
⚠️ GPL 3.0 — 强 Copyleft,衍生作品须开源,含专利保护条款,不可闭源使用。
经综合评估,Altium MCP工具 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | altium-designer-mcp |
| Topics | mcpaialtiumrust |
| GitHub | https://github.com/embedded-society/altium-designer-mcp |
| License | GPL-3.0 |
| 语言 | Rust |
收录时间:2026-06-18 · 更新时间:2026-06-18 · License:GPL-3.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端