mcpField
F
FunseaAI Unity MCP

FunseaAI Unity MCP

ローカル
github.com/FunseaAI開発ツール2751 日前に更新

FunseaAI Unity MCP について

提供された README では、FunseaAI Unity MCP は Funplay MCP for Unity として紹介されており、Unity パッケージとローカル MCP サーバーで AI アシスタントを起動中の Unity プロジェクトに接続します。記載された機能には、シーンやスクリプトの作成、実行時検証、入力シミュレーション、性能分析、エディター自動化があります。

主な機能

  1. 01Unity シーンの作成と編集
  2. 02スクリプト生成
  3. 03実行時の動作検証
  4. 04入力シミュレーション
  5. 05性能分析とエディター作業の自動化
  6. 06Unity から MCP クライアントを設定

活用シーン

  1. 01自然言語の依頼からゲームシーンを構築
  2. 02Unity プロジェクトのスクリプトを生成して検証
  3. 03AI アシスタントで実行中のエディタープロジェクトを調査

MCP 対応

Unity パッケージがローカル MCP サーバーを起動し、設定可能な core または full のツール、プロジェクトコンテキストのリソース、実行機能を MCP クライアントに公開します。プロジェクト別エンドポイントとワンクリックのクライアント設定に対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
nugetFunseaAI.Unity.Mcp0.1.7

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Funplay MCP for Unity

Unity Editor 向けの最先端 MCP サーバー

Unity 2022.3+ ライセンス:MIT MCP 対応 Editor のみ

中国語 | 英語

Unity 向けの最先端 MCP サーバー

💖 このプロジェクトが役に立ったと思ったら、ぜひ Star を付けてください。より多くの Unity 開発者にこのプロジェクトを知ってもらい、継続的な開発の支援にもつながります。


Funplay MCP for Unity は、MIT ライセンスの Unity Editor 用 MCP サーバーです。Claude Code、Cursor、Kimi Code、LM Studio、Windsurf、Codex、VS Code Copilot などの AI アシスタントが、実行中の Unity プロジェクト内で直接操作できるようにします。

ゲームの内容を一文で説明するだけで、AI アシスタントが Funplay MCP for Unity に組み込まれたシーン作成、スクリプト生成、ランタイム検証、入力シミュレーション、パフォーマンス分析、エディター自動化のツールを使って、Unity 上にゲームを構築します。

「10×10 のグリッド、食べ物の出現、スコア UI、ゲームオーバー画面を備えたスネークゲームを作って」

AI アシスタントは Funplay MCP for Unity を使ってシーンを作成し、すべてのスクリプトを生成して、UI を設定し、ゲームロジックを構成します。すべて、ひとつのプロンプトから実行できます。

Funplay MCP for Unity — 16 秒のデモ

16 秒のデモ — AI が 3D モデルを生成し、シーンに最初から最後まで組み込みます。HD MP4 を視聴。

クイックスタート

すぐに接続したい場合は、次の 3 つを実行してください。

  • Git URL から Unity パッケージをインストールする
  • Funplay > MCP Server を起動する
  • 組み込みのワンクリッククライアント設定を使う
1. UPM 経由でインストール(Git URL)

Unity で Window → Package Manager → + → Add package from git URL を選択します。

https://github.com/FunplayAI/funplay-unity-mcp.git

💡 クローンまたはインストールする前に、GitHub で ⭐ を付けていただけると大変うれしいです。

オプション:OpenUPM 経由でインストール

Unity Package Manager にレジストリから取得したパッケージのバージョン履歴を表示し、バージョンを選択できるようにしたい場合は、Git ではなく OpenUPM からインストールしてください。

OpenUPM CLI を使う場合:

openupm add com.gamebooom.unity.mcp

または、Packages/manifest.json にスコープ付きレジストリを手動で追加します。

{
  "scopedRegistries": [
    {
      "name": "OpenUPM",
      "url": "https://package.openupm.com",
      "scopes": [
        "com.gamebooom"
      ]
    }
  ],
  "dependencies": {
    "com.gamebooom.unity.mcp": "0.7.2"
  }
}

以前に Git URL からインストールしている場合は、先に Git 依存関係を削除してから OpenUPM からインストールしてください。Git からインストールしたパッケージでは、Unity に解決済みの Git バージョンのみが表示され、レジストリに基づく「Version History」の一覧は表示されません。

2. MCP サーバーを起動する

Funplay → MCP Server を選択して、サーバーを起動します。

新しいプロジェクトには、プロジェクトパスから割り当てられる専用ポートが設定されます。そのため、異なるプロジェクトを開いた2つのエディターが同じポートを取り合うことはありません。MCP Server ウィンドウには正確な URL(http://127.0.0.1:<port>/mcp/project/<project-id>/)が表示され、ワンクリック設定でその URL が書き込まれます。Server Port にポートを入力すると固定できます(CI、ファイアウォールルールなど)。代わりに、Use Per-Project Port を選択すると、プロジェクトごとにポートが割り当てられます。

アップグレード後も既存の固定ポートは維持されますが、v0.7.1 では生成される URL がプロジェクトに紐づけられます。古いルート URL は引き続き読み取り可能ですが、書き込みには検証済みの expected_context が必要です。既存の青い Skills 通知カードで Reconfigure MCP + Skills を再実行してクライアントを再接続するか、独立して検証された対象の Editor からガードを明示的に渡してください。そのプロジェクトを別のエディターと並行して実行する場合は、Use Per-Project Port をクリックしてください。詳しい設定方法は、複数の Unity プロジェクトを同時に実行するを参照してください。

ウィンドウにフォールバックポートが表示された場合、使用中の固定ポートを引き続き指定するクライアント設定は使わないでください。そのポートを所有するプロセスに接続される可能性があります。Use Per-Project Port または Pin Current Port をクリックし、サーバーの再起動が完了するまでは、ワンクリック設定はブロックされます。

デフォルトのトランスポートは、プロセス内で直接通信する HTTP です。Unity のスクリプト再コンパイルや Play Mode のドメインリロードをまたいだ接続をより確実に維持する必要がある場合は、MCP Server ウィンドウで Experimental Broker Mode を有効にしてください。Unity に同梱された Mono で小規模なローカルブローカーを実行し、MCP クライアントには同じ 127.0.0.1 ポートを維持します。クライアント設定を変更する必要はありません。

core または full が公開するツールを正確に編集する場合は、Funplay → Tool Exposure を開いてください。

execute_code の安全性に関するデフォルト設定や、プラグインのデバッグログを調整する場合は、Funplay → MCP Settings を開いてください。

3. AI クライアントを設定する

まず、Funplay > MCP Server ウィンドウに組み込まれている One-Click MCP Configuration を使用してください。

対象のクライアントを選択して Configure をクリックすると、推奨される MCP 設定項目がパッケージによって書き込まれます。

Claude Code、Cursor、Codex、OpenCode、DeepSeek Harness の場合は、Configure + Skills をクリックすると、組み込みのプロジェクトスキルも両方インストールされます。

現在の Unity プロジェクト向けのプロジェクト固有の AI ガイダンスを設定する場合は、Funplay → Project Skills を開いて、対応プラットフォームを選択し、組み込みの unity-mcp-workflow と unity-ui-composition スキルをインストールしてください。UI スキルでは、レスポンシブな縦向きおよび横向きの uGUI 作業を扱います。

バージョン 0.7.0 では、これら2つの組み込みスキルを維持したまま、Unity 公式プラグイン 0.1.8-betaを参考に、タスク別のリファレンスを4つ追加しました。UI フレームワークの選定、安全な Sprite インポーターの編集、TMP/ローカライズの検証、パッケージの準備状況に関する内容です。エージェントはタスクに関連するリファレンスのみを読み込みます。デフォルトのツールや追加のスキルは追加されません。MCP 優先の運用、プロジェクトの規約、プレハブの保持、デザインの忠実性が引き続き優先されます。既存のインストールを更新するには、Project Skills を使用してください。リファレンスが見つからない場合や古い場合も、スキル更新通知が表示されます。ユーザーが所有するリファレンスファイルは上書きされません。

バージョン 0.7.1 では、両方の組み込みスキルに実行信頼性に関するガイダンスが追加されました。プロジェクト ID、実際のフレーム進行、厳格な入力経路、所有する検証処理のクリーンアップ、Unity の操作を妨げるネイティブダイアログの条件付き処理などが含まれます。共通の青いセットアップカードでは、MCP と Skills の問題がまとめて報告され、Reconfigure MCP + Skills から再設定できます。一方の問題を解決しても、もう一方の問題はそのまま維持されます。実行信頼性と移行を参照してください。 設定ファイルを手動で編集する場合は、以下の例を参考にしてください。<project> をこのプロジェクトのエントリー名に、<port> をポート番号に、<project-id> をバインド済み URL 全体に含まれる ID に置き換えてください。これらは別の Editor ではなく、MCP Server ウィンドウからコピーしてください。

Claude Code / Claude Desktop
{
  "mcpServers": {
    "funplay-<project>": {
      "type": "http",
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Cursor
{
  "mcpServers": {
    "funplay-<project>": {
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
LM Studio

LM Studio の mcp.json の場所は、バージョンやプラットフォームによって異なる場合があります。LM Studio の Program > Install > Edit mcp.json を使用してください。Funplay のワンクリック Configure ボタンは LM Studio の lmstudio://add_mcp リンクを開き、推測したパスにファイルを作成するのではなく、既存の設定ファイルがある場合にのみ更新します。

{
  "mcpServers": {
    "funplay-<project>": {
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
VS Code
{
  "servers": {
    "funplay-<project>": {
      "type": "http",
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Trae
{
  "mcpServers": {
    "funplay-<project>": {
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Kiro
{
  "mcpServers": {
    "funplay-<project>": {
      "type": "http",
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Kimi / Kimi Code

現在の Kimi Code リリースでは、プロジェクトレベルの MCP サーバーを .kimi-code/mcp.json から読み込みます(公式 MCP ドキュメント)。Funplay のワンクリック Configure はここに書き込むため、現在の Unity サーバーはこのプロジェクトで開始した Kimi セッションからのみ参照できます。マシンに旧式の Kimi CLI データディレクトリしかない場合は、互換性のあるユーザーレベルの ~/.kimi/mcp.json に書き込みます。設定後、Unity プロジェクトのルートから新しい Kimi セッションを開始してください。初回使用時はループバック URL を確認し、ワークスペースを信頼してください。生成されるプロジェクトファイルには、このマシンのローカルポートが含まれるため、チームでポートを固定して共有することを意図している場合を除き、通常はコミットしないでください。

{
  "mcpServers": {
    "funplay-<project>": {
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Codex
[mcp_servers.funplay-<project>]
url = "http://127.0.0.1:<port>/mcp/project/<project-id>/"
OpenCode

リポジトリ専用の .opencode/opencode.json に書き込まれます(グローバル設定ではありません)。そのため、このリポジトリ内で開始した OpenCode セッションだけが、このエディターのツールを参照できます。

{
  "mcp": {
    "funplay-<project>": {
      "type": "remote",
      "url": "http://127.0.0.1:<port>/mcp/project/<project-id>/",
      "enabled": true
    }
  }
}
DeepSeek Harness

各 DeepSeek Harness プロファイルの ~/.dsh/profiles/<profile>/cordis.patch.yml に、区切り付きの管理ブロックとして書き込みます。DSH は起動のたびに --profile を介してプラグインを構成し、外部から指定できる単一のアクティブプロファイルを公開していないためです。再設定時もブロック外の内容は保持されます。ブロックを手動で削除すると、エントリーがアンインストールされます。

# >>> funplay-mcp:funplay-<project> begin (managed by Funplay MCP -- reconfigure from Unity > Funplay > MCP Server)
# Funplay Unity MCP endpoint served by this editor; tools appear as mcp__funplay-<project>__<tool>.
- insert:
    - id: mcp-funplay-<project>
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: funplay-<project>
        transport: streamable-http
        url: http://127.0.0.1:<port>/mcp/project/<project-id>/
# <<< funplay-mcp:funplay-<project> end
Antigravity

ワークスペースローカルの .agents/mcp_config.json に、Funplay の Streamable HTTP エンドポイントを指定する serverUrl を含む mcpServers エントリーとして書き込みます。これにより、関係のないワークスペースにサーバーが設定されるのを防ぎます。ワークスペース MCP 設定に対応した最新バージョンの Antigravity を使用し、MCP サーバーを再読み込みしてください。

ワークスペースルートは、.git(worktree の .git ファイルも含む)がある最も近い親ディレクトリです。Git の管理外にある場合は、Unity プロジェクトディレクトリがルートになります。そのディレクトリを Antigravity のワークスペースとして開いてください。Configure + Skills は、Unity プロジェクトがリポジトリ内のサブディレクトリにある場合も含め、同じルートに .agents/mcp_config.json、.agents/skills/、および管理対象の AGENTS.md ブロックを配置します。他のクライアントでは既存の指示ファイルの場所が維持され、パスが重なる場合はブロックが共有されます。

~/.gemini/config/mcp_config.json または旧式の ~/.gemini/antigravity/mcp_config.json にある既存の Funplay エントリーは、パネルに表示されますが変更されません。各ワークスペースの設定後に確認してください。ワンクリック操作はグローバル設定へのフォールバックを行いません。同じリポジトリ内の複数の Unity プロジェクトはワークスペースを共有します。MCP エントリーには個別の名前が付けられますが、Project Skills は、別のプロジェクトが管理するワークスペースガイダンスの置き換えを拒否します。

{
  "mcpServers": {
    "funplay-<project>": {
      "serverUrl": "http://127.0.0.1:<port>/mcp/project/<project-id>/"
    }
  }
}
Windsurf Use Cursor と同じ JSON 構造を使用してください。ただし、ローカルの Windsurf バージョンで異なる MCP 設定形式が必要な場合は、その形式を使用してください。
4. 接続を確認する

AI クライアントを開き、まず安全なリクエストをいくつか試してください。

  • "get_scene_info を呼び出して、開いているシーンを教えてください。"
  • "unity://project/context を読み取り、現在のエディターの状態を要約してください。"
  • "execute_code を使って、アクティブなシーン名を返してください。"

これらが動作すれば、MCP サーバー、リソース、主要な実行ツールが正しく接続されています。

5. 作成を始める

AI クライアントを開き、次のように試してください。「浮遊するプラットフォームが 5 つある 3D プラットフォーマーレベルを作成してください」

始める前に

  • このパッケージはエディター専用です。ビルドしたゲームにランタイムコンポーネントを追加することはありません。
  • 新規プロジェクトでは MCP サーバーのポートがプロジェクトごとに割り当てられ(範囲は 20000-29999)、固定される場合もあります。以前のバージョンからアップグレードしたプロジェクトでは、既存のポートが固定ポートとして引き継がれ、入力したポートも固定ポートになります。MCP Server ウィンドウには、ポートの割り当て方法とアクティブな URL が表示されます。プロジェクトのクライアント設定エントリーにはプロジェクトディレクトリ名が使用されます(例:funplay-love-town)。そのため、複数のプロジェクトを設定しても、共有の funplay エントリーが上書きされることはなくなりました。ディレクトリ名が同じプロジェクトが 2 つある場合、2 つ目のプロジェクトの設定時にプロジェクトハッシュが自動的に追加されるため、上書きは発生せず、設定を有効にする必要もありません。
  • ローカルの MCP サーバー設定は UserSettings/FunplayMcpSettings.json に保存されます。
  • パッケージのデフォルトは core です。構造化された検査・編集、UI 監査と作成、復元可能なエディター準備、共有タスクステータス、視覚的なエビデンス、入力、ログに対応する、目的を絞った 40 個のツールが含まれます。短い MCP タスクは 1 回の応答で完了できます。get_task は、上限付きの待機と状態変更リビジョンに対応しています。execute_code はプロジェクト固有のフォールバックとして引き続き利用できます。full では、従来のステータス/コンパイル/Play API、検証管理、参照トランザクション、専門的な診断ツールを含む全 185 個のツールが利用できます。カスタム公開リストは保持されます。get_tool_capabilities では、実装状況、公開状況、関連するランタイムバックエンドの利用可否を確認できます。
  • 生成されるクライアント URL はプロジェクト単位です。書き込みを行う前に、initialize 応答に含まれるプロジェクト ID を別途確認してください。古いルート URL は引き続き読み取り可能ですが、変更には確認済みの expected_context が必要です。一致しない場合、ツールは実行されません。実行時の信頼性と移行を参照してください。
  • execute_code の安全性チェックと、より厳格なファイルシステムガードは、Funplay > MCP Settings からデフォルトで有効になっています。このガードは、明らかに破壊的なコード、広範囲にわたる System.IO の書き込み、直接的なファイルストリーム、絶対パス/ユーザー領域のパス/システムパス/ディレクトリ遡上パスをブロックしますが、完全なサンドボックスではありません。クライアントは、任意の呼び出しでオプションの safety_checks 引数を使い、デフォルト設定を上書きすることもできます。
  • プラグインのデバッグログはデフォルトで無効になっていますが、Funplay > MCP Settings から有効にすることもできます。警告とエラーは常に Unity Console に出力されます。
  • 公開されているすべての MCP ツールは直接実行されます。追加の承認切り替え設定はありません。
  • メニュー:Funplay > Check for Updates を使用すると、Git インストールをその場で更新するか、最新の unitypackage を自動的にダウンロードしてインポートできます。

このプロジェクトを選ぶ理由

  • 構造化ツールを優先 — 一般的な調査・編集には専用ツールを使用し、プロジェクト固有の不足を補う場合は、ガード付きのインメモリ execute_code を引き続き利用できます。詳しくは、execute_code: インメモリ C# 実行をご覧ください。
  • デフォルトの安全チェック — execute_code には、常時有効な永続的安全トグルが追加されました。これには、呼び出しごとの引数を明確に公開しないクライアント向けの、より厳格なファイルシステムガードも含まれます。
  • プレイモードの自動化 — 同じ MCP セッションから、プレイモードへの切り替え、キーボード/マウス入力のシミュレーション、スクリーンショットの撮影、ログの調査、動作の検証ができます。
  • プロジェクトコンテキストを標準搭載 — プロジェクトの状態、アクティブなシーン、選択項目、コンパイル、コンソール出力、MCP の操作履歴を示すライブリソースを公開します。
  • 通常は必要な範囲だけ、必要に応じてすべて — core は用途を絞った40個のツールを公開し、full は組み込みの全185個のツールを公開します。
  • Unity パッケージひとつで完結 — 追加の承認 UI も、クリック操作が必要な外部デーモンも不要で、Unity 側のプラグイン自体に Python も必要ありません。
  • 拡張可能 — 属性ベースの検出機能でカスタムツールを追加したり、必要に応じて Unity を外部 MCP サービスに接続したりできます。

主な機能

  • 組み込みツール185個 — 43個のモジュールにわたるシーン編集、アセット、スクリプト、プレイモード制御、視覚的な証拠、構造化調査、ガード付き参照編集、範囲を限定した検証に対応します。
  • 構造化された戻り値と instanceId による連鎖 — ツールは、安定した instanceId フィールドを含む {success, message, data} JSON を返します。これにより、エージェントは名前を再解決する代わりに、by_id 呼び出しを確実に連鎖できます。
  • execute_code 用の IFunplayCommand — 新しいスニペットテンプレートでは、自動 Undo(ctx.RegisterObjectCreation/Modification/DestroyObject)、構造化ログ(ctx.Log/LogWarning/LogError)、エージェントに返される追跡可能な変更履歴を利用できます。
  • リソースとプロンプト — ライブのプロジェクトコンテキスト、シーン/選択項目/エラーのリソース、リソーステンプレート、再利用可能なワークフロープロンプトを提供します。
  • 入力シミュレーションとスクリーンショット — キーボード/マウスのシミュレーションでプレイモードを操作し、ゲーム/シーンのキャプチャで結果を検証できます。v0.7.2 では、実フレームでの連続マウス/シングルタッチのドラッグ、待機時間の制限、所有リソースのクリーンアップが追加されました。詳しくはタイミングとバックエンドの制限をご覧ください。
  • 組み込みのアップデート機能 — Unity メニューからアップデートを確認し、Git パッケージの再取得または最新の unitypackage の自動インポートを選択できます。
  • ワンクリックのクライアント設定 — Unity ウィンドウから、Claude Code、Cursor、Kimi、LM Studio、VS Code、Kiro、Trae、Codex、OpenCode、DeepSeek Harness、Antigravity などのクライアント向けに、MCP 設定エントリーを直接生成できます。
  • ツール公開の制御 — core と full で公開するツールを正確に編集できます。
  • プロジェクトスキルマネージャー — 対応する AI クライアント向けにプロジェクトレベルのスキルを設定できます。組み込みの unity-mcp-workflow と unity-ui-composition のガイダンスも利用できます。
  • MCP 設定 — execute_code の安全性に関する既定値を調整したり、MCP 接続やツール実行のトラブルシューティング時にプラグインの詳細デバッグログを有効にしたりできます。
  • ベンダーに依存しない設計 — Claude Code、Cursor、Kimi Code、LM Studio、Windsurf、Codex、VS Code Copilot など、MCP に対応するあらゆる AI クライアントで動作します。

execute_code:メモリ内での C# 実行

execute_code は Funplay MCP for Unity の中核です。AI が C# スニペットを作成し、Roslyn を優先するメモリ内フローでコンパイルして、エディタースレッド上で実行できます。エージェントはプロジェクトファイルをディスクに書き込むことなく、Unity Editor とランタイムの API をすべて利用できます。

  • プロジェクトにファイルを残さずコンパイル — スニペットはメモリ内でのコンパイル/実行フローを維持しながら、まず Unity に同梱された Roslyn csc でコンパイルされます。Assets/ 以下に .cs ファイルは書き込まれず、ドメインリロードも発生せず、スニペット自体が行う操作以外でプロジェクトの状態に影響することもありません。
  • 実行前にエディターの準備を完了 — 呼び出しごとに AssetDatabase を更新し、保留中のコンパイルが完了するまで待ってからスニペットをコンパイルします。そのため、別途 request_recompile を実行しなくても、外部ファイルの編集が自動的に反映されます。
  • 自動 Undo と構造化ログ(推奨テンプレート) — IFunplayCommand を実装し、注入された ExecutionContext を使用すると、作成/変更/破棄されたすべてのオブジェクトがエディターの Undo に記録され、変更履歴がエージェントに返されます。
using UnityEngine;
using UnityEditor;
using Funplay.Editor.Tools.Helpers;
using Funplay.Editor.Tools.Scripting;

public class CommandScript : IFunplayCommand
{
    public void Execute(ExecutionContext ctx)
    {
        var go = GameObject.CreatePrimitive(PrimitiveType.Cube);
        ctx.RegisterObjectCreation(go);          // auto-Undo + tracked
        ctx.Log("Created {0}", go.name);
        ctx.ReturnValue = GameObjectSerializer.Describe(go, includeComponents: false);
    }
}

応答には { logs, created, modified, destroyed, returnValue } が含まれるため、エージェントはシーンを再照会することなく、変更内容を正確に確認できます。

従来のテンプレート(public static string Run())も引き続きサポートされています。構造化トラッキングが過剰な、単発の確認用スニペットに便利です。

execute_code と専用ツールの使い分け — execute_code は、複数ステップのオーケストレーション、新しい読み取り処理、または細かなツール呼び出しを 5~10 回連鎖させるよりも、1 つのスニペットにまとめた方が簡潔な場面で力を発揮します。コンポーネントの単一フィールドの編集、簡単な選択変更、既存のツールで対応できる処理には、専用ツールを使用してください。LLM にとって呼び出しコストが低く、結果も確認しやすくなります。

Coplay との比較

以下の表では、このリポジトリと、GitHub で公開されている Coplay のオープンソース unity-mcp リポジトリの仕様を比較しています。

項目Funplay MCP for UnityCoplay unity-mcp
Unity 側のアーキテクチャHTTP MCP サーバーを内蔵した Unity Editor 組み込みパッケージUnity ブリッジとローカル Python MCP サーバー
ローカルで追加で必要なもの基本的なワークフローでは Unity パッケージのみ公開されているクイックスタートによると Unity + Python 3.10+ + uv
主なワークフローのスタイルまず execute_code を使い、その後に目的を絞ったヘルパーツールを使用ブリッジ経由で幅広い manage_* ツール群を公開
デフォルトで公開されるツールコンパクトな core プロファイル。オプションで full に拡張可能公開ドキュメントでは、常時利用可能な幅広いツール群を重視
組み込みのコンテキストモデルプロジェクトリソース、リソーステンプレート、ワークフロープロンプト、インタラクション履歴公開 README では、ツール群とブリッジ/サーバーのワークフローを重視
プレイモードの検証パッケージにプレイモード制御、スクリーンショット、ログ、入力シミュレーションを内蔵公開 README では、幅広い Unity 管理・自動化ツールを重視
位置付けAI によるエディター制御に対応した、軽量で直接利用できる MIT ライセンスの Unity MCP サーバーCoplay が保守するフル機能の Unity ブリッジ。Python ベースのサーバーセットアップを採用

Coplay 列の出典:CoplayDev/unity-mcp

Unity AI Assistant との比較

以下の表では、このリポジトリと Unity Technologies の公式パッケージ com.unity.ai.assistant(2026-05 時点で v2.7.0-pre.2)を比較しています。

項目Funplay MCP for UnityUnity AI Assistant
最低 Unity バージョン2022.36000.3(Unity 6 のみ)
ライセンスMIT、オープンソースUnity Terms of Service、プロプライエタリ
デプロイエディター内のローカル HTTP MCP サーバー、クラウド不要エディター + ネイティブ Relay サブプロセス + Unity Cloud バックエンド
課金無料。ユーザーが AI クライアントを用意クレジット制(Unity Dashboard)
ツールの公開43 モジュールにまたがる 185 ツール。core(40)/full プロファイル約 15 個の MCP ツール(主に Manage* ファミリー)
汎用の代替手段execute_code — Roslyn 優先のインメモリコンパイル、IFunplayCommand + Undo、サンドボックスなし(クライアント側で承認)RunCommand — 名前空間のブラックリストによるサンドボックス
プレイモードの検証完全なループ:開始/入力をシミュレート/キャプチャ/ログを読み取り/終了開始/終了のみ。入力シミュレーションなし
アセットジェネレーター組み込みなし(execute_code で外部 API を組み合わせ)ネイティブの画像/メッシュ/PBR/サウンド/アニメーションジェネレーター
主なクライアントモデル任意の MCP クライアントを利用(Claude Code / Cursor / Kimi / LM Studio / Codex / VS Code)組み込みチャットウィンドウ + Gateway 経由の Claude/Gemini 用 ACP
オフライン対応はい(ツール呼び出し。推論は選択したクライアントに依存)いいえ(推論には Unity Cloud が必要)

2 つのアプローチの詳細な比較については、Funplay Unity MCP vs Unity AI Assistant detailed comparison(中国語)をご覧ください。

MCP の機能

現在のオープンソースパッケージは、価値の高い 4 つの機能レイヤーを公開しています。

  • ツール — full では合計 185 個のツール、core では用途を絞った 40 個のツール
  • 主な実行手段 — エディター/ランタイムの高度なオーケストレーション用の execute_code
  • プロンプト — パラメーター化されたワークフロープロンプト:edit_prefab_safely、verify_compilation、enter_play_and_recover、wire_serialized_references、create_playable_prototype。プロジェクトルートの mcp-prompts/*.md ファイルを使って、プロジェクト独自のプロンプトを追加できます。
  • リソース — プロジェクトコンテキスト、シーンの概要、選択状態、コンパイルエラー、コンソールエラー、MCP の操作履歴に加え、シーンオブジェクト、コンポーネント、アセットパス用のリソーステンプレート
プロジェクトプロンプト

プロジェクトのプロンプトファイルでは、依存関係のない簡易的なフロントマター形式の後に、ワークフロー本文を記述します。

---
name: validate_activity
description: Open and validate a project activity.
arguments: activity_key(required), theme_id
---
Open activity {activity_key} with theme {theme_id}, then validate its runtime state.

名前と引数名は [a-z][a-z0-9_-]{0,63} に一致する必要があります。必須の引数、不明な引数、文字列以外の引数は prompts/get によって拒否されます。省略されたオプションのプレースホルダーは空文字列になります。定義は MCP サーバーの起動時にキャッシュされるため、プロンプトファイルを変更した後はサーバーを再起動するか、Unity のドメインリロードを実行してください。

組み込みツール

バージョン 0.7.2 には、43 モジュールにまたがる 185 個のツール関数が含まれており、そのうち使用頻度の高い 40 個のツールがデフォルトで公開されています。ID の移行、厳密な入力、連続ドラッグ、所有リソースのクリーンアップ、参照の保持、証拠の再利用については、実行の信頼性と検証をご覧ください。

カテゴリツール
GameObjectcreate_primitive, create_game_object, delete_game_object, find_game_objects, get_game_object_info, set_transform, duplicate_game_object, rename_game_object, set_parent, add_component, set_tag_and_layer, set_active
Hierarchyget_hierarchy
Componentsget_component_properties, list_components, set_component_property, set_component_properties
Component Batchcopy_component, paste_component_values, add_component_to_many
Scriptscreate_script, edit_script, patch_script
Assetscreate_material, assign_material, find_assets, delete_asset, rename_asset, copy_asset
Asset Importget_asset_import_settings, set_asset_import_settings
Referencesfind_references, find_broken_references, patch_serialized_reference
Meshget_mesh_info
Materialsget_material_properties, set_material_property
Filesread_file, write_file, search_files, list_directory, exists
Sceneget_scene_info, list_scenes, load_scene_additive, unload_scene, list_dirty_scenes, save_all_scenes, save_scene, open_scene, create_new_scene, enter_play_mode, exit_play_mode, set_time_scale, get_time_scale
Physicsphysics_raycast, physics_overlap, physics2d_overlap_point
Particlesparticle_control
Lightingget_lighting_settings, set_lighting_settings, bake_lightmaps
Timelinedirector_evaluate
Prefabscreate_prefab, instantiate_prefab, unpack_prefab, open_prefab_stage, save_prefab_stage, close_prefab_stage, set_prefab_property, set_prefab_properties
ScriptableObjectcreate_scriptable_object, get_scriptable_object, set_scriptable_object_properties
UIcreate_canvas, create_button, create_text, create_image, raycast_at_point, get_ui_defaults, configure_ui_defaults, create_project_ui
UI Auditaudit_ui, get_ui_audit, cancel_ui_audit
UI Previewstart_ui_preview_session, get_ui_preview_session, end_ui_preview_session
Inspectionfind_project_types, inspect_ui_sprites, get_tool_capabilities, inspect_render_bindings
Verificationverification_scope, save_verification_evidence, read_verification_evidence(Full;ステータスは get_task で確認)
Visual Inspectionget_visual_coordinates, get_object_screen_bounds
Animationcreate_animation_clip, create_animator_controller, assign_animator, get_animator_state, set_animator_parameter, play_animator_state
Cameraget_camera_properties, set_camera_projection, set_camera_settings, set_camera_culling_mask
Screenshotcapture_game_view, capture_simulator_view, capture_scene_view, capture_multiview, capture_editor_window
Videorecord_game_view, mark_recording, extract_recording_frames, get_recording_frame
Script Executionexecute_code, get_execute_code_history, replay_execute_code, clear_execute_code_history
Input Simulationsimulate_key_press, simulate_key_combo, simulate_mouse_click, simulate_mouse_drag, simulate_ui_scroll
Performanceget_performance_snapshot, analyze_scene_complexity
Profilerprofiler_start, profiler_stop, profiler_status, get_frame_timing, get_counters, get_object_memory, get_top_memory_objects, memory_take_snapshot, memory_list_snapshots, memory_compare_snapshots, frame_debugger_enable, frame_debugger_disable, frame_debugger_get_events
Memory Snapshotmemory_take_full_snapshot, memory_list_full_snapshots, memory_open_snapshot_in_profiler, memory_query_top_objects, memory_query_references
Packagesinstall_package, remove_package, list_packages
Compilationwait_for_compilation, request_recompile, get_compilation_errors, get_reload_recovery_status
Editor Operationsprepare_editor, get_editor_operation, list_editor_operations, cancel_editor_operation
Tasksget_task(共有の読み取り専用ステータスと上限付き待機)
Testingrun_tests, get_test_job, cancel_test_run
Editor Stateget_editor_state, get_selection, set_selection, get_prefab_stage, get_active_tool, set_active_tool, get_windows, get_tags, add_tag, remove_tag, get_layers, add_layer, get_build_settings
Project Settingsget_project_settings
Undoundo, redo, get_undo_state
Menu Itemsexecute_menu_item, validate_menu_item
Visual Feedbackselect_object, focus_on_object, ping_asset, log_message, show_dialog, get_console_logs

📊 Profiler ツールのリファレンス、実装に関する注記、既知の制限事項、テストレポートの全容については、PROFILER_TOOLS.md をご覧ください。

エンドツーエンドの準備、読み取り専用の監査、構造化クエリ、プロジェクトの TMP/Prefab/入力のデフォルト設定、キャプチャ座標のマッピング、録画マーカー/キーフレーム、復旧可能なプレビューセッションについては、信頼性の高い UI ワークフローをご覧ください。組み込みの Project Skills の両方にこれらのワークフローが含まれています。既存のインストールを更新するには、Project Skills を使用してください。これらのツールとスキルの更新は、v0.6.9 以降に含まれています。

Game View の動画を録画する

core に含まれる record_game_view を使用すると、UI アニメーション、トランジション、複数ステップのインタラクションを、短い無音の MP4 で確認できます。Unity に組み込まれている MediaEncoder を使用するため、Recorder パッケージや外部エンコーダーは必要ありません。

  1. Play Mode に入り、リロードからの復旧を待ってから、レンダリングされるように Game タブを開きます。
  2. record_game_view を {"action":"start","duration_seconds":10,"fps":15,"max_dimension":1280} で呼び出します。返された recording_id を控えておきます。
  3. 録画中に操作を行います。Start はすぐに返され、録画は時間制限に達すると自動的に停止します。
  4. {"action":"status","recording_id":"<id>"} で状態を確認します。早めに終了するには action:"stop" を指定し、ファイナライズが完了するまで状態を確認します。
  5. ready:true になったら、返された path をローカル動画ファイルとして読み取ります。動画データは MCP のレスポンスに埋め込まれません。リモートクライアントは、Unity マシン上のファイルに別途アクセスする必要があります。

クリップには <UnityProject>/Library/FunplayMcp/Recordings/ 内で一意のファイル名が付けられ、削除するまで保持されます。Start で指定できる長さは 1~120 秒、目標 FPS は 1~60、最大寸法は 128~1920 ピクセルです。アスペクト比を維持し、アップスケーリングは行わず、エンコード寸法には偶数値を使用します。状態には、実際のフレーム数、経過時間、停止理由、ファイルサイズ、エラーが含まれます。ポーリング/停止時には録画 ID を渡し、新しいクリップを誤って操作しないようにしてください。

現在、Play Mode のグラフィックス対応 macOS および Windows の Editor でサポートされており、音声トラックはありません。シーンカメラを再レンダリングせず、オーバーレイ UI を含むレンダリング済みの Game View をキャプチャします。Game タブのレンダリングを継続し、キャプチャ中にサイズを変更しないでください。タブを非表示/閉じたり、レンダリング解像度を変更したりすると、古いフレームや引き伸ばされたフレームを無言でキャプチャする代わりに、エラーで録画が停止します。Play Mode を終了するとクリップがファイナライズされます。スクリプト/ドメインのリロードが発生すると、クリップは早期にファイナライズされ、エディターセッションに interrupted のレシートが保持されます。ready:true のファイルのみを使用してください。フレームが遅れた場合も実際のタイムスタンプが維持されますが、録画によるオーバーヘッドが発生します。これは視覚的な記録用であり、フレーム精度のパフォーマンスプロファイリング用ではありません。

カスタムツールの追加

シンプルな属性アノテーションを使って、独自のツールを作成できます。

using System.ComponentModel;

[ToolProvider("MyTools")]
public static class MyCustomTools
{
    [Description("Spawns enemies at random positions in the scene")]
    public static string SpawnEnemies(
        [ToolParam("Number of enemies to spawn", Required = true)] int count,
        [ToolParam("Prefab path in Assets")] string prefabPath)
    {
        // Your implementation here
        return $"Spawned {count} enemies";
    }
}

メソッドは自動的に検出され、snake_case(spawn_enemies)に変換され、JSON Schema 定義とともに MCP 経由で公開されます。

アーキテクチャ

MCP Server (HTTP JSON-RPC 2.0)
    └─ MCPRequestHandler (protocol handling)
        └─ MCPExecutionBridge
            └─ FunctionInvokerController (reflection-based invocation)
                └─ Tool Functions (185 built-in tools across 43 modules)
External AI Client → HTTP Request → MCPRequestHandler → MCPExecutionBridge → FunctionInvokerController → tool method

要件

  • Unity 2022.3 以降
  • Newtonsoft.Json を含む .NET/Mono

コントリビューション

コントリビューションを歓迎します!PR を提出する前に、コントリビューションガイドをお読みください。

ライセンス

MIT — 商用またはオープンソースのプロジェクトで、自由に使用、変更、配布、統合できます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。