基板設計から切削Gコード生成までを生成AIで自動化する

前回の記事「生成AI(Gemini/Antigravity)とKiCADで基板設計の自動化」では、LLMを活用してKiCad上での回路図作成や基板レイアウトを支援する取り組みを紹介しました。

しかし、自作基板(PCB Milling)をCNCフライス盤で削り出すには、ガーバーデータを切削用「Gコード」へ変換するCAM工程が必要です。Gコード化には様々なツールが存在しますが、納戸工房では従来から処理が高速なC++製CLIツール pcb2gcode を愛用してきました。

従来の作業では、ターミナルを開いて刃物径や送り速度を手動指定する必要がありました。この一連の工程を生成AIで自動化するため、筆者自ら pcb2gcode にC++ネイティブのMCP(Model Context Protocol)機能を実装し、本家リポジトリ(PR #910)へ正式マージさせました。
開発の裏話は後日別記事で詳しく解説するとして、今回はこのマージ済み機能を使って、KiCadの基板設計からGコード生成までをAIで一気通貫に自動化する実践手順を解説します。

目次

2つのMCPサーバーを単一のAIセッションで統括制御

本記事の目的は、Windows 11上のAIアシスタント(Antigravity IDEやClaude等)を司令塔(MCPクライアント)とし、2つのMCPサーバーを連動させて完全なEnd-to-Endパイプラインを構築することです。

具体的には、Windowsネイティブで動作する KiCad-MCP-Server(mixelpixx氏開発)によってKiCad本体からガーバーおよびドリルファイルを出力させ、その生成ファイルをWSL2(Ubuntu 24.04 LTS)上で動作する pcb2gcode (–mcp) へシームレスに引き渡します。ユーザーがチャット欄へ自然言語で切削条件を指示するだけで、基板データの出力からCNC加工用Gコードの生成までを単一セッション内で完結させます。

KiCADxpcb2gcodeで基板製造自動化

異種OS環境をまたぐプロセス間通信とパス解決の壁

この連携を実現する上での技術的な課題は、WindowsとWSL2という異なるOS環境間でのプロセス連携です。

pcb2gcode は Boost や gerbv、glibmm、libgeos といったLinux系ライブラリに深く依存しているため、Windowsネイティブでのビルドが極めて困難です。そのため pcb2gcode はWSL2内で稼働させる必要があります。

Windows側のMCPクライアントから wsl.exe をプロセスブリッジとして介し、標準入出力(stdio)経由でJSON-RPC 2.0メッセージを滞りなく送受信させる構成を組む必要があります。さらに、KiCadが出力したWindows上のファイルパスを、WSL2側が解釈できる /mnt/c/… 形式として正確にAIへ扱わせる設計が求められます。

WSL2環境の構築とEnd-to-End MCP連携パイプラインの設定

これらの課題を解決するため、Windows 11側にKiCadとMCPクライアントを配置し、WSL2側に pcb2gcode を配置して wsl.exe で中継するアーキテクチャを採用します。

WSL2(Ubuntu 24.04)上でのpcb2gcodeビルド

WSL2のターミナルを開き、公式リポジトリからソースコードを取得してセットアップスクリプトを実行します。

# リポジトリのクローン
git clone https://github.com/pcb2gcode/pcb2gcode.git
cd pcb2gcode

# Ubuntu向け依存関係インストールおよびビルドの実行
chmod +x setup-ubuntu.sh
./setup-ubuntu.sh

スクリプトにより必要な依存パッケージのインストールとコンパイルが自動で行われ、/usr/local/bin/pcb2gcode にMCP対応バイナリが配置されます。

以下は、/pcb2gcodeディレクトリでsetup-ubuntu.shを実行した結果になります。


=== Build Complete! ===
Binary location: /pcb2gcode/build/pcb2gcode
Generated MCP configuration: /pcb2gcode/mcp-config.json

Copy the contents of ../mcp-config.json into your MCP client configuration (e.g., mcp.json or claude_desktop_config.json).

$ cat mcp-config.json
{
  "mcpServers": {
    "pcb2gcode": {
      "command": "wsl.exe",
      "args": [
        "-e",
        "/pcb2gcode/build/pcb2gcode",
        "--mcp"
      ]
    }
  }
}

MCPクライアント側の設定

MCPクライアント(Antigravity IDEなど)の設定ファイル(mcp_config.json)に、KiCad操作用サーバーとWSL2経由のpcb2gcodeサーバーの2つを登録します。

{
  "mcpServers": {
    "kicad": {
      "command": "node",
      "args": [
        "C:\path\to\KiCad-MCP-Server\dist\index.js"
      ],
      "env": {
        "PYTHONPATH": "C:\Program Files\KiCad\10.0\lib\python3\dist-packages",
        "KICAD_AUTO_LAUNCH": "true",
        "LOG_LEVEL": "info"
      }
    },
    "pcb2gcode": {
      "command": "wsl.exe",
      "args": [
        "-e",
        "/path/to/pcb2gcode/build/pcb2gcode",
        "--mcp"
      ]
    }
  }
}

この設定により、AIアシスタントは必要に応じてKiCad制御コマンドとWSL2内の pcb2gcode_run ツールを自在に呼び出せるようになります。

自然言語による一括処理指示

現在開いているKiCadプロジェクトからガーバーおよびドリルファイルを出力し、そのデータをもとに以下の条件で切削用Gコードを生成してください。
出力先: /mnt/c/cnc_output/

  • 表面パターン: 刃物径 0.1mm, 切削深さ 0.04mm, 送り速度 120mm/min
  • 外形切削: 刃物径 1.0mm, 切削深さ 1.6mm (複数パス)
  • ドリル穴あけ: 出力有効

自然言語指示による基板設計からGコード一括生成の実証

プロンプトを送信すると、AIアシスタントはまず kicad サーバーを呼び出してガーバーファイル(.gbr)とドリルファイル(.drl)を指定ディレクトリへ書き出しました。

続いて、出力された各ファイルの /mnt/c/… パスを自動認識し、pcb2gcode サーバーの pcb2gcode_run ツールへ切削パラメータ引数を組み立てて渡しました。

その結果、ターミナルで一切コマンドを手入力することなく、指定フォルダ内に front.ngc(表面パターン)、outline.ngc(外形切削)、drill.ngc(ドリル穴あけ)の各Gコードファイルが一括生成されました。CNC制御ソフトウェアのCandleで読み込み、指定通りの絶縁切削パスとドリル座標が正確に出力されていることを確認しました。

上、ガーバーファイル。下、表面パターンファイル

自動生成したPCBデータ

自動gcode生成

まとめ

KiCadでの回路設計自動化に続き、自作基板の切削に不可欠なGコード生成を生成AIで自動化しました。本家にマージされたpcb2gcodeのネイティブMCP機能とKiCad-MCP-Serverを組み合わせ、WSL2をwslコマンドでブリッジするパイプラインを構築。Windows上の単一AIセッションから自然言語で指示するだけで、CADのガーバー出力からCAMのGコード生成まで手作業ゼロで一気通貫に完結させました。。