YetAnotherUnityMcp

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シーンを構造化された安全な方法で検査・制御できるようにすることです。リソースとツールを整理するためのコンテナベースのアプローチは、コードの構成をさらに改善し、ボイラープレートを削減します。

主なコンポーネントは次のとおりです。

  1. Unity MCP プラグイン (サーバー) – TCP サーバーをホストする Unity エディターに統合された C# プラグイン
  2. FastMCP Pythonクライアント– Unity用のMCPインターフェースを実装するPythonアプリケーション
  3. 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サーバーのセットアップ

  1. Unityプロジェクトを開きます(2020.3以降)
  2. 次のいずれかの方法で YetAnotherUnityMcp プラグインをインポートします。
    • plugin/ScriptsフォルダをUnityプロジェクトのAssetsディレクトリにコピーします。
    • Unityパッケージを作成してインポートする
    • 開発用のシンボリック リンクを作成します (Windows PowerShell の例):
      New-Item -ItemType SymbolicLink -Target "D:\Dev\YetAnotherUnityMcp\plugin" -Path "C:\Users\azrea\My project\Assets\Plugins\YetAnotherUnityMcp"
  3. TCP サーバーを起動します。
    • メニューから:MCP > TCPサーバー > サーバーの起動
    • または: ウィンドウ > MCP サーバー > サーバーの起動
  4. TCPサーバーのアドレスをメモします(デフォルト: localhost:8080)

Pythonクライアントのセットアップ

# Clone the repository git clone https://github.com/yourusername/YetAnotherUnityMcp.git cd YetAnotherUnityMcp # Create and activate a virtual environment using uv uv venv -p 3.11 source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install the server with development dependencies uv pip install -e ".[dev]" # Run the MCP client python -m server.mcp_server

MCP統合

# Install FastMCP and tools uv pip install fastmcp # Run the client with MCP inspector for debugging fastmcp dev server/mcp_server.py # Install in Claude Desktop fastmcp install server/mcp_server.py --name "Unity Controller"

プロジェクト構造

YetAnotherUnityMcp/ ├── server/ # Python MCP client │ ├── unity_client_util.py # Unity client utility functions │ ├── unity_tcp_client.py # High-level Unity TCP client │ ├── mcp_server.py # MCP server implementation │ ├── dynamic_tool_invoker.py # Dynamic tool invocation system │ ├── dynamic_tools.py # Dynamic tool manager │ ├── connection_manager.py # Connection lifecycle management │ └── websocket_client.py # Low-level TCP client (legacy name) ├── plugin/ # Unity C# plugin │ ├── Scripts/ # Plugin source code │ │ ├── Editor/ # Editor extensions │ │ │ ├── Commands/ # Editor command implementations │ │ │ ├── MCPWindow.cs # Server control window │ │ │ ├── MCPMenu.cs # Unity menu integration │ │ │ ├── MCPTcpServer.cs # Primary TCP server implementation │ │ │ ├── CommandExecutionMonitor.cs # Performance monitoring │ │ │ ├── Models/ # Data models for Editor │ │ │ └── Net/ # TCP communication implementation │ │ └── YetAnotherUnityMcp.asmdef # Assembly definition │ └── README.md # Plugin documentation └── tests/ # Test suite

建築

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メッセージによって維持されます。通信プロトコルの詳細については、技術詳細ドキュメントをご覧ください。

発達

# Python client development python -m pytest # Run tests python -m black . # Format code python -m flake8 # Lint code python -m mypy . # Type check # MCP Development fastmcp dev server/mcp_server.py # Run with MCP Inspector UI # Unity server development # Use the MCP Server window in Unity for debugging # Monitor connections and messages in real-time

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

アーキテクチャ、実装、拡張性の詳細については、技術詳細ドキュメントを参照してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

AI エージェントが Unity を制御および操作できるようにする Unity マスター コントロール プロトコルの実装。これにより、WebSocket ベースの通信システムを介してコードの実行、エディターの状態の照会、GameObject の変更、スクリーンショットのキャプチャが可能になります。

  1. Overview
    1. What is MCP?
      1. Features
        1. Getting Started
          1. Unity Server Setup
          2. Python Client Setup
          3. MCP Integration
        2. Project Structure
          1. Architecture
            1. Unity TCP Server
            2. Python MCP Client
          2. MCP Resources and Tools
            1. Resources
            2. Tools
          3. Communication Protocol
            1. Development
              1. License
                ID: 06d9e5aq67