Unity-MCP

by TSavo
Verified

hybrid server

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

Integrations

  • Offers a containerized deployment option that communicates with Unity over the network.

  • Provides an NPX package deployment option for installing and running the MCP server.

  • Enables AI assistants to interact with Unity game environments, allowing for code execution, game object inspection, scene analysis, testing, and runtime debugging and modification of game state.

ユニティ-MCP

モデルコンテキストプロトコル (MCP) を使用した Unity と AI アシスタント間のブリッジ。

概要

Unity-MCPは、Unityゲーム開発向けのモデルコンテキストプロトコル(Model Context Protocol)のオープンソース実装です。AIアシスタントが標準化されたインターフェースを介してUnityゲーム環境と対話できるようにすることで、AIを活用したゲーム開発、自動テスト、シーン分析、ランタイムデバッグが可能になります。

建築

永続性のために AILogger を使用するようにアーキテクチャが簡素化され、別個のサーバー コンポーネントが不要になりました。

AI Assistant <-> Unity-MCP STDIO Client <-> Unity Client <-> AILogger
  • AIアシスタント:MCPプロトコルを使用してUnity-MCP STDIOクライアントと通信します。
  • Unity-MCP STDIOクライアント: コマンドをUnityクライアントに転送し、結果をAILoggerに保存します。
  • Unityクライアント: Unityでコマンドを実行し、結果を返します
  • AILogger : ログと結果を後から取得できるように保存します

Unity-MCP STDIOクライアントは、コード実行とクエリの両方のエンドポイントを提供するUnityクライアントと直接通信します。クエリツールは、クエリをreturn文でラップすることで、コード実行に変換します。

特徴

  • Unity ランタイム環境で C# コードを実行する
  • ゲームオブジェクトとそのコンポーネントを検査する
  • シーンの階層と構造を分析する
  • テストを実行して結果を受け取る
  • ゲームオブジェクトとコンポーネントのメソッドを呼び出す
  • 実行中にゲームの状態を変更する

展開オプション

  • Unity エディター拡張機能: ゲーム実行サイクルを超えて存続するエディター拡張機能
  • Dockerコンテナ: ネットワーク経由でUnityと通信するコンテナ化されたバージョン
  • NPX パッケージ: NPX 経由でインストールおよび実行できる Node.js パッケージ

ドキュメント

はじめる

Unity-MCP を使い始めるには、次の手順に従います。

  1. リポジトリをクローンします。
    git clone https://github.com/TSavo/Unity-MCP.git cd Unity-MCP
  2. 依存関係をインストールします:
    npm install
  3. プロジェクトをビルドします。
    npm run build
  4. MCP STDIO クライアントを起動します。
    npm start
    これにより、Unity と通信し、永続性のために AILogger を使用する MCP STDIO クライアントが起動します。注意: AILogger がhttp://localhost:3030で実行されていることを確認するか、AI_LOGGER_URL 環境変数を AILogger インスタンスを指すように設定してください。
  5. テストを実行します:
    # Run all tests npm test # Run only unit tests npm run test:unit # Run only e2e tests npm run test:e2e # Run tests with a specific pattern npm test -- --testNamePattern="should return the server manifest" npm run test:unit -- --testNamePattern="should return the server manifest" npm run test:e2e -- --testNamePattern="should discover the test server"

詳細な手順については、インストール ガイドを参照してください。

AIアシスタントへの接続

Unity-MCP ブリッジを AI アシスタントに接続するには、MCP 構成ファイルを作成する必要があります。

{ "mcpServers": { "unity-ai-bridge": { "url": "http://localhost:8080/sse" } } }

このファイルをAIアシスタントの適切な場所に配置してください。Claudeの場合、通常はClaudeデスクトップアプリの設定ディレクトリ内にあります。

利用可能なツール

Unity-MCP ブリッジは次のツールを提供します。

  1. execute_code : Unity で C# コードを直接実行します。
  2. query : ドット表記を使用してクエリを実行し、オブジェクト、プロパティ、メソッドにアクセスします。
  3. get_logs : AILogger からログを取得します。
  4. get_log_by_name : AILogger から特定のログを取得します。

使用例

Unityでコードを実行する

execute_codeツールを使用して、Unity で C# コードを実行できます。コードは Unity ランタイム環境で実行され、結果は AILogger に保存され、後で取得できます。

JSON-RPCリクエスト

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "execute_code", "arguments": { "code": "Debug.Log(\"Hello from Unity!\"); return GameObject.FindObjectsOfType<GameObject>().Length;", "timeout": 5000 } } }

JSON-RPCレスポンス

{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"logName\":\"unity-execute-1712534400000\",\"result\":{\"success\":true,\"result\":42,\"logs\":[\"Hello from Unity!\"],\"executionTime\":123}}" } ] } }

Unityオブジェクトのクエリ

queryツールを使用してUnityオブジェクトをクエリできます。これにより、ドット表記を使用してオブジェクト、プロパティ、メソッドにアクセスできます。

JSON-RPCリクエスト

{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "query", "arguments": { "query": "Camera.main.transform.position", "timeout": 5000 } } }

JSON-RPCレスポンス

{ "jsonrpc": "2.0", "id": 2, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"logName\":\"unity-query-1712534400000\",\"result\":{\"success\":true,\"result\":{\"x\":0,\"y\":1,\"z\":-10},\"executionTime\":45}}" } ] } }

AILoggerから結果を取得する

get_log_by_nameツールを使用して、AILogger から以前の操作の結果を取得できます。

JSON-RPCリクエスト

{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "get_log_by_name", "arguments": { "log_name": "unity-execute-1712534400000", "limit": 1 } } }

JSON-RPCレスポンス

{ "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"name\":\"unity-execute-1712534400000\",\"entries\":[{\"id\":\"123e4567-e89b-12d3-a456-426614174000\",\"name\":\"unity-execute-1712534400000\",\"data\":{\"result\":{\"success\":true,\"result\":42,\"logs\":[\"Hello from Unity!\"],\"executionTime\":123},\"timestamp\":\"2025-04-08T00:00:00.000Z\"},\"timestamp\":\"2025-04-08T00:00:00.000Z\"}]}" } ] } }

使用例

AI アシスタントが Unity ツールにアクセスできるようになると、次のようなタスクを実行するように依頼できます。

Can you execute the following C# code in Unity? GameObject.Find("Player").transform.position = new Vector3(0, 1, 0);

ライセンス

マサチューセッツ工科大学

著者

Tサボ( @TSavo

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

コード実行、シーン分析、ランタイムデバッグのための標準化されたインターフェースを通じて AI が Unity ゲーム環境と対話できるようにする、Unity と AI アシスタント間のブリッジです。

  1. Overview
    1. Architecture
  2. Features
    1. Deployment Options
      1. Documentation
        1. Getting Started
          1. Connecting to AI Assistants
            1. Available Tools
          2. Usage Examples
            1. Executing Code in Unity
            2. Querying Unity Objects
            3. Retrieving Results from AILogger
            4. Example Usage
          3. License
            1. Author
              ID: wopli4mm5v