OpenForge MCP の仕組み
OpenForge MCP は、AI クライアントと Unity / Blender / Godot を MCP(Model Context Protocol)で接続するブリッジです。本ページでは、内部アーキテクチャと設計思想を解説します。
全体の通信フロー
AI クライアント OpenForge MCP サーバー アプリケーション
(Claude Desktop 等) (Python / stdio or HTTP) (Unity / Blender / Godot)
ユーザーの指示 ──────> MCP リクエスト受信
ツール選択・パラメータ解析 ──────> WebSocket / HTTP 経由で
プラグインが処理を実行
<────── 結果 JSON を返却
<────── AI が結果を
自然言語で応答
- ユーザーが AI クライアントに自然言語で指示を送る
- AI が MCP ツールを選択し、パラメータを決定する
- OpenForge MCP サーバーがリクエストを受信し、対応するアプリケーションへ中継する
- アプリケーション側のプラグインがコマンドを実行し、結果を返す
- サーバーが結果を AI クライアントに返却し、AI がユーザーに応答する
3 メタツール設計
OpenForge MCP の中核となるのが 3 メタツール設計 です。一般的な MCP サーバーは、すべてのツール(数百個)をそのまま AI に公開します。しかし、AI はツール一覧を毎回コンテキストに含める必要があるため、ツール数が増えるとトークン消費が急激に増加します。
OpenForge MCP では、以下の 3 つのメタツールだけを AI に公開します。
| メタツール | 役割 |
|---|---|
list_tools | 利用可能なツールのカテゴリとツール名を一覧取得する |
call_tool | 指定したツールを実行する |
get_tool_schema | 特定ツールのパラメータスキーマを取得する |
動作の流れ
AI: "Unity のシーンにキューブを追加して"
1. AI が list_tools を呼び出し → カテゴリ一覧を取得
2. AI が get_tool_schema("create_gameobject") を呼び出し → パラメータを確認
3. AI が call_tool("create_gameobject", {name: "Cube", type: "Cube"}) を呼び出し
4. Unity 側でキューブが生成される
この設計により、AI のコンテキストには常に 3 つのツール定義だけが含まれます。必要なときに必要なツールの情報だけを取得するため、トークン消費を大幅に削減できます。
ツールモードとの関係
3 メタツール設計は Dynamic モード で使用されます。一方、Full モード や Essential モード では、ツールを直接公開する従来型の方式も選択できます。詳細は ツールモード を参照してください。
なぜこのアーキテクチャか
トークン効率
AI クライアントは、利用可能なツールの定義をすべてプロンプトに含めます。OpenForge MCP は Unity だけで 100 以上、Blender を含めるとさらに多くのツールを提供します。これらをすべて公開すると、毎回のリクエストで大量のトークンを消費します。
3 メタツール設計では、公開するツール定義が常に 3 つだけなので、ベースのトークン消費が極めて小さくなります。
スケーラビリティ
ツールを追加しても、AI 側のコンテキストサイズは変わりません。新しいカテゴリやツールを自由に追加でき、パフォーマンスに影響しません。
柔軟性
アプリケーションごとにプラグインが独立しているため、Unity・Blender・Godot を同時に接続したり、特定のアプリケーションだけを使うことも可能です。HTTP API モードを使えば、複数の AI クライアントから同時にアクセスすることもできます。
プラグインアーキテクチャ
各アプリケーションには専用のプラグインがインストールされます。
| アプリケーション | プラグイン形式 | 通信方式 |
|---|---|---|
| Unity | Editor パッケージ (C#) | WebSocket |
| Blender | アドオン (Python) | WebSocket |
| Godot | エディタプラグイン (GDScript) | WebSocket |
プラグインはエディタ内で動作し、シーン操作・アセット管理・スクリーンショット取得などの機能を提供します。MCP サーバーとの通信は WebSocket を使用し、リアルタイムに双方向通信を行います。