Gemini CLI で Unity 用の MCP を試してみた

Gemini CLI が凄いらしいので試したら meta ファイルや scene ファイルも直書きしててちょっと嫌だったので調べてみました。

MCP (Model Context Protocol) サーバを使えば UnityEditor などを生成AIから操作できるらしい。
Unity を操作できる MCP サーバは同名のものも含め幾つかあるようです。

ざっと調べた範囲で見つかった5つを試してみました。(いい感じだった順)

justinpbarnett/unity-mcp
CoderGamester/mcp-unity
isuzu-shiranui/UnityMCP
IvanMurzak/Unity-MCP
Arodoid/UnityMCP


基本的に Gemini CLI から操作。Unity は 6000.0.42f1。Git for Windows の Git Bash と関連ツールインストール済みでこのターミナルから操作。
用語や使い方が間違っているかもしれません。
うまくいかない部分が MCP 側の問題か Gemini 側か Unity 側か私の頭が悪いのか切り分けられていないものもありますが参考まで。
settings.json の内容と使えるコマンド(「ツール」って言うのかな?)の一覧付き

 

justinpbarnett/unity-mcp

https://github.com/justinpbarnett/unity-mcp

  • packagemaneger からインストール。(Python package manager の uv が必要)
  • Cursor と ClaudeDesktop の設定はワンボタン。手動で settings.json を書けば GeminiCLI などとも接続できる。
  • URP であることを認識できていなかった(紫マテリアル)。URP にしてって言えば伝わった。
  "mcpServers": {
    "UnityMCP": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "C:\\Users\\*YOUR NAME*\\AppData\\Local\\Programs\\UnityMCP\\UnityMcpServer\\src",
        "server.py"
      ]
    }
  }

  UnityMCP - Ready (7 tools)
    - manage_script
    - manage_scene
    - manage_editor
    - manage_gameobject
    - manage_asset
    - read_console
    - execute_menu_item

これが一番いろいろなことが問題なく行えたかな。

使い心地を聞いてみた




 

CoderGamester/mcp-unity

https://github.com/CoderGamester/mcp-unity

Transform が操作出来ないと面倒なのであまり試していない

  "mcpServers": {
    "mcp-unity": {
      "command": "node",
      "args": [
        "*PATH TO YOUR PROJECT*/Library/PackageCache/com.gamelovers.mcp-unity@17d1fcaf55d6/Server~/build/index.js"
      ]
    }
  }

  mcp-unity - Ready (9 tools)
    - execute_menu_item
    - select_gameobject
    - add_package
    - run_tests
    - send_console_log
    - get_console_logs
    - update_component
    - add_asset_to_scene
    - update_gameobject



isuzu-shiranui/UnityMCP

https://github.com/isuzu-shiranui/UnityMCP

  • UnityEditorからインストールできる。(サンプルのハンドラを利用)
  • Gemini からの操作が無限ループになる事があった。
  • マテリアルなど作ろうとはしてくれるんだけど New Material のままだったり色を変えてといっても変わってなかったり。自分でハンドラを書いて使うのが良いのかな?
  "mcpServers": {
    "unity-mcp": {
      "command": "node",
      "args": [
        "C:\\Users\\*YOUR NAME*\\Documents\\UnityMCP\\build\\index.js"
      ]
    }
  }

  unity-mcp - Ready (9 tools)
    - unity_listClients
    - unity_setActiveClient
    - unity_connectToProject
    - unity_getActiveClient
    - console_getLogs
    - console_getCount
    - console_clear
    - console_setFilter
    - menu_execute



IvanMurzak/Unity-MCP

https://github.com/IvanMurzak/Unity-MCP

  • openupm でインストール。プロジェクト内にインストールされる
  • サーバーからの応答?の表示が乱れていて読めない。なにか設定が悪いのかな? → Gemini は Windowsの改行コードが原因と分析しているけど… どうしたものか? (これが関係しているかもしれない?)
  • マテリアルは作ってくれるが MeshRenderer へ反映できていない?
  • ツールの数は一番多い。 
  "mcpServers": {
    "Unity-MCP": {
      "command": "*PATH TO YOUR PROJECT*/Library/com.ivanmurzak.unity.mcp.server/bin~/Release/net9.0/com.IvanMurzak.Unity.MCP.Server",
      "args": [
        "60606"
      ]
    }
  }

  Unity-MCP - Ready (40 tools)
    - Assets_Copy
    - Assets_CreateFolders
    - Assets_Delete
    - Assets_Find
    - Assets_Material_Create
    - Assets_Modify
    - Assets_Move
    - Assets_Read
    - Assets_Refresh
    - Assets_Prefab_Close
    - Assets_Prefab_Create
    - Assets_Prefab_Instantiate
    - Assets_Prefab_Open
    - Assets_Prefab_Read
    - Assets_Prefab_Save
    - Assets_Shader_ListAll
    - Component_GetAll
    - Editor_GetApplicationInformation
    - Editor_SetApplicationState
    - Editor_Selection_Get
    - Editor_Selection_Set
    - GameObject_AddComponent
    - GameObject_Create
    - GameObject_Destroy
    - GameObject_DestroyComponents
    - GameObject_Duplicate
    - GameObject_Find
    - GameObject_Modify
    - GameObject_SetParent
    - Reflection_MethodCall
    - Reflection_MethodFind
    - Scene_Create
    - Scene_GetHierarchy
    - Scene_GetLoaded
    - Scene_Load
    - Scene_Save
    - Scene_Unload
    - Script_Delete
    - Script_Read
    - Script_CreateOrUpdate



 

Arodoid/UnityMCP

https://github.com/Arodoid/UnityMCP

  • Newtonsoft.Json に依存している。他の json パーサを使っていると衝突するかも。
  • 手動でサーバを起動する必要あり。プラグインはプロジェクト内に配置
  • Claude Desktop 以外の環境でのセットアップがよくわからないな

Ctrl-T では正常ぽいけど Unity Editor is not connected で使えませんでした。

  "mcpServers": {
    "unitymcp": {
      "command": "node",
      "args": [
        "*PATH TO INSTALL DIR*\\UnityMCP-main\\unity-mcp-server\\build\\index.js"
      ]
  }

  unitymcp - Ready (3 tools)
    - get_editor_state
    - execute_editor_command
    - get_logs


全体を通して

  • Editorがプレイモードのままヒエラルキを操作して編集が破棄されることあり。
    「編集前にプレイモードを終了して」って伝えれば(その機能があれば)止めてくれるけどたまに忘れる? (私もたまにやらかすので人のことは言えない…)


  • コンポーネントやプロパティの変更が反映されないことがある?
    プレイモードではなかったと思うんだけど… 何度かログ見て手作業で変更した。
  • Gemini が MCP で操作できないことは「Editorで〇〇してください」と出るのでなんとかなる。でも出来ないことが多いと生成AIの意味が…
  • プロンプトに複数行貼り付けるにはどうやるんですかね?エラーログとか貼ると1行目だけ読むので「このニンゲン、ログのどこが重要なのかわかってねーのかよ!」って思われてそうでなんか嫌w




「スターフォースみたいな縦シュー作って」って言ったらスペースハリアーを作られたり「グラディウスみたいな横シュー作って」って言ったらなんとも微妙な出来だったり。
その中でも比較的まともだった「マリオみたいな横スクロールアクション作って」がこれ。


自機が Cube なのが良い味出してますよねw  シンギュラリティは近い… のか?


 

おまけ

Nature Remo の MCP サーバがあったので試してみました。
デバイスの列挙はできる。そのうち TV とエアコンの操作のみ対応しているのかな?

TV はうまくいかなかったけどエアコンの停止/起動は出来た。でもエラーコードが帰っているようで Gemini は失敗したと認識している。

これは純正の MCP サーバが出たり、次世代 Alexa や Matter 対応などが進むと素敵な事になりそうですね! 他には Sonos も制御できるみたい。



前の記事 次の記事
No Comment
コメントを追加
comment url