altium-designer-mcp について
altium-designer-mcpは、Altiumの`.PcbLib`および`.SchLib`部品ライブラリを読み取り、作成、編集、管理するMCPサーバーです。MCPクライアントのAIアシスタントにファイル入出力とプリミティブ配置のツールを提供します。
主な機能
- 01`.PcbLib`と`.SchLib`ファイルの読み書き
- 02フットプリントとシンボルのプリミティブ配置
- 03部品の検索、調査、プレビュー
- 04部品の更新、複製、改名、比較
- 05ライブラリの検証、修復、インポート、エクスポート
- 06バックアップと埋め込みSTEPモデルの管理
活用シーン
- 01設計要件に基づく部品フットプリントとシンボルの作成
- 02既存のAltiumライブラリ部品の編集
- 03部品ライブラリの比較と検証
- 04ライブラリのエクスポートやバックアップの復元
MCP 対応
このサーバーは、Altiumライブラリのファイル入出力、部品の調査・編集、ライブラリ管理に使う34個のツールをMCPクライアントに公開します。`.PcbLib`のフットプリントと`.SchLib`のシンボルに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
altium-designer-mcp
AI に Altium ライブラリを作成させましょう。エンジニアリングは AI が担当し、このツールがファイルを書き込みます。
AI アシスタント(Claude Code、Claude Desktop、Cursor、Antigravity、VS Code Copilot など、あらゆる MCP クライアント)に、Altium Designer の .PcbLib(フットプリント)および .SchLib(シンボル)ライブラリ向けのファイル入出力とプリミティブ配置ツールを提供する MCP サーバーです。これにより、AI は事前にプログラムされたパッケージだけでなく、あらゆるコンポーネントを作成、管理できます。
問題
Altium のコンポーネントライブラリを手作業で作成するのは、時間がかかり、繰り返しの多い作業です。フットプリントを作成するたびに IPC-7351B のパッド寸法、コートヤード、シルクスクリーンを調べ、各プリミティブを手作業で配置する必要があります。AI アシスタントはまさにこうした推論を得意としていますが、Altium のバイナリ .PcbLib/.SchLib ファイルを書き込むことはできません。これは仕様が公開されていない OLE 複合形式で、簡単に破損してしまい、不正なファイルを Altium は警告なしで開くのを拒否します。
| 方法 | 問題 |
|---|---|
| Altium でフットプリントを一つずつ手作業で描く | 時間がかかり、繰り返しの多い作業です。AI はファイルを操作できません |
| AI にバイナリファイルを直接出力させる | 破損したファイルが生成され、Altium で開けません |
| 事前にプログラムされたフットプリントジェネレーター | あらかじめコード化されたパッケージタイプしか作成できません |
中核となる考え方
知的な処理は AI が担当します。ファイル入出力はツールが担当します。
| 担当する処理 | 担当者 |
|---|---|
| IPC-7351B の計算 | AI |
| パッケージレイアウトの決定 | AI |
| スタイルの選択 | AI |
| データシートの解釈 | AI |
| Altium ファイルの読み書き | このツール |
| プリミティブの配置 | このツール |
| STEP モデルの添付 | このツール |
これにより、AI は事前にプログラムされたパッケージタイプだけでなく、あらゆるフットプリントを作成できます。設計上の背景については、docs/VISION.md を参照してください。
対象ユーザー
Altium のコンポーネントライブラリを作成または管理しており、MCP 対応の AI アシスタントを使用する方が対象です。エンジニアリング(データシート → 寸法 → スタイル)は AI が担当し、このサーバーによって実際の .PcbLib/.SchLib ファイルの読み書きが可能になります。
| 次のような場合… | その場合… |
|---|---|
| Claude Code、Claude Desktop、Cursor、Antigravity、VS Code + Copilot(あらゆる MCP クライアント)を使い、Altium で設計している | ✅ 対象です |
| 固定されたパッケージ向けの既製ジェネレーターが必要 | ❌ 対象外です。このツールの目的は、あらゆるコンポーネントに対応することです |
| Altium を使用していない | ❌ 対象外です |
クイックスタート
クライアントの設定 — Claude Code、Claude Desktop、Google Antigravity、Cursor、VS Code、GitHub Copilot CLI、Windsurf、Cline、Roo Code、Kiro、JetBrains、Zed、Gemini CLI、Codex CLI、Continue、Goose、OpenCode およびその他すべての stdio MCP クライアント向けの検証済み設定とトラブルシューティングを、Windows、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 │
│ │ ├─────────────────────────────►│ │
│ │ │◄─────────────────────────────┤ │
│ │ │ { status: "success" } │ │
│ │ │ │ │
│ │ "Done! Footprint │ │ │
│ │ and symbol created" │ │ │
│ │◄────────────────────────┤ │ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
MCP ツール
このサーバーは、.PcbLib(フットプリント)と .SchLib(シンボル)の両方で使用できる34 個のツールを提供します。各ツールの全パラメーターと使用例は docs/TOOLS.md に記載されています。ここではカテゴリ別に概要を紹介します。
読み取りと書き込み
| ツール | 用途 |
|---|---|
read_pcblib | .PcbLib からフットプリントを読み取ります。 |
write_pcblib | .PcbLib にフットプリントを書き込みます。 |
read_schlib | .SchLib からシンボルを読み取ります。 |
write_schlib | .SchLib にシンボルを書き込みます。 |
検査と可視化
| ツール | 用途 |
|---|---|
list_components | コンポーネント名を一覧表示します(ページネーション対応)。 |
get_component | 1 つのコンポーネントの全データを取得します。 |
search_components | 正規表現/グロブを使ってライブラリ全体を検索します。 |
component_exists | コンポーネントが存在するか確認します。 |
render_footprint | フットプリントを ASCII アートでプレビューします。 |
render_symbol | シンボルを ASCII アートでプレビューします。 |
extract_style | 既存のライブラリからスタイルを抽出します。 |
比較
| ツール | 用途 |
|---|---|
diff_libraries | 2 つのライブラリファイルを比較します。 |
compare_components | 2 つの特定のコンポーネントを比較します。 |
その場で編集
| ツール | 用途 |
|---|---|
update_component | 位置を維持したままコンポーネントを更新します。 |
update_pad | 1 つのパッドのプロパティを更新します。 |
update_primitive | 1 つのプリミティブ(トラック/円弧/テキスト/塗りつぶし/領域)を更新します。 |
batch_update | すべてのコンポーネントに対する更新を一括処理します。 |
reorder_components | ライブラリ内のコンポーネントの順序を変更します。 |
manage_schlib_parameters | SchLib パラメーターを一覧表示/取得/設定/削除します。 |
manage_schlib_footprints | SchLib シンボル内のフットプリントリンクを管理します。 |
コンポーネントの管理
| ツール | 用途 |
|---|---|
delete_component | 1 つ以上のコンポーネントを削除します。 |
copy_component | ライブラリ内でコンポーネントを複製します。 |
rename_component | コンポーネントの名前を変更します(アトミック)。 |
copy_component_cross_library | コンポーネントを別のライブラリにコピーします。 |
bulk_rename | パターンに基づいて複数の名前を一括変更します。 |
ライブラリ操作
| ツール | 用途 |
|---|---|
merge_libraries | 複数のライブラリを 1 つに統合します。 |
write_libpkg | IntLib コンパイル用にライブラリをまとめた .LibPkg プロジェクトを書き込みます。 |
export_library | JSON/CSV にエクスポートします。 |
import_library | JSON からインポートします(エクスポートの逆)。 |
validate_library | よくある問題がないか検証します。 |
repair_library | 孤立したデータを削除します。 |
extract_step_model | 埋め込みの STEP 3D モデルを抽出します。 |
バックアップと安全性
| ツール | 用途 |
|---|---|
list_backups | 自動バックアップを一覧表示します。 |
restore_backup | バックアップから復元します。 |
プリミティブ型
フットプリントのプリミティブ(PcbLib)
| プリミティブ | 説明 |
|---|---|
| Pad | デジグネータ、位置、サイズ、形状、レイヤー(下記のパッド形状を参照)、電源プレーンのサーマルリリーフ、個別のポリゴン接続スタイルを備えた、SMD またはスルーホールのパッド |
| Via | レイヤー範囲、穴のサイズ、サーマルリリーフを備えた垂直接続 |
| Track | 任意のレイヤー上の線分(シルクスクリーン、実装図など) |
| Arc | 任意のレイヤー上の円弧または円 |
| Region | 穴の輪郭を任意で指定できる、塗りつぶされたポリゴン(外形線、銅箔領域) |
| Text | フォント、サイズ、位置、レイヤーを指定したテキスト文字列 |
| Fill | 任意のレイヤー上の塗りつぶされた長方形 |
| ComponentBody | 3D モデルへの参照(埋め込み STEP モデル) |
パッド形状とピン 1 の表示
パッドの shape プロパティで銅箔の形状を指定します。これを使ってピン 1 を示します。
| 形状 | 値 | 用途 |
|---|---|---|
| 長方形 | "rectangle" | ピン 1 の表示 — 1 番目のパッドに使い、見た目で区別します |
| 角丸長方形 | "rounded_rectangle" | SMD パッドのデフォルト(最も一般的) |
| 円形 | "round" または "circle" | 円形パッド。スルーホールのデフォルト(どちらの値も同じです) |
| 楕円形 | "oval" | スペースが限られた場所向けの細長いパッド |
| 八角形 | "octagonal" | 8 辺のパッド(面取りされた角) |
例 — 長方形のパッドでピン 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)
| プリミティブ | 説明 |
|---|---|
| Pin | 名前、デジグネータ、電気的タイプ、向きを備えたコンポーネントピン |
| Rectangle | 塗りつぶしまたは塗りつぶしなしの長方形(コンポーネント本体) |
| RoundRect | 角の半径を指定した角丸長方形 |
| Line | 単一の線分 |
| Polyline | 複数の連結された線分 |
| Polygon | 枠線と塗りつぶし色を指定した、塗りつぶされたポリゴン |
| Arc | 円弧または円 |
| Pie | 塗りつぶされた円形セクター(円弧の形状と塗りつぶし) |
| Image | 外接ボックスを持つ、埋め込みまたはリンクされたラスター画像 |
| Ellipse | 楕円または円(塗りつぶしまたは塗りつぶしなし) |
| EllipticalArc | 半径を分数で指定した楕円弧の一部 |
| Bezier | 3 次ベジェ曲線(4 つの制御点) |
| Label | テキスト文字列(RECORD=4)— シンボル上に置ける唯一の自由テキスト |
| IeeeSymbol | IEEE シンボルの字形(RECORD=3):ドット、クロック、アクティブ Low 入力など |
| TextFrame | 枠線付きの複数行テキストボックス(ワードラップ、配置) |
| Parameter | コンポーネントのパラメーター(値、部品番号など) |
| FootprintModel | PcbLib 内のフットプリントへの参照 |
Altium の標準レイヤー
フットプリントでよく使われるレイヤー(それぞれに Bottom 相当のレイヤーがあります):
| レイヤー | 用途 |
|---|---|
| Top Layer | 銅箔パッド(SMD) |
| Bottom Layer | 裏面の銅箔パッド |
| Multi-Layer | スルーホールパッド(すべての銅箔レイヤー) |
| Top Overlay | シルクスクリーン |
| Top Paste | はんだペースト用ステンシル |
| Top Solder | ソルダーマスクの開口部 |
| Top Assembly | 実装外形線(ドキュメント用) |
| Top Courtyard | 外形線の境界(IPC-7351) |
| Top 3D Body | 3D モデルの外形線 |
対応しているその他のレイヤー:
| レイヤー | 用途 |
|---|---|
| Mid-Layer 1–30 | 内部銅箔レイヤー |
| Internal Plane 1–16 | 電源/グラウンドプレーン |
| Mechanical 1–32 | ユーザー定義のメカニカルレイヤー |
| Drill Guide | ドリル穴のマーカー |
| Drill Drawing | ドリルチャート/表 |
| Keep-Out Layer | 配線禁止領域 |
レイヤー名には、Altium の表記(Top Overlay、Mechanical 13)またはキャメルケース(TopOverlay、Mechanical13)を、大文字と小文字を問わず使用できます。すべてのツールで同じ表記が使えます。
インストール
Linux(x86_64)、macOS(aarch64)、Windows(x86_64)向けのビルド済みバイナリは、
リリースページにあります。各
アーカイブにはセットアップ用の README と docs/CLIENT_SETUP.md が同梱されており、
既知のすべての MCP クライアントにサーバーを接続する手順を記載しています。Linux バイナリには glibc 2.34 以降が必要です。
Ubuntu 22.04、Debian 12、RHEL 9(および無償の再ビルド版である AlmaLinux 9 と Rocky Linux 9)以降が対象です。
Claude Desktop ユーザーは、アーカイブをダウンロードする必要はありません。同じページからワンクリック拡張機能
altium-designer-mcp.mcpb(旧ビルドでは同じ内容の
altium-designer-mcp.dxt)を、Settings → Extensions → Advanced settings →
Install Extension… からインストールしてください。詳しくは CLIENT_SETUP.md § Claude Desktop をご覧ください。
コード署名ポリシー:docs/CODE_SIGNING_POLICY.md。Windows バイナリは SignPath Foundation を通じて署名する予定です。承認されるまでは署名されておらず、各リリースには署名済みのビルド来歴証明が付属します。
コンテナーでの利用 — ライブラリをマウントしたフォルダーに生成する Linux マシン、NAS、CI ジョブ向けです(Altium 自体をコンテナー内に置く必要はありません)。リポジトリの Dockerfile
は、公開済みバイナリと同じ --locked リリースビルドを生成します。
docker build -t altium-designer-mcp .
docker run -i --rm -v /path/to/libraries:/libraries altium-designer-mcp
マウントした /libraries フォルダーが、コンテナーの許可リスト全体です。クライアントの
設定では、"command": "docker" と
"args": ["run", "-i", "--rm", "-v", "/path/to/libraries:/libraries", "altium-designer-mcp"] を指定します。
ソースからビルドする場合は、
CONTRIBUTING.md § 開発環境のセットアップをご覧ください。最適化された
バイナリは cargo build --release で生成され、target/release/altium-designer-mcp に配置されます。
ダウンロードしたリリースの検証
リリースアーカイブは GitHub Actions でビルドされ、署名済みの SLSA ビルド来歴証明が付属しています。そのため、ダウンロードしたファイルを、生成元のワークフロー実行とコミットまでたどれます。
gh attestation verify <archive> --repo embedded-society/altium-designer-mcp
sha256sum --check --ignore-missing SHA256SUMS.txt
バイナリはコード署名されていないため、初回起動時に Windows SmartScreen と macOS Gatekeeper の警告が表示されます(macOS では右クリック → 開く)。来歴証明による確認のほうが、より確実です。 リリースの作成方法については docs/RELEASING.mdをご覧ください。
コマンドラインの使い方
altium-designer-mcp [OPTIONS] [CONFIG_FILE]
| オプション | 説明 |
|---|---|
CONFIG_FILE | 設定ファイルへのパス(省略可能。省略した場合はデフォルトの場所が使用されます) |
--allow <DIR>... | ライブラリフォルダーへのアクセスを直接許可します(複数回指定可能)。設定ファイルの allowed_paths に追加され、設定ファイルがなくても使用できます。その場合、ほかの設定にはデフォルト値が適用されます |
--ansi-code-page <PAGE> | 新しいフットプリント名の書き込みに使用する Windows ANSI コードページです。ライブラリのコードページが検出された場合は最初に試され、コードページが表示されないライブラリにはこの値が使用されます(GBK の場合は 936、ほかに 1250、1252 など)。設定ファイルの ansi_code_page を上書きします |
--http <ADDR> | 標準入出力の代わりに、指定したアドレス(例:127.0.0.1:8080)の /mcp パスで MCP Streamable HTTP トランスポートを提供します。ベアラートークンが ALTIUM_DESIGNER_MCP_HTTP_TOKEN に設定されていない場合、ループバック以外のアドレスは拒否されます。docs/CLIENT_SETUP.md § HTTP トランスポートをご覧ください |
--http-allow-origin <ORIGIN>... | ローカルのオリジンに加えて、HTTP トランスポートへのアクセスを許可するブラウザーオリジンです(複数回指定可能) |
-v, --verbose | ログの詳細度を上げます(-v は info、-vv は debug、-vvv は trace) |
-q, --quiet | ログの詳細度を下げます(エラーのみを表示) |
-h, --help | ヘルプ情報を表示します |
-V, --version | バージョン情報を表示します |
AI クライアントへの接続
すべての MCP クライアントで必要なのは、バイナリと設定ファイルの同じ 2 つの絶対パスで、記述する場所だけが異なります。ほとんどのクライアントが読み取る標準ブロックは次のとおりです。
{
"mcpServers": {
"altium": {
"command": "/usr/local/bin/altium-designer-mcp",
"args": ["/home/you/.altium-designer-mcp/config.json"]
}
}
}
Claude Desktop、Cursor、VS Code、Windsurf、Cline、Zed、JetBrains、Gemini CLI、Codex CLI などでの記述場所と、クライアントからサーバーが見えない場合の対処方法については、docs/CLIENT_SETUP.md を参照してください。絶対パスを使用してください。クライアントは PATH を検索したり、~ を展開したりしません。
設定
サーバーが読み込む JSON ファイルは 1 つです。ファイルを使わない場合は、altium-designer-mcp --allow <DIR> を実行すると、コマンドラインでフォルダーへのアクセスを許可し、それ以外はデフォルト設定で実行します。Claude Desktop 拡張機能はこの方法で起動します。設定ファイルの場所は次のとおりです。
- 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"
}
}
設定オプション
| オプション | 説明 |
|---|---|
allowed_paths | ライブラリファイルにアクセスできるディレクトリパスの配列です。--allow で追加できます(どちらも指定されない場合のデフォルトは、現在の作業ディレクトリです) |
logging.level | ログレベル:trace、debug、info、warn、error(デフォルト:warn) |
logging.audit_log_path | 破壊的操作を記録する追記専用の JSON Lines 監査ログのパス(デフォルト:null — 監査ログは書き込まれません) |
rate_limit.max_burst | スロットリングが適用されるまでに許可される変更操作の最大バースト数です。読み取り専用ツールにはレート制限が適用されません(デフォルト:120) |
rate_limit.refill_per_sec | 変更操作用トークンバケットの補充レートです。1 秒あたりのトークン数で指定します(デフォルト:30.0) |
ansi_code_page | 新しいフットプリント名の書き込みに使用する Windows ANSI コードページです。874、932、936、949、950、1250~1258、または 65001 を指定できます。ライブラリのコードページを検出する際は、まずこのコードページでの読み取りも試み、コードページが表示されないライブラリもこのコードページで読み取ります。Altium Designer 21 は、フットプリント名をこれらのバイトからマシンのコードページを通じて表示するため、ライブラリを開く Altium が実行されるマシンのコードページを指定してください(デフォルト:null — Windows ではシステムのコードページ、それ以外では 1252) |
STEP モデルの統合
STEP モデルは添付するものであり、生成するものではありません。このツールは、既存の STEP ファイルをフットプリントにリンクします。
{
"step_model": {
"filepath": "./3d-models/0603.step",
"x_offset": 0,
"y_offset": 0,
"z_offset": 0,
"rotation": 0
}
}
埋め込みモデルと外部モデル
Altium では、3D モデルを参照する方法が 2 つあります。
| 種類 | 保存先 | ポータビリティ |
|---|---|---|
| 埋め込み | STEP データが .PcbLib ファイル内に保存されます | 完全にポータブルです。モデルはライブラリと一緒に移動します |
| 外部 | ディスク上の .step ファイルへのファイルパス参照です | ポータブルではありません。参照先のパスにファイルが存在する必要があります |
ライブラリ間でコンポーネントをコピーまたはマージする場合:
- 埋め込みモデルはコンポーネントと一緒に移動します。
copy_component_cross_libraryとmerge_librariesはどちらも、参照されるモデルストリームをターゲットにコピーするため(複数のフットプリントで共有されるモデルは 1 回だけコピーされます)、移動後もボディが解決されます。 - 外部モデル参照:
copy_component_cross_libraryは、ソースライブラリからの相対パスが別の場所で解決されることはほとんどないため、デフォルトでは警告を出して削除します。保持するにはpreserve_external_paths=trueを渡してください。merge_librariesは外部モデル参照を変更せずに引き継ぎます。
コピー時に 3D データを確実に保持するには、ソースライブラリにモデルを埋め込んでください。
埋め込みモデルの抽出
ライブラリから埋め込み STEP データを抽出するには、extract_step_model を使用します。
{
"name": "extract_step_model",
"arguments": {
"filepath": "./MyLibrary.PcbLib",
"output_path": "./extracted_model.step"
}
}
パラメトリック 3D モデルの生成には、専用のメカニカル MCP サーバーを将来のプロジェクトとして計画しています。
自動バックアップ
破壊的な操作(削除、更新、マージ、一括更新)の前に、サーバーは対象ファイルのタイムスタンプ付きバックアップを自動的に作成します。バックアップには次の形式が使用されます。
MyLibrary.PcbLib.20260125_143022.bak
バックアップが別のバックアップを置き換えることはありません。同じ秒内に2つ目のバックアップが作成される場合は、MyLibrary.PcbLib.20260125_143022_001.bak、続いて_002のようになります。
バックアップの保持: ファイルごとに直近の5件のバックアップが保持されます。また、サーバーの起動後にそのファイルについて最初に作成されたバックアップも保持され、セッションによる変更前のファイルが保存されます。ディスク使用量が無制限に増加するのを防ぐため、それより古いバックアップは自動的に削除されます。
バックアップを作成する操作:
delete_componentupdate_componentupdate_padupdate_primitiverename_componentcopy_componentcopy_component_cross_library(対象ファイル)merge_libraries(対象ファイル)reorder_componentsbatch_updatebulk_renamerepair_librarymanage_schlib_parametersmanage_schlib_footprintswrite_pcblib/write_schlib(上書き時)import_library(上書き時)restore_backup(選択したバックアップで置き換える前の現在のファイル)
バックアップの管理: list_backupsで利用可能なバックアップを確認し、restore_backupで以前のバージョンに戻せます。
ドライランのサポート: 次の操作ではdry_run=trueを指定して、ファイルを変更せずに変更内容をプレビューできます。
delete_component— 削除されるコンポーネントをプレビューしますupdate_component— コンポーネントの置き換え内容をプレビューしますupdate_pad/update_primitive— プロパティの変更内容をプレビューしますbulk_rename— 名前の変更内容をプレビューしますrepair_library— 削除対象の孤立した参照をプレビューしますbatch_update— ライブラリ全体の更新内容をプレビューしますcopy_component/rename_component/merge_libraries
注意事項
西欧圏以外のWindowsで作成されたライブラリ
Altiumは、ほとんどの名前を、書き込み元のマシンのWindowsコードページでプレーンなバイト列として保存し、そのコードページが何であったかは記録しません。そのため、中国語、日本語、韓国語、中欧、キリル文字、ギリシャ語、トルコ語、バルト語、ヘブライ語、アラビア語、ベトナム語、タイ語のWindowsで作成されたライブラリは、Windows-1252を前提とするツールでは文字化けして読み込まれます((0402が£¨0402と表示されるなど)。
このサーバーは、実際の名前がバイト列とUnicodeの両方で記録されたフットプリントをもとにライブラリのコードページを特定し、すべての名前をそのコードページで読み込み、変更せずに書き戻すため、再書き込み後もバイト単位で同一の状態が保たれます。このようなライブラリを読み込んだり編集したりするための設定は不要です。
次の2点にご注意ください。
- Altiumで表示する必要がある名前。 Altium Designer 21以前では、フットプリント名はバイト列を実行中のマシンのコードページでデコードして表示され、Unicodeのコピーは読み取られません。そのため、新規作成または名前変更されたフットプリントは、サーバー自身のコードページ(Windowsではシステムのコードページ)で書き込まれます。サーバーが、ライブラリを開くAltiumとは異なるロケールのマシンで動作する場合は、設定ファイルの
ansi_code_pageまたはコマンドラインの--ansi-code-pageでそのコードページを指定してください(874、932、936、949、950、1250~1258、または65001)。 - コードページで表現できない文字。 Altiumと同様に、このサーバーもその文字を
?に置き換えます。Altiumと同様、名前全体はコンポーネントのパラメーターに保持され、次回読み込む際に元どおりに復元されます。
長いコンポーネント名
31文字を超えるコンポーネント名もサポートされています。OLE Compound File形式では保存名が31文字に制限されているため、長い名前は内部的に自動で切り詰められますが、名前全体はコンポーネントのパラメーターに保持されます。この処理は透過的に行われるため、長さを問わずコンポーネント名を使用でき、読み込みと書き込みを繰り返しても名前全体が保持されます。
プライバシーポリシー
altium-designer-mcp はローカルツールであり、何も収集しません。
- データ収集:ありません。このサーバーにはテレメトリーも分析機能もなく、このプロジェクトのサービスを含め、いかなるサービスにも接続しません。
--httpを指定した場合は、指定したアドレスで MCP クライアントからの接続を待ち受けますが、それでも外部には何も送信しません。 - 使用と保存:許可したフォルダー(
allowed_pathsまたは--allow)内のライブラリファイルと、変更前に同じ場所へ作成するタイムスタンプ付きの.bakコピーのみを読み書きします。任意の監査ログ(logging.audit_log_path)は、選択したローカルファイルに保存され、ツール名、ファイル名、実行結果を記録します。ライブラリの内容は記録しません。 - 第三者との共有:ありません。お使いのマシンからデータが外部へ出ることはありません。
- データの保持:ファイルとバックアップは、削除するまで保持されます。バックアップはライブラリごとに最新の5件までに制限されます。
- お問い合わせ:[email protected]、または非公開にする必要のない内容については GitHub issue をご利用ください。
ドキュメント
| 対象… | 参照先 |
|---|---|
| AI クライアントへのサーバーの接続方法 | docs/CLIENT_SETUP.md — クライアントごとに説明 |
| 接続後に依頼できる内容 | docs/USAGE.md — ワークフロー、プロンプト、ヒント |
| AI に適切な使い方を伝える方法 | docs/AGENT_GUIDE.md(プロジェクト概要に貼り付け)、docs/AI_WORKFLOW.md |
| すべてのツール、パラメーター、使用例 | docs/TOOLS.md。エラーメッセージは docs/errors.md |
| この設計を採用した理由 | docs/VISION.md、docs/ARCHITECTURE.md |
| ファイル形式の詳細(バイト単位) | docs/PCBLIB_FORMAT.md、docs/SCHLIB_FORMAT.md |
| セキュリティモデルと脅威分析 | docs/SECURITY.md(報告先:SECURITY.md) |
| リリースのビルドと検証方法 | docs/RELEASING.md。コード署名ポリシー |
コントリビューション
コントリビューションを歓迎します!ガイドラインは CONTRIBUTING.md をご覧ください。
- STYLE.md のスタイルガイドに従ってください
- セキュリティ上の問題については SECURITY.md をご覧ください
開発
cargo test
書き込み処理のテストでは、テストデータをプログラムで生成します。リーダーのテストでは、コミット済みの Altium 作成のゴールデンフィクスチャーを解析します(サンプルファイルを参照)。一時ファイルは .tmp/(Git の追跡対象外)に作成され、自動的にクリーンアップされます。
ビルド、フォーマット、Lint のすべてのコマンドは、CONTRIBUTING.md § 開発環境のセットアップを正式な参照先としてください。
ライセンス
Copyright (C) 2026 The Embedded Society https://github.com/embedded-society/altium-designer-mcp.
GNU General Public License v3.0 — LICENCE をご覧ください。
リンク
サンプルファイル
Altium 作成のサンプルライブラリは scripts/samples/ にゴールデンフィクスチャーとしてコミットされています。リーダーのテスト(tests/samples_pcblib.rs、tests/samples_schlib.rs)では、CI でこれらを解析し、正解データとして使用します。サンプルを(再)生成する PowerShell/DelphiScript ツールには実際の Altium のインストールが必要で、手動でのみ実行できます。
サンプルファイルと現場で使用するツールの詳細は scripts/README.md をご覧ください。
先行事例と謝辞
このプロジェクトは、優れたオープンソースの取り組みの数々を礎としており、関係者の皆さまに感謝します。
- AltiumSharp(MIT)— 最も完成度の高いオープンな Altium リーダー/ライターです。バイナリ形式を実際の正解データと照合して検証するための、信頼できるリファレンスとして使用しました(DTO、バイナリシリアライズコード、ゴールデンデータの
TestData)。 - pyAltiumLib — 独立した Python リーダーです。生成したファイルが実際に解析できることを確認するため、CI の可読性オラクル(
tests/integration/)として使用しています。 - python-altium — 初期の Altium 形式ドキュメントです。
- coffeenmusic/altium-mcp(MIT)— 実行中の Altium アプリケーションを操作する MCP サーバーです。このプロジェクトを補完するもので(本プロジェクトはライブラリファイルをオフラインで生成・編集し、こちらは実行中のセッションを操作します)、オンサイトの Altium 自動化(
scripts/altium/)向けに、RunScript の起動とファイルベースのブリッジのパターンを応用しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。