Skip to main content
Glama

YetAnotherUnityMcp

by Azreal42
MIT License
7
  • Linux
  • Apple

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

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

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

  1. 概要
    1. MCPとは何ですか?
      1. 特徴
        1. はじめる
          1. Unityサーバーのセットアップ
          2. Pythonクライアントのセットアップ
          3. MCP統合
        2. プロジェクト構造
          1. 建築
            1. Unity TCP サーバー
            2. Python MCP クライアント
          2. MCP リソースとツール
            1. リソース
            2. ツール
          3. 通信プロトコル
            1. 発達
              1. ライセンス

                Related MCP Servers

                • -
                  security
                  A
                  license
                  -
                  quality
                  A server that enables AI assistants to understand and interact with Unity projects in real-time, providing access to scene hierarchy, project settings, and the ability to execute code directly in the Unity Editor.
                  Last updated -
                  40
                  MIT License
                  • Linux
                  • Apple
                • -
                  security
                  A
                  license
                  -
                  quality
                  A Model Context Protocol server that enables AI assistants to interact with the Godot game engine, allowing them to launch the editor, run projects, capture debug output, and control project execution.
                  Last updated -
                  62
                  JavaScript
                  MIT License
                • -
                  security
                  A
                  license
                  -
                  quality
                  A Model Context Protocol server that provides access to Unity Catalog Functions, allowing AI assistants to list, get, create, and delete functions within Unity Catalog directly through a standardized interface.
                  Last updated -
                  8
                  Python
                  MIT License
                • -
                  security
                  F
                  license
                  -
                  quality
                  A Model Context Protocol server for Unity game development that enables users to manage projects, edit scenes, create prefabs, and generate scripts through natural language integration with Smithery.ai.
                  Last updated -
                  TypeScript

                View all related MCP servers

                MCP directory API

                We provide all the information about MCP servers via our MCP API.

                curl -X GET 'https://glama.ai/api/mcp/v1/servers/Azreal42/YetAnotherUnityMcp'

                If you have feedback or need assistance with the MCP directory API, please join our Discord server