0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity-MCPの内部構造と実装時の注意点

Last updated at Posted at 2025-07-09

Unity MCP をざっくり使ってみてのはまりポイントについて羅列
同名のパッケージがいくつかあるようだが、今回使ったのは(自分が把握してる限り)かなり初期に公開されて機能も豊富な以下パッケージ
https://github.com/justinpbarnett/unity-mcp

unity-mcp の仕組み

トラブルシューティングしたりデフォルト以外の MCP Client を使うために中身を理解しておいた方が良い
意外とよくある MCP Server 実装じゃない点に注意

登場人物

  • MCP Client: エンドユーザーが使用するアプリケーション
  • MCP Server (Python): FastMCPフレームワークを使用したPythonサーバー
  • UnityConnection: MCP ServerとUnity Editor間の通信を担当するコンポーネント
  • UnityMcpBridge: Unity Editor内で動作するTCPサーバー

各要素間のやり取りのイメージ図

いわゆる MCP でやり取りされてるのは python と MCP Client の間だけ
Python の裏は別途 TCP で Unity Editor と接続している(する必要がある)
開発時は、ユーザーからみて Unity Editor と MCP Client 両方見るケースが多い点が混乱の元なので注意が必要。

以下のようなリモート処理(テストとかで使えそう)だともう少し理解しやすいが、MCP Client から python server までのプロトコルに url が使えるかどうかは未調査

サーバーサイドで unity-mcp を使いたい場合に取れる構成のイメージ(未検証)

サーバーサイドで実行するならヘッドレスだと思うのでこのような構成になると思われる。
プロジェクトコードを同時にみないので構成としてはこっちの方がわかりやすい

プロンプトで詰まったところ

コンテキストオーバーフロー

雑にディレクトリ読ませると、大量のファイルを読み取ってきてモデルの input context をオーバーしてしまった。これはコスト観点でも非常によくないので、system prompt で安易な list(一覧表示) を禁止して、なるべくディレクトリの階層を限定する指示を出した

ファイルシステムの利用禁止

ファイルシステム側で新規作成、コピーなどをした時に Unity 側のGUID の参照が崩れる懸念があったため、基本的には MCP 経由でアセット操作するよう強制した

リフレッシュが必要な点

MCP 経由でアセットを更新した際、そのまま次の操作を実行するとアセット操作を反映していない結果を得てしまい、同じ操作を繰り返してしまった。おそらくアセット変更は即時反映されない仕様っぽい。
同 MCP にリフレッシュに関する tool もあったため、アセット操作後はリフレッシュを必須とすることをプロンプトで指示することで改善した

TBD

他にも見つかれば追記します

免責

これは実際に触ってみたメモに近いため正確性の担保が弱い点、また MCP は変化が激しいので時間の経過により変わりうる点は注意してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?