【Unity】UnityNaturalMCPを使ってClaude CodeにUnityのテストを実行させる

UnityNaturalMCPを使ってClaude CodeにUnityのテストを実行させる手順です。

Unity6000.2.0f1
UnityNaturalMCP 0.5.0

UnityNaturalMCPとは?

UnityNaturalMCPはUnityエディタを操作するためのMCPサーバです。

github.com

Unity Test Frameworkによるテストを走らせられることや、C#で独自のTool(MCP文脈でのTool)を作れることが大きな特徴です(他のMCPとちゃんと比較してませんが、多分)。

動作環境は以下の通りです。

  • Unity 6000.0以降
  • Node.js 18.0.0以降 (mcp-stdio-to-streamable-httpを使用する場合)

本記事ではこのUnityNaturalMCPを使って、Claude Codeにテストを実行させる手順を紹介します。

なおUnity Test Frameworkの使い方については前提知識としますが、以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

インストール・セットアップ

※ 備忘的に書いておきますが、インストール方法やセットアップ情報は執筆時点から変わる可能性も低くはなさそうなので、基本的にはUnityNaturalMCPのREADMEを参照することをお勧めします

UnityNaturalMCPは以下の二つのライブラリに依存しているため、まずこれらをインストールします(詳細はそれぞれのREADMEを参照してください)。

次にNuGetForUnityを起動(NuGetForUnity -> Manage NuGet Packages)し、Show Prereleaseボタンを押下してから、以下のパッケージを検索してインストールします。

  • System.Text.Json
  • ModelContextProtocol
  • Microsoft.Extensions.DependencyInjection

今回インストールしたバージョンはそれぞれこんな感じです

各ライブラリのバージョン

さて依存パッケージのインストールが完了したら、最後にUnityNaturalMCPをインストールします。

Package Management > Package Manager > +ボタン > Install package from git URL… を押下して、
https://github.com/notargs/UnityNaturalMCP.git?path=/UnityNaturalMCPServer と入力してインストールします。

インストール後には、以下の手順でセットアップを行います。

  1. Project Settings > Unity Natural MCP
  2. MCPサーバーのポート番号を設定(デフォルトは56780なのでこのままでもOK)
  3. Refresh ボタンをクリック

Project Settings

Claude CodeでMCPの設定をする

次にTerminalから以下のコマンドを入力して、Claude CodeにUnityNaturalMCPの設定を追加します(ローカルスコープで追加する例)。

claude mcp add --transport http unity-natural-mcp http://localhost:56780/mcp

--transport httpはstdioではなくhttpプロトコルを使ってMCPサーバと通信するというオプションです。
localhostのポートは前節のセットアップで設定したものを指定してください。

Claude Codeを立ち上げて /mcpunity-natural-mcpがconnectedになっていればOKです

connected

ちなみにUnityNaturalMCPの公式READMEではプロジェクトスコープでMCPを追加する方法が紹介されていますが、この方法を採る場合、状況によってはclaude --mcp-config=.mcp.json をしないとMCP一覧として認識されない可能性があります(弊環境はそうだったので一応書いておきます)。

Edit Modeテストを実行する

さてそれでは動作確認として適当なテストを実行してみます。

まずEdit Modeでテストを走らせる際の注意点として、「ドメインリロードを伴うEdit Modeテストは実行できない」という制約があります。
ただそんなテストはそこまで頻繁に書かないと思うので、あまり気にする必要はないかなと思います。

ではテストを作成していきます。
まず以下のように適当なEditModeのテストを作成します。

using NUnit.Framework;

namespace Tests.Editor
{
    public class UnityNaturalMcpEditorTests
    {
        [Test]
        public void SimpleCalculationTest()
        {
            // Arrange
            var a = 5;
            var b = 3;
        
            // Act
            var result = a + b;
        
            // Assert
            Assert.AreEqual(8, result);
        }
    }
}

テストコードを作成したら、一度コンパイルを挟み、終わってからClaude Codeに以下のように指示します(コンパイルを先に終わらせる必要があります)。

UnityNaturalMcpEditorTestsを実行して

するとUnityNaturalMCP経由でテストが実行されることを確認できます。

テストが実行される

Consoleには以下のようなログが出力されます。

ログ

また、Test Runnerを開いているとテストの通過状況を視覚的に確認できます。

Test Runner

Play Modeテストを実行する

次にPlay Modeのテストを実行してみます。

Play ModeでのテストにはEdit Modeの時よりも強い制約として、Edit > Project Settings > Editor > Enter Play Mode Settingsによりドメインリロードをオフにする(When entering Play ModeをReload Scene OnlyあるいはDo not reload Domain or Sceneに設定する)必要があります。

ドメインリロードオフ

さて設定を変えたところで、ほぼ同じ内容ですがPlay Mode用のテストを以下のように記述します。

using NUnit.Framework;

namespace Tests
{
    public class UnityNaturalMcpTests
    {
        [Test]
        public void SimpleCalculationTest()
        {
            // Arrange
            var a = 5;
            var b = 3;
        
            // Act
            var result = a + b;
        
            // Assert
            Assert.AreEqual(8, result);
        }
    }
}

先ほどのようにコンパイルを終えてから、Claude Codeにテストの実行指示を与えると、以下のように実行されることを確認できます。

実行結果

関連

light11.hatenadiary.com

参考

github.com