| (同じ利用者による、間の4版が非表示) | |||
| 2行目: | 2行目: | ||
KiCAD MCPサーバは、電子回路設計ソフトウェアであるKiCADをAIアシスタントから操作可能にするためのModel Context Protocol (MCP) サーバである。<br> | KiCAD MCPサーバは、電子回路設計ソフトウェアであるKiCADをAIアシスタントから操作可能にするためのModel Context Protocol (MCP) サーバである。<br> | ||
このMCPを使用することにより、Claude等のLLMがKiCADプロジェクトの管理、回路図の操作、PCBレイアウトの編集等を実行することができる。<br> | このMCPを使用することにより、Claude等のLLMがKiCADプロジェクトの管理、回路図の操作、PCBレイアウトの編集等を実行することができる。<br> | ||
<br> | |||
現在、2つの異なるKiCAD MCPサーバの実装が存在する。<br> | |||
* lamaalrajih/kicad-mcp | |||
*: Python実装のサーバで、FastMCPを使用した軽量な実装である。 | |||
*: 基本的なPCB操作、DRC実行、Gerberファイル出力等の機能を提供する。 | |||
* mixelpixx/KiCAD-MCP-Server | |||
*: TypeScriptとPythonのハイブリッド実装で、より高度な機能を提供する。 | |||
*: 52のツール、8のリソース、回路図操作、IPC統合等の包括的な機能を備えている。 | |||
<br> | <br> | ||
KiCAD MCPサーバは、以下に示すような機能を提供する。<br> | KiCAD MCPサーバは、以下に示すような機能を提供する。<br> | ||
| 11行目: | 19行目: | ||
* Design Rule Check (DRC) の実行 | * Design Rule Check (DRC) の実行 | ||
* Electrical Rule Check (ERC) の実行 | * Electrical Rule Check (ERC) の実行 | ||
* Gerberファイル等の製造データの出力 | |||
<br> | |||
両MCPとも、Standard I/O (STDIO) トランスポートを使用してローカル環境で動作する。<br> | |||
これにより、Claude Desktop、Claude Code、Cursor等のMCPクライアントと統合することができる。<br> | |||
<br><br> | |||
== サーバの比較 == | |||
下表に、2つのKiCAD MCPサーバの違いを示す。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ KiCAD MCPサーバの比較 | |||
|- | |||
! 特徴 !! lamaalrajih/kicad-mcp !! mixelpixx/KiCAD-MCP-Server | |||
|- | |||
| 実装言語 || Python (FastMCP) || TypeScript + Python | |||
|- | |||
| ツール数 || 基本的なツールセット || 52ツール | |||
|- | |||
| リソース || なし || 8リソース | |||
|- | |||
| 回路図操作 || なし || あり (kicad-skip使用) | |||
|- | |||
| IPC統合 || なし || あり (実験的) | |||
|- | |||
| JLCPCB統合 || なし || 開発中 | |||
|- | |||
| プラットフォーム || Linux中心 || Linux、Windows、macOS | |||
|- | |||
| プロトコル準拠 || MCP基本実装 || MCP 2025-06-18完全準拠 | |||
|- | |||
| セットアップの複雑さ || シンプル || 中程度 (自動スクリプトあり) | |||
|- | |||
| 対象ユーザ || 基本的なPCB操作を必要とするユーザ || 高度な機能を必要とするユーザ | |||
|} | |||
</center> | |||
<br><br> | |||
== サーバの選択 == | |||
どちらのサーバを使用するかは、プロジェクトの要件によって異なる。<br> | |||
<br> | <br> | ||
==== lamaalrajih/kicad-mcpを選択する場合 ==== | |||
* 基本的なPCB操作のみが必要な場合 | |||
* シンプルなセットアップを好む場合 | |||
* Python開発環境に精通している場合 | |||
* 既存のFastMCPベースのツールを統合したい場合 | |||
<br> | <br> | ||
KiCAD | ==== mixelpixx/KiCAD-MCP-Serverを選択する場合 ==== | ||
* 包括的なツールセットが必要な場合 | |||
* 回路図操作機能が必要な場合 | |||
* リアルタイムUI同期を使用したい場合 | |||
* Windows環境での使用を想定している場合 | |||
* JLCPCB統合等の将来的な機能拡張を期待する場合 | |||
* MCP 2025-06-18仕様への完全準拠が必要な場合 | |||
<br><br> | |||
== サーバ1 : lamaalrajih/kicad-mcp == | |||
==== 概要 ==== | |||
lamaalrajih/kicad-mcpは、PythonとFastMCPを使用したシンプルなKiCAD MCPサーバの実装である。<br> | |||
基本的なPCB設計操作、デザインルールチェック、製造データの出力等の機能を提供する。<br> | |||
<br> | <br> | ||
以下の例では、PythonとFastMCPを使用したKiCAD MCPサーバの基本構造を示している。<br> | 以下の例では、PythonとFastMCPを使用したKiCAD MCPサーバの基本構造を示している。<br> | ||
| 71行目: | 133行目: | ||
* アクセスログの監視 | * アクセスログの監視 | ||
* ツールのバージョン管理とドキュメントの維持 | * ツールのバージョン管理とドキュメントの維持 | ||
<br> | |||
==== サーバ環境のインストール ==== | |||
== サーバ環境のインストール == | |||
まず、システムの更新を行う。<br> | まず、システムの更新を行う。<br> | ||
# RHEL | # RHEL | ||
| 94行目: | 155行目: | ||
# Debian | # Debian | ||
sudo apt install curl wget git build-essential python3 python3-pip | sudo apt install curl wget git build-essential python3 python3-pip | ||
<br> | |||
==== KiCADのインストール ==== | |||
== KiCADのインストール == | |||
インストールが完了したら、KiCADのバージョンを確認する。<br> | インストールが完了したら、KiCADのバージョンを確認する。<br> | ||
kicad-cli version | kicad-cli version | ||
<br> | <br> | ||
==== RHEL==== | ===== RHEL ===== | ||
RHELでは、EPELリポジトリを有効化してKiCADをインストールする。<br> | RHELでは、EPELリポジトリを有効化してKiCADをインストールする。<br> | ||
sudo dnf install epel-release | sudo dnf install epel-release | ||
sudo dnf install kicad kicad-doc kicad-packages3d | sudo dnf install kicad kicad-doc kicad-packages3d | ||
<br> | <br> | ||
==== SUSE ==== | ===== SUSE ===== | ||
SUSEでは、公式リポジトリからKiCADをインストールする。<br> | SUSEでは、公式リポジトリからKiCADをインストールする。<br> | ||
sudo zypper install kicad kicad-doc kicad-packages3d | sudo zypper install kicad kicad-doc kicad-packages3d | ||
<br> | <br> | ||
==== Debian ==== | ===== Debian ===== | ||
Debianでは、公式リポジトリからKiCADをインストールする。<br> | Debianでは、公式リポジトリからKiCADをインストールする。<br> | ||
sudo apt install kicad kicad-doc-ja kicad-libraries | sudo apt install kicad kicad-doc-ja kicad-libraries | ||
| 117行目: | 177行目: | ||
sudo apt update | sudo apt update | ||
sudo apt install kicad | sudo apt install kicad | ||
<br> | |||
==== Python開発環境の準備 ==== | |||
== Python開発環境の準備 == | ===== Python仮想環境の作成 ===== | ||
==== Python仮想環境の作成 ==== | |||
プロジェクトディレクトリを作成して、Python仮想環境を設定する。<br> | プロジェクトディレクトリを作成して、Python仮想環境を設定する。<br> | ||
mkdir -p ~/kicad-mcp-server | mkdir -p ~/kicad-mcp-server | ||
| 137行目: | 196行目: | ||
pip install fastmcp | pip install fastmcp | ||
<br> | <br> | ||
==== KiCAD Python APIのインストール ==== | ===== KiCAD Python APIのインストール ===== | ||
KiCADのPython APIは、KiCADのインストール時に自動的にインストールされる。<br> | KiCADのPython APIは、KiCADのインストール時に自動的にインストールされる。<br> | ||
Python仮想環境からKiCAD Python APIにアクセスできるように、シンボリックリンクを作成する。<br> | Python仮想環境からKiCAD Python APIにアクセスできるように、シンボリックリンクを作成する。<br> | ||
| 170行目: | 229行目: | ||
KiCAD Python APIが正常にインポートできるか確認する。<br> | KiCAD Python APIが正常にインポートできるか確認する。<br> | ||
python3 -c "import pcbnew; print(pcbnew.Version())" | python3 -c "import pcbnew; print(pcbnew.Version())" | ||
<br><br> | <br> | ||
==== クライアント接続設定 ==== | |||
== KiCAD MCPサーバの実装 == | ===== Claude Desktopからの接続 ===== | ||
==== 基本的なサーバ構造 ==== | Claude Desktopの設定ファイルを編集する。<br> | ||
<br> | |||
設定ファイルの場所は、以下の通りである。<br> | |||
* Linuxの場合 | |||
*: ~/.config/Claude/claude_desktop_config.json | |||
* Windowsの場合 | |||
*: %APPDATA%\Claude\claude_desktop_config.json | |||
<br> | |||
設定ファイルの内容を編集する。<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"kicad-server": { | |||
"command": "/home/<ユーザ名>/kicad-mcp-server/venv/bin/python", | |||
"args": ["/home/<ユーザ名>/kicad-mcp-server/server.py"], | |||
"env": { | |||
# RHEL / SUSEの場合 | |||
"PYTHONPATH": "/usr/lib64/python3.x/site-packages" | |||
# Debianの場合 | |||
"PYTHONPATH": "/usr/lib/python3/dist-packages" | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
環境変数 <code>PYTHONPATH</code> を設定することにより、KiCAD Python APIにアクセスできるようにする。<br> | |||
<br> | |||
Claude Desktopを再起動して、KiCAD MCPサーバが利用可能であることを確認する。<br> | |||
<br> | |||
==== 設定 ==== | |||
KiCAD MCPサーバは、環境変数 または .envファイル を使用して設定することができる。<br> | |||
<br> | |||
===== 主要な設定オプション ===== | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! 環境変数 | |||
! 説明 | |||
! 例 | |||
|- | |||
| KICAD_SEARCH_PATHS | |||
| KiCADプロジェクトを検索するディレクトリ<br>(カンマ区切りのリスト) | |||
| ~/pcb,~/Electronics,~/Projects | |||
|- | |||
| KICAD_USER_DIR | |||
| デフォルトのKiCADユーザディレクトリを上書きする。 | |||
| ~/Documents/KiCadProjects | |||
|- | |||
| KICAD_APP_PATH | |||
| デフォルトのKiCADアプリケーションパスを上書きする。 | |||
| /Applications/KiCad9/KiCad.app | |||
|} | |||
</center> | |||
<br> | |||
環境設定ファイル (.envファイル) を作成する。<br> | |||
<br> | |||
.envファイルは、KiCAD MCPサーバのプロジェクトルートディレクトリに配置する。<br> | |||
したがって、main.pyファイル や .env.exampleファイルと同じ階層、kicad-mcpディレクトリ直下に配置することが標準的である。<br> | |||
<br> | |||
* Linux | |||
*: <syntaxhighlight lang="sh"> | |||
# .envファイル | |||
KICAD_SEARCH_PATHS=~/pcb,~/Electronics,~/Projects | |||
KICAD_USER_DIR=~/Documents/KiCadProjects | |||
KICAD_APP_PATH=/usr/bin/kicad | |||
</syntaxhighlight> | |||
<br> | |||
* Winodws | |||
*: <syntaxhighlight lang="powershell"> | |||
# .envファイル | |||
KICAD_SEARCH_PATHS=C:/Users/<ユーザ名>/pcb,C:/Users/<ユーザ名>/Electronics,C:/Users/<ユーザ名>/Projects | |||
KICAD_USER_DIR=C:/Users/<ユーザ名>/Documents/KiCadProjects | |||
KICAD_APP_PATH=C:/Program Files/KiCad/9.0/bin/kicad.exe | |||
</syntaxhighlight> | |||
<br> | |||
==== プロジェクト構造 ==== | |||
KiCAD MCPサーバは、モジュール構造で構成されている。<br> | |||
<br> | |||
kicad-mcp/ | |||
├── README.md # プロジェクトドキュメント | |||
├── main.py # サーバを実行するエントリーポイント | |||
├── requirements.txt # Python依存関係 | |||
├── .env.example # 環境設定の例 | |||
├── kicad_mcp/ # メインパッケージディレクトリ | |||
│ ├── __init__.py | |||
│ ├── server.py # MCPサーバのセットアップ | |||
│ ├── config.py # 設定定数と設定項目 | |||
│ ├── context.py # ライフサイクル管理と共有コンテキスト | |||
│ ├── resources/ # リソースハンドラ | |||
│ ├── tools/ # ツールハンドラ | |||
│ ├── prompts/ # プロンプトテンプレート | |||
│ └── utils/ # ユーティリティ関数 | |||
├── docs/ # ドキュメント | |||
└── tests/ # ユニットテスト | |||
<br> | |||
下表に、各ディレクトリの役割を示す。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! ディレクトリ | |||
! 説明 | |||
|- | |||
| kicad_mcp/resources/ | |||
| KiCADプロジェクトファイル、回路図、PCBレイアウト等のリソースを処理するハンドラを格納する。<br>これらのハンドラは、MCPクライアントからのリソース要求に応答する。 | |||
|- | |||
| kicad_mcp/tools/ | |||
| KiCADの操作を実行するツールのハンドラを格納する。<br>各ツールは特定の機能 (DRCの実行、Gerberファイルの出力等) を提供する。 | |||
|- | |||
| kicad_mcp/prompts/ | |||
| AIアシスタントが使用するプロンプトテンプレートを格納する。<br>これらのテンプレートは、特定のタスクに対して適切なコンテキストを提供する。 | |||
|- | |||
| kicad_mcp/utils/ | |||
| ファイル操作、パスの検証、ログ処理等の共通ユーティリティ関数を格納する。 | |||
|- | |||
| docs/ | |||
| APIドキュメント、使用例、開発ガイド等の詳細なドキュメントを格納する。 | |||
|- | |||
| tests/ | |||
| 各モジュールのユニットテストおよび統合テストを格納する。 | |||
|} | |||
</center> | |||
<br> | |||
==== KiCAD MCPサーバの実装 ==== | |||
===== 基本的なサーバ構造 ===== | |||
KiCAD MCPサーバの基本実装を行う。<br> | KiCAD MCPサーバの基本実装を行う。<br> | ||
<br> | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
# server.pyファイル | # server.pyファイル | ||
| 329行目: | 517行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== エラーハンドリング ==== | ===== エラーハンドリング ===== | ||
本番環境では、詳細なエラーハンドリングを定義する。<br> | 本番環境では、詳細なエラーハンドリングを定義する。<br> | ||
<br> | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
import logging | import logging | ||
| 371行目: | 560行目: | ||
return None | return None | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
==== MCP Inspectorによるテスト ==== | |||
== MCP Inspectorによるテスト == | |||
MCP Inspectorを使用して、KiCAD MCPサーバのツールをテストする。<br> | MCP Inspectorを使用して、KiCAD MCPサーバのツールをテストする。<br> | ||
<br> | <br> | ||
| 397行目: | 585行目: | ||
* export_gerber | * export_gerber | ||
*: Gerberファイルの出力 | *: Gerberファイルの出力 | ||
<br> | <br> | ||
==== Systemdサービスファイルの作成 ==== | |||
== Systemdサービスファイルの作成 == | |||
KiCAD MCPサーバをシステムサービスとして常時起動させる場合、systemdユニットファイルを作成する。<br> | KiCAD MCPサーバをシステムサービスとして常時起動させる場合、systemdユニットファイルを作成する。<br> | ||
<br> | <br> | ||
| 478行目: | 631行目: | ||
ログを確認する。<br> | ログを確認する。<br> | ||
sudo journalctl -u kicad-mcp-server -f | sudo journalctl -u kicad-mcp-server -f | ||
<br> | |||
==== セキュリティ設定 ==== | |||
== セキュリティ設定 == | ===== ファイルアクセスの制限 ===== | ||
==== ファイルアクセスの制限 ==== | |||
KiCAD MCPサーバがアクセス可能なディレクトリを制限することが推奨される。<br> | KiCAD MCPサーバがアクセス可能なディレクトリを制限することが推奨される。<br> | ||
<br> | <br> | ||
| 514行目: | 666行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== 入力データのバリデーション ==== | ===== 入力データのバリデーション ===== | ||
ツールのパラメータに対して、適切なバリデーションを行う。<br> | ツールのパラメータに対して、適切なバリデーションを行う。<br> | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
| 536行目: | 688行目: | ||
return True | return True | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
==== バックアップとリストア ==== | |||
== バックアップとリストア == | ===== KiCADプロジェクトのバックアップ ===== | ||
==== KiCADプロジェクトのバックアップ ==== | |||
定期的にKiCADプロジェクトをバックアップする。<br> | 定期的にKiCADプロジェクトをバックアップする。<br> | ||
<br> | <br> | ||
| 570行目: | 721行目: | ||
# 毎日午前3時にバックアップを実行 | # 毎日午前3時にバックアップを実行 | ||
0 3 * * * /path/to/backup-kicad-projects.sh | 0 3 * * * /path/to/backup-kicad-projects.sh | ||
<br> | |||
==== トラブルシューティング ==== | |||
== トラブルシューティング == | ===== KiCAD Python APIがインポートできない ===== | ||
==== KiCAD Python APIがインポートできない ==== | |||
* KiCADが正しくインストールされているか確認する。 | * KiCADが正しくインストールされているか確認する。 | ||
*: <pre>kicad-cli version</pre> | *: <pre>kicad-cli version</pre> | ||
| 581行目: | 731行目: | ||
*: <pre>ls -la venv/lib/python3.x/site-packages/pcbnew*</pre> | *: <pre>ls -la venv/lib/python3.x/site-packages/pcbnew*</pre> | ||
<br> | <br> | ||
==== PCBファイルの読み込みに失敗する ==== | ===== PCBファイルの読み込みに失敗する ===== | ||
* ファイルパスが正しいか確認する。 | * ファイルパスが正しいか確認する。 | ||
* ファイルの読み取り権限があるか確認する。 | * ファイルの読み取り権限があるか確認する。 | ||
| 587行目: | 737行目: | ||
* KiCADのバージョンとファイルフォーマットの互換性を確認する。 | * KiCADのバージョンとファイルフォーマットの互換性を確認する。 | ||
<br> | <br> | ||
==== Claude Desktopから接続できない ==== | ===== Claude Desktopから接続できない ===== | ||
* 設定ファイルのパスが正しいか確認する。 | * 設定ファイルのパスが正しいか確認する。 | ||
* Python仮想環境のパスが正しいか確認する。 | * Python仮想環境のパスが正しいか確認する。 | ||
| 593行目: | 743行目: | ||
* STDIOトランスポートの場合、標準出力にログを出力していないか確認する。 | * STDIOトランスポートの場合、標準出力にログを出力していないか確認する。 | ||
<br> | <br> | ||
==== Gerberファイルの出力に失敗する ==== | ===== Gerberファイルの出力に失敗する ===== | ||
* 出力ディレクトリの書き込み権限があるか確認する。 | * 出力ディレクトリの書き込み権限があるか確認する。 | ||
* ディスク容量が十分にあるか確認する。 | * ディスク容量が十分にあるか確認する。 | ||
* KiCADのプロットコントローラの設定を確認する。 | * KiCADのプロットコントローラの設定を確認する。 | ||
<br> | |||
==== パフォーマンス最適化 ==== | |||
== パフォーマンス最適化 == | ===== 大規模PCBファイルの処理 ===== | ||
==== 大規模PCBファイルの処理 ==== | |||
大規模なPCBファイルを処理する場合、メモリ使用量と処理時間に注意する必要がある。<br> | 大規模なPCBファイルを処理する場合、メモリ使用量と処理時間に注意する必要がある。<br> | ||
<br> | <br> | ||
| 624行目: | 773行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== キャッシングの実装 ==== | ===== キャッシングの実装 ===== | ||
頻繁にアクセスされるデータをキャッシュすることにより、パフォーマンスを向上させる。<br> | 頻繁にアクセスされるデータをキャッシュすることにより、パフォーマンスを向上させる。<br> | ||
<br> | <br> | ||
| 652行目: | 801行目: | ||
return {"error": str(e)} | return {"error": str(e)} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
==== 外部リンク ==== | |||
* [https://www.kicad.org/ KiCAD公式サイト] | |||
* [https://docs.kicad.org/ KiCADドキュメント] | |||
* [https://github.com/KiCad/kicad-source-mirror KiCAD GitHubリポジトリ] | |||
* [https://modelcontextprotocol.io/ Model Context Protocol公式サイト] | |||
* [https://glama.ai/mcp/servers/@lamaalrajih/kicad-mcp lamaalrajih/kicad-mcp on Glama] | |||
<br><br> | <br><br> | ||
== 外部リンク == | == サーバ2 : mixelpixx/KiCAD-MCP-Server == | ||
==== 概要 ==== | |||
mixelpixx/KiCAD-MCP-Serverは、TypeScriptとPythonのハイブリッド実装による高度なKiCAD MCPサーバである。<br> | |||
MCP 2025-06-18仕様に完全準拠しており、52のツール、8のリソース、包括的なエラーハンドリング、クロスプラットフォーム対応を提供する。<br> | |||
<br> | |||
===== 主要な機能 ===== | |||
* 52のツール | |||
*: JSON Schemaによる完全なバリデーション | |||
* 8のリソース | |||
*: プロジェクト状態へのリアルタイムアクセス | |||
* IPC API統合 (実験的) | |||
*: KiCAD 9.0のIPC APIによるリアルタイムUI同期 | |||
* 回路図設計機能 | |||
*: kicad-skipライブラリによる回路図操作 | |||
* JLCPCB統合 (開発中) | |||
*: 部品データベースとの統合 | |||
* ハイブリッドバックエンド | |||
*: IPC APIとSWIG APIの自動切り替え | |||
<br> | |||
===== アーキテクチャ ===== | |||
KiCAD-MCP-Serverは、3層構造で実装されている。<br> | |||
* TypeScriptサーバ層 (src/) | |||
*: MCP 2025-06-18プロトコルの実装、Pythonサブプロセスのライフサイクル管理、メッセージルーティング、ロギングとエラーリカバリ | |||
* Pythonインターフェース層 (python/) | |||
*: MCPメッセージハンドラ、コマンドルーティング、バックエンドの抽象化 | |||
* KiCAD統合層 | |||
*: pcbnew API (SWIG)、IPC API (kipy)、kicad-skip (回路図操作) | |||
<br> | |||
===== 動作要件 ===== | |||
* KiCAD 9.0以上 | |||
*: Python API (pcbnew) を含む | |||
* Node.js 18以上 | |||
* Python 3.10以上 | |||
* 必須Pythonパッケージ | |||
*: kicad-python (kipy) >= 0.5.0 (IPC API対応、オプション) | |||
*: kicad-skip >= 0.1.0 | |||
*: Pillow >= 9.0.0 | |||
*: cairosvg >= 2.7.0 | |||
*: colorlog >= 6.7.0 | |||
*: pydantic >= 2.5.0 | |||
*: requests >= 2.32.5 | |||
*: python-dotenv >= 1.0.0 | |||
<br> | |||
==== インストール ==== | |||
===== Linux ===== | |||
KiCAD 9.0と必要な依存関係をインストールする。<br> | |||
# RHEL | |||
sudo dnf install epel-release | |||
sudo dnf install kicad kicad-doc kicad-packages3d | |||
# SUSE | |||
sudo zypper install kicad kicad-doc kicad-packages3d | |||
# Debian | |||
sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases | |||
sudo apt update | |||
sudo apt install kicad kicad-libraries | |||
<br> | |||
Node.jsをインストールする。<br> | |||
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - | |||
# RHEL | |||
sudo dnf install nodejs | |||
# SUSE | |||
sudo zypper install nodejs | |||
# Debian | |||
sudo apt install nodejs | |||
<br> | |||
リポジトリをクローンしてビルドする。<br> | |||
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git | |||
cd KiCAD-MCP-Server | |||
npm install | |||
pip3 install -r requirements.txt | |||
npm run build | |||
<br> | |||
インストールを検証する。<br> | |||
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())" | |||
<br> | |||
===== Windows 11 ===== | |||
自動セットアップスクリプトを使用する。<br> | |||
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git | |||
cd KiCAD-MCP-Server | |||
.\setup-windows.ps1 | |||
<br> | |||
このスクリプトは以下の処理を自動的に実行する。<br> | |||
* KiCADのインストール検出 | |||
* 前提条件の検証 | |||
* 依存関係のインストール | |||
* プロジェクトのビルド | |||
* 設定ファイルの生成 | |||
* 診断の実行 | |||
<br> | |||
==== 設定 ==== | |||
===== Claude Desktop ===== | |||
Claude Desktopの設定ファイルを編集する。<br> | |||
<br> | |||
設定ファイルの場所は、以下の通りである。<br> | |||
* Linux | |||
*: ~/.config/Claude/claude_desktop_config.json | |||
* Windows | |||
*: %APPDATA%\Claude\claude_desktop_config.json | |||
<br> | |||
設定内容は以下の通りである。<br> | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"kicad": { | |||
"command": "node", | |||
"args": ["/path/to/KiCAD-MCP-Server/dist/index.js"], | |||
"env": { | |||
"PATH": "/usr/bin:/usr/local/bin:/home/user/.local/bin", | |||
"PYTHONPATH": "/usr/lib64/python3.x/site-packages", | |||
"KICAD_PYTHON": "/usr/bin/python3" | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
プラットフォーム別の環境変数 <code>PYTHONPATH</code> の設定は、以下の通りである。<br> | |||
* Linux (RHEL / SUSE) | |||
*: /usr/lib64/python3.x/site-packages | |||
* Linux (Debian) | |||
*: /usr/lib/kicad/lib/python3/dist-packages | |||
* Windows | |||
*: C:\Program Files\KiCad\9.0\lib\python3\dist-packages | |||
<br> | |||
===== Cline (VSCode) ===== | |||
Clineの設定ファイルを編集する。<br> | |||
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json | |||
<br> | |||
設定内容はClaude Desktopと同じフォーマットを使用する。<br> | |||
<br> | |||
===== Claude Code ===== | |||
Claude Codeは、カレントディレクトリ内のMCPサーバを自動的に検出するため、追加の設定は不要である。<br> | |||
<br> | |||
===== Cursor ===== | |||
Cursorでは、2つの方法でMCPサーバを追加できる。<br> | |||
<br> | |||
* グローバルMCPサーバとして追加する場合 (全てのプロジェクトで利用可能) | |||
*: ~/.cursor/mcp.jsonファイルを編集する。 | |||
*: <syntaxhighlight lang="json"> | |||
{ | |||
"mcpServers": { | |||
"kicad": { | |||
"autoApprove": [], | |||
"disabled": false, | |||
"timeout": 60, | |||
"command": "C:\\Program Files\\nodejs\\node.exe", | |||
"args": ["C:/path/to/kicad-mcp/dist/index.js"], | |||
"env": { | |||
"PYTHONPATH": "C:/Program Files/KiCad/9.0/lib/python3/dist-packages", | |||
"DEBUG": "mcp:*" | |||
}, | |||
"transportType": "stdio" | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
*: <br> | |||
* プロジェクト固有のMCPサーバとして追加する場合 | |||
*: プロジェクトディレクトリに .cursor/mcp.jsonファイルを作成 | |||
<br> | |||
設定後、[Cursor Settings] - [MCP]で更新ボタンを押下する。<br> | |||
<br> | |||
==== 利用可能なツール ==== | |||
KiCAD-MCP-Serverは、52のツールを提供する。これらのツールは機能別に分類されている。<br> | |||
<br> | |||
===== プロジェクト管理 (4ツール) ===== | |||
* create_project | |||
*: 新しいKiCADプロジェクトを初期化する | |||
* open_project | |||
*: 既存のプロジェクトファイルを読み込む | |||
* save_project | |||
*: 現在のプロジェクト状態を保存する | |||
* get_project_info | |||
*: プロジェクトのメタデータを取得する | |||
<br> | |||
===== ボード操作 (9ツール) ===== | |||
* set_board_size | |||
*: PCBの寸法を設定する | |||
* add_board_outline | |||
*: ボードエッジを作成する (矩形、円形、ポリゴン) | |||
* add_layer | |||
*: レイヤースタックにカスタムレイヤーを追加する | |||
* set_active_layer | |||
*: 作業レイヤーを切り替える | |||
* get_layer_list | |||
*: すべてのボードレイヤーをリストする | |||
* get_board_info | |||
*: ボードのプロパティを取得する | |||
* get_board_2d_view | |||
*: ボードのプレビュー画像を生成する | |||
* add_mounting_hole | |||
*: マウンティングホールを配置する | |||
* add_board_text | |||
*: テキスト注釈を追加する | |||
<br> | |||
===== コンポーネント配置 (10ツール) ===== | |||
* place_component | |||
*: フットプリントを指定して単一のコンポーネントを配置する | |||
* move_component | |||
*: 既存のコンポーネントを再配置する | |||
* rotate_component | |||
*: コンポーネントを指定角度で回転する | |||
* delete_component | |||
*: ボードからコンポーネントを削除する | |||
* edit_component | |||
*: コンポーネントのプロパティを変更する | |||
* get_component_properties | |||
*: コンポーネントの詳細を照会する | |||
* get_component_list | |||
*: 配置されたすべてのコンポーネントをリストする | |||
* place_component_array | |||
*: コンポーネントのグリッド/パターンを作成する | |||
* align_components | |||
*: 複数のコンポーネントを整列する | |||
* duplicate_component | |||
*: 既存のコンポーネントをコピーする | |||
<br> | |||
===== ルーティングとネット (8ツール) ===== | |||
* add_net | |||
*: 電気ネットを作成する | |||
* route_trace | |||
*: 銅箔トレースをルーティングする | |||
* add_via | |||
*: レイヤー遷移用のビアを配置する | |||
* delete_trace | |||
*: トレースを削除する | |||
* get_nets_list | |||
*: すべてのネットをリストする | |||
* create_netclass | |||
*: ルール付きのネットクラスを定義する | |||
* add_copper_pour | |||
*: 銅箔ゾーン/ポアを作成する | |||
* route_differential_pair | |||
*: 差動信号をルーティングする | |||
<br> | |||
===== ライブラリ管理 (4ツール) ===== | |||
* list_libraries | |||
*: 利用可能なフットプリントライブラリをリストする | |||
* search_footprints | |||
*: フットプリントを検索する | |||
* list_library_footprints | |||
*: ライブラリ内のフットプリントをリストする | |||
* get_footprint_info | |||
*: フットプリントの詳細を取得する | |||
<br> | |||
===== デザインルール (4ツール) ===== | |||
* set_design_rules | |||
*: DRCパラメータを設定する | |||
* get_design_rules | |||
*: 現在のルールを取得する | |||
* run_drc | |||
*: デザインルールチェックを実行する | |||
* get_drc_violations | |||
*: DRCエラーレポートを取得する | |||
<br> | |||
===== エクスポート (5ツール) ===== | |||
* export_gerber | |||
*: Gerber製造ファイルを生成する | |||
* export_pdf | |||
*: PDFドキュメントをエクスポートする | |||
* export_svg | |||
*: SVGベクターグラフィックスを作成する | |||
* export_3d | |||
*: 3Dモデルを生成する (STEP/VRML) | |||
* export_bom | |||
*: 部品表を作成する | |||
<br> | |||
===== 回路図設計 (6ツール) ===== | |||
* create_schematic | |||
*: 新しい回路図を初期化する | |||
* load_schematic | |||
*: 既存の回路図を開く | |||
* add_schematic_component | |||
*: シンボルを配置する | |||
* add_schematic_wire | |||
*: コンポーネントピンを接続する | |||
* list_schematic_libraries | |||
*: シンボルライブラリをリストする | |||
* export_schematic_pdf | |||
*: 回路図PDFをエクスポートする | |||
<br> | |||
===== UI管理 (2ツール) ===== | |||
* check_kicad_ui | |||
*: KiCADが実行中かチェックする | |||
* launch_kicad_ui | |||
*: KiCADアプリケーションを起動する | |||
<br> | |||
==== リソース ==== | |||
KiCAD-MCP-Serverは、8つのリソースを提供し、プロジェクト状態への読み取り専用アクセスを提供する。<br> | |||
<br> | |||
* kicad://project/current/info | |||
*: プロジェクトのメタデータ | |||
* kicad://project/current/board | |||
*: ボードのプロパティ | |||
* kicad://project/current/components | |||
*: コンポーネントリスト (JSON形式) | |||
* kicad://project/current/nets | |||
*: 電気ネット | |||
* kicad://project/current/layers | |||
*: レイヤースタック設定 | |||
* kicad://project/current/design-rules | |||
*: 現在のDRC設定 | |||
* kicad://project/current/drc-report | |||
*: デザインルール違反 | |||
* kicad://board/preview.png | |||
*: ボードビジュアライゼーション (PNG形式) | |||
<br> | |||
これらのリソースを使用することにより、AIアシスタントはツールを実行せずにプロジェクトの状態を照会できる。<br> | |||
<br> | |||
使用例を以下に示す。<br> | |||
# 現在のコンポーネントリストを表示する | |||
現在のコンポーネントリストを表示してください。 | |||
# 現在のデザインルールを確認する | |||
現在のデザインルールは何ですか? | |||
# ボードプレビューを表示する | |||
ボードのプレビューを表示してください。 | |||
# すべての電気ネットをリストする | |||
すべての電気ネットをリストしてください。 | |||
<br> | |||
==== 使用例 ==== | |||
===== 基本的なPCB設計ワークフロー ===== | |||
ドキュメントフォルダに「LEDBoard」という名前の新しいKiCADプロジェクトを作成してください。 | |||
ボードサイズを50mm x 50mmに設定して、矩形の外形線を追加してください。 | |||
各コーナーにマウンティングホールを配置してください。エッジから3mm、直径3mmです。 | |||
フロントシルクスクリーン上の位置x=25mm、y=45mmに「LED Controller v1.0」というテキストを追加してください。 | |||
<br> | |||
===== コンポーネント配置 ===== | |||
フットプリントLED_SMD:LED_0805_2012Metricを使用して、位置x=10mm、y=10mmにLEDを配置してください。 | |||
位置x=20mm、y=20mmから始まる4つの抵抗器 (R1-R4) のグリッドを5mm間隔で作成してください。 | |||
すべての抵抗器を水平に整列して、均等に配置してください。 | |||
<br> | |||
===== ルーティング ===== | |||
「LED1」という名前のネットを作成して、R1のパッド2からLED1のアノードまで0.3mmのトレースをルーティングしてください。 | |||
ボード全体を覆う底面レイヤーのGND用の銅箔ポアを追加してください。 | |||
USB_PとUSB_Nのための差動ペアを0.2mm幅と0.15mmギャップで作成してください。 | |||
<br> | |||
===== デザイン検証 ===== | |||
0.15mmのクリアランスと0.2mmの最小トラック幅のデザインルールを設定してください。 | |||
デザインルールチェックを実行して、違反がないか確認してください。 | |||
fabricationフォルダにGerberファイルをエクスポートしてください。 | |||
<br> | |||
=== IPC API統合 (実験的) === | |||
KiCAD 9.0で導入されたIPC APIを使用することにより、リアルタイムUI同期が可能になる。<br> | |||
<br> | |||
==== IPC APIの有効化 ==== | |||
KiCADで IPC APIを有効化する。<br> | |||
Preferences > Plugins > Enable IPC API Server | |||
<br> | |||
==== IPC対応コマンド ==== | |||
以下のコマンドがIPC APIに対応している。<br> | |||
* route_trace | |||
*: トレースのルーティング | |||
* add_via | |||
*: ビアの配置 | |||
* place_component | |||
*: コンポーネントの配置 | |||
* move_component | |||
*: コンポーネントの移動 | |||
* delete_component | |||
*: コンポーネントの削除 | |||
* add_copper_pour | |||
*: 銅箔ポアの追加 | |||
* refill_zones | |||
*: ゾーンの再塗りつぶし | |||
* add_board_outline | |||
*: ボード外形の追加 | |||
* add_mounting_hole | |||
*: マウンティングホールの追加 | |||
<br> | |||
==== ハイブリッドバックエンド ==== | |||
KiCAD-MCP-Serverは、IPC APIとSWIG APIのハイブリッドバックエンドを実装している。<br> | |||
* IPC APIが利用可能な場合 | |||
*: リアルタイムUI同期を使用 | |||
* IPC APIが利用できない場合 | |||
*: SWIG APIにフォールバック | |||
<br> | |||
この実装により、IPC APIのメリットを活用しながら、後方互換性を維持することができる。<br> | |||
<br> | |||
IPC機能は実験的であり、現在テスト中である。<br> | |||
一部のコマンドは、全てのシナリオで期待通りに動作しない場合がある。<br> | |||
<br> | |||
==== プロジェクト構造 ==== | |||
KiCAD-MCP-Serverのプロジェクト構造を以下に示す。<br> | |||
<br> | |||
KiCAD-MCP-Server/ | |||
├── src/ # TypeScriptソースコード | |||
│ ├── index.ts # メインエントリーポイント | |||
│ ├── mcp-server.ts # MCPサーバ実装 | |||
│ └── python-interface.ts # Pythonサブプロセス管理 | |||
├── python/ # Pythonインターフェース | |||
│ ├── kicad_interface.py # メインエントリーポイント | |||
│ ├── kicad_api/ # バックエンド実装 | |||
│ │ ├── base.py # 抽象基底クラス | |||
│ │ ├── ipc_backend.py # IPC APIバックエンド | |||
│ │ ├── swig_backend.py # SWIG APIバックエンド | |||
│ │ └── factory.py # バックエンドファクトリ | |||
│ ├── schemas/ # JSON Schema定義 | |||
│ │ └── tool_schemas.py # ツールスキーマ | |||
│ ├── resources/ # リソースハンドラ | |||
│ │ └── resource_definitions.py # リソース定義 | |||
│ └── commands/ # コマンド実装 | |||
│ ├── project.py # プロジェクト操作 | |||
│ ├── board.py # ボード操作 | |||
│ ├── component.py # コンポーネント配置 | |||
│ ├── routing.py # トレースルーティング | |||
│ ├── design_rules.py # DRC操作 | |||
│ ├── export.py # ファイル生成 | |||
│ ├── schematic.py # 回路図設計 | |||
│ └── library.py # フットプリントライブラリ | |||
├── config/ # 設定ファイル | |||
├── docs/ # ドキュメント | |||
├── tests/ # テスト | |||
├── scripts/ # ユーティリティスクリプト | |||
├── package.json # Node.js依存関係 | |||
├── requirements.txt # Python依存関係 | |||
├── tsconfig.json # TypeScript設定 | |||
└── README.md # プロジェクトドキュメント | |||
<br> | |||
==== トラブルシューティング ==== | |||
===== サーバがクライアントに表示されない ===== | |||
症状は、MCPサーバがClaude DesktopまたはClineに表示されないことである。<br> | |||
<br> | |||
解決方法を以下に示す。<br> | |||
* ビルドが完了していることを確認する | |||
*: <pre>ls dist/index.js</pre> | |||
* 設定ファイルのパスが絶対パスであることを確認する | |||
* MCPクライアントを完全に再起動する | |||
* クライアントのログでエラーメッセージを確認する | |||
<br> | |||
===== Pythonモジュールのインポートエラー ===== | |||
症状は、ModuleNotFoundError: No module named 'pcbnew' というエラーが発生することである。<br> | |||
<br> | |||
解決方法を以下に示す。<br> | |||
* KiCADのインストールを確認する | |||
*: <pre>python3 -c "import pcbnew"</pre> | |||
* 設定ファイルのPYTHONPATHがKiCADのインストールと一致しているか確認する | |||
* KiCADがPythonサポート付きでインストールされていることを確認する | |||
<br> | |||
===== ツール実行の失敗 ===== | |||
症状は、ツールが不明確なエラーで失敗することである。<br> | |||
<br> | |||
解決方法を以下に示す。<br> | |||
* サーバログを確認する | |||
*: <pre>~/.kicad-mcp/logs/kicad_interface.log</pre> | |||
* ボード操作を実行する前にプロジェクトが読み込まれていることを確認する | |||
* ファイルパスが相対パスではなく絶対パスであることを確認する | |||
* ツールパラメータの型がスキーマ要件と一致しているか確認する | |||
<br> | |||
===== Windows固有の問題 ===== | |||
症状は、サーバがWindowsで起動しないことである。<br> | |||
<br> | |||
解決方法を以下に示す。<br> | |||
* 自動診断を実行する。 | |||
*: <pre>.\setup-windows.ps1</pre> | |||
* Pythonパスが二重バックスラッシュを使用しているか確認する。 | |||
*: <pre>C:\\Program Files\\KiCad\\9.0</pre> | |||
* WindowsイベントビューアでNode.jsのエラーを確認する。 | |||
* Windows Troubleshooting Guide (docs/WINDOWS_TROUBLESHOOTING.md) を参照する。 | |||
<br> | |||
===== ヘルプの取得 ===== | |||
問題が解決しない場合は、以下の方法でサポートを受けることができる。<br> | |||
* GitHub Issues (https://github.com/mixelpixx/KiCAD-MCP-Server/issues) を確認する。 | |||
* サーバログを確認する。(~/.kicad-mcp/logs/kicad_interface.log) | |||
* 以下の情報を含めて新しいissueを開く。 | |||
*: オペレーティングシステムとバージョン、KiCADバージョン、Node.jsバージョン、完全なエラーメッセージとスタックトレース、関連するログの抜粋 | |||
<br><br> | |||
==== 外部リンク ==== | |||
* [https://github.com/mixelpixx/KiCAD-MCP-Server GitHub Repository] | |||
* [https://glama.ai/mcp/servers/@mixelpixx/KiCAD-MCP-Server mixelpixx/KiCAD-MCP-Server on Glama] | |||
* [https://www.kicad.org/ KiCAD公式サイト] | * [https://www.kicad.org/ KiCAD公式サイト] | ||
* [https://modelcontextprotocol.io/ Model Context Protocol公式サイト] | * [https://modelcontextprotocol.io/ Model Context Protocol公式サイト] | ||
* [https://github.com/kicad-skip kicad-skip (回路図操作)] | |||
<br><br> | <br><br> | ||
| 664行目: | 1,297行目: | ||
{{#seo: | {{#seo: | ||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | ||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板,MCP,Model Context Protocol,KiCAD,PCB Design,Claude | ||
|description={{PAGENAME}} - 電子回路とSUSE | |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報、KiCAD MCPサーバの統合ガイド | This page is {{PAGENAME}} in our wiki about electronic circuits, SUSE Linux, and KiCAD MCP servers | ||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |image=/resources/assets/MochiuLogo_Single_Blue.png | ||
}} | }} | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:電子回路]][[カテゴリ:PCB]] | [[カテゴリ:電子回路]][[カテゴリ:PCB]][[カテゴリ:設定]] | ||