remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Interfaces with Unity's .NET/C# environment through a plugin that acts as the MCP client, allowing execution of C# code and manipulation of Unity objects.
Implements the MCP server in Python using FastMCP, providing a bridge between AI agents and the Unity engine.
Allows AI agents to control and interact with the Unity game engine by executing C# code, querying editor state, capturing screenshots, modifying GameObject properties, and navigating scene hierarchies in real-time via WebSockets.
YetAnotherUnityMcp
これを使わないでください。これは、CLAUDEコードで何ができるか試すためのおもちゃプロジェクトです。開発者がVIBEコーディングだけで正しく動作できるかどうかを評価しようとしていますが、今のところうまくいかないようです。
AI エージェントが Unity を制御および対話できるようにする Unity マスター コントロール プロトコル (MCP) 実装。
概要
YetAnotherUnityMcpは**、モデルコンテキストプロトコル(MCP)を使用してUnityゲームエンジンとAI駆動ツールを連携させるシステムです。MCP TCPサーバーとして機能するUnity .NET/C#プラグインと、AIエージェントからのリクエストを処理するPython MCPクライアント**(FastMCPで構築)で構成されています。Unityとクライアント間の通信はカスタムTCPプロトコルを介して行われ、JSONメッセージと画像データのリアルタイムかつ双方向の交換を可能にします。
このアーキテクチャは、ゲームエンジンの懸念事項とAIロジックを明確に分離し、スケーラビリティと保守性を向上させます。その目標は、AIエージェント(例:LLMベースのアシスタント)が実行中のUnityシーンを構造化された安全な方法で検査・制御できるようにすることです。リソースとツールを整理するためのコンテナベースのアプローチは、コードの構成をさらに改善し、ボイラープレートを削減します。
主なコンポーネントは次のとおりです。
- Unity MCP プラグイン (サーバー) – TCP サーバーをホストする Unity エディターに統合された C# プラグイン
- FastMCP Pythonクライアント– Unity用のMCPインターフェースを実装するPythonアプリケーション
- MCPクライアント(AIまたは外部) - MCPリクエストを送信する外部エンティティ(AIアシスタントやテストスクリプトなど)
MCPとは何ですか?
モデルコンテキストプロトコル(MCP)は、 AIモデルがアプリケーションと対話するための標準化された方法です。コンテキストの提供に関する懸念をLLMとの対話自体から分離することで、以下のことが可能になります。
- リソース: LLM へのデータの提供 (Unity シーン階層など)
- ツール: LLM がアクションを実行できるようにする (Unity でコードを実行するなど)
- プロンプト: インタラクション テンプレートの定義 (GameObject の作成方法など)
YetAnotherUnityMcp は、以下を含む公式 MCP 仕様に完全に準拠して実装しています。
- コンテンツ配列ベースのレスポンス
- URIベースのリソース記述子
- スキーマレベルでの必須パラメータ配列
- リソースのMIMEタイプ仕様
特徴
- AIエージェントからUnityでC#コードを実行する
- 動的パラメータ処理を使用して、MCP リソースを通じて Unity エディターの状態を照会します。
- MCP のリソースとツールを論理的なコンテナに整理して、組織を効率化します。
- AI駆動パラメータでスクリーンショットをキャプチャする
- リアルタイム監視と増分取得により、Unity からログとデバッグ情報を取得します。
- AIの支援を受けてゲームオブジェクトのプロパティを変更する
- GameObject 階層の一覧表示とナビゲート
- MCPプロンプトを通じてコンテキストテンプレートを提供する
- TCPソケットによるリアルタイム通信
- Unity で直接ホストされる TCP サーバー
- 高速で効率的なJSONシリアル化
- 型安全なパラメータマッピングによる動的リソース呼び出し
- ツールとリソースのスキーマベースの入力検証
はじめる
Unityサーバーのセットアップ
- Unityプロジェクトを開きます(2020.3以降)
- 次のいずれかの方法で YetAnotherUnityMcp プラグインをインポートします。
plugin/Scripts
フォルダをUnityプロジェクトのAssetsディレクトリにコピーします。- Unityパッケージを作成してインポートする
- 開発用のシンボリック リンクを作成します (Windows PowerShell の例):Copy
- TCP サーバーを起動します。
- メニューから:MCP > TCPサーバー > サーバーの起動
- または: ウィンドウ > MCP サーバー > サーバーの起動
- TCPサーバーのアドレスをメモします(デフォルト: localhost:8080)
Pythonクライアントのセットアップ
MCP統合
プロジェクト構造
建築
Unity TCP サーバー
Unityプラグインは、MCPクライアントからの接続をリッスンするTCPサーバーをホストします。このサーバーは次の処理を行います。
- シンプルなフレーミングプロトコルを使用してクライアント接続とメッセージルーティングを管理します
- 接続状態の監視のためのハンドシェイクとピンポンをサポート
- リフレクションベースの属性検出機能を備えたツールとリソースの動的レジストリを使用します。
- 名前でリソースやツールに動的にアクセスするための呼び出し元を提供します
- ツールとリソースのコンテナベースの整理をサポート
- クライアントから送信されたコマンドを実行します(例:C# コードの実行、スクリーンショットの撮影)
- 結果をクライアントに返す
- 接続の監視とデバッグのためのUIを提供します
コンテナベースのアプローチの詳細については、 MCP コンテナのドキュメントを参照してください。
Python MCP クライアント
PythonクライアントはUnity TCPサーバーに接続し、AIツール用のMCPインターフェースを提供します。その機能は次のとおりです。
- MCP リクエストを Unity のフレーム TCP メッセージに変換します。
- 接続の再試行とキープアライブ ping を処理します
- Unity のレスポンスを MCP リソース データに変換します
- 接続ライフサイクルにFastMCPのライフスパン管理を使用する
- 標準化されたエラー処理と再接続ロジックを提供します
- すべての操作に対して統一された実行パターンを実装します
- FastMCPフレームワークを通じてツールとリソースを提供します
MCP リソースとツール
リソース
unity://info
- Unity環境に関する基本情報unity://logs
- デバッグ用のエディターログunity://scene/{scene_name}
- 特定のシーンに関する情報unity://object/{object_id}
- 特定のゲームオブジェクトの詳細
ツール
execute_code_in_unity
- Unity エディターで C# コードを実行するunity_screenshot
- Unity エディターのスクリーンショットを撮るunity_modify_object
- Unity ゲームオブジェクトのプロパティを変更するunity_logs
- 新しいログのみを取得するオプションを使用して Unity からログを取得します
通信プロトコル
UnityサーバーとPythonクライアント間のすべての通信は、シンプルなフレーミングプロトコルを用いたTCPソケット接続を使用します。これにより、持続的で低遅延の双方向メッセージングが可能になります。接続は、PythonクライアントからUnityサーバーのTCPエンドポイント(例: localhost:8080
)への接続によって開始されます。
このプロトコルは、単純なフレーミング メカニズムを使用します。
- 開始マーカー(STX、0x02)
- 4バイトの長さのプレフィックス
- JSONメッセージの内容
- 終了マーカー(ETX、0x03)
すべてのメッセージはJSONオブジェクトであり、少なくともコマンドまたはレスポンスの種別、一意のID (リクエストとレスポンスをペアリングするため)、およびパラメータまたは結果オブジェクトが含まれます。接続は定期的なping/pongメッセージによって維持されます。通信プロトコルの詳細については、技術詳細ドキュメントをご覧ください。
発達
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
アーキテクチャ、実装、拡張性の詳細については、技術詳細ドキュメントを参照してください。
This server cannot be installed
AI エージェントが Unity を制御および操作できるようにする Unity マスター コントロール プロトコルの実装。これにより、WebSocket ベースの通信システムを介してコードの実行、エディターの状態の照会、GameObject の変更、スクリーンショットのキャプチャが可能になります。
- Overview
- What is MCP?
- Features
- Getting Started
- Project Structure
- Architecture
- MCP Resources and Tools
- Communication Protocol
- Development
- License