MCP Unity Editor (Game Engine) について
MCP Unity Editor は、Node.js サーバーと連携する Unity Editor 用プラグインで、Cursor、Claude Code、Codex などの AI クライアントが Unity プロジェクト内で操作を実行できるようにします。シーン、GameObject、マテリアル、テストに AI を活用したい Unity 開発者向けです。
主な機能
- 01シーンと GameObject の作成・更新
- 02マテリアル、プレハブ、アセットの管理
- 03Unity テストの実行とコンソールログの取得
- 04プレイモードの制御と複数操作のバッチ実行
活用シーン
- 01自然言語の指示によるシーンオブジェクトの作成や変更
- 02敵オブジェクトの一括生成と Transform の調整
- 03EditMode テストの実行とコンソール出力の確認
MCP 対応
Node.js サーバーで MCP プロトコルを実装したMCP サーバーです。execute_menu_item、update_component、run_tests などのツールと unity:// リソース、プロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Unity エディター(ゲームエンジン)
| 🇺🇸英語 | 🇨🇳簡体字中国語 | 🇯🇵日本語 |
|---|
,/(/. *(/,
*/(((((/. *((((((*.
.*((((((((((/. *((((((((((/.
./((((((((((((((/ *((((((((((((((/,
,/(((((((((((((/*. */(((((((((((((/*.
,%%#((/((((((* ,/(((((/(#&@@(
,%%##%%##((((((/*. ,/((((/(#&@@@@@@(
,%%######%%##((/(((/*. .*/(((//(%@@@@@@@@@@@(
,%%####%#(%%#%%##((/((((((((//#&@@@@@@&@@@@@@@@(
,%%####%( /#%#%%%##(//(#@@@@@@@%, #@@@@@@@(
,%%####%( *#%###%@@@@@@( #@@@@@@@(
,%%####%( #%#%@@@@, #@@@@@@@(
,%%##%%%( #%#%@@@@, #@@@@@@@(
,%%%#* #%#%@@@@, *%@@@(
., ,/##*. #%#%@@@@, ./&@#* *`
,/#%#####%%#/, #%#%@@@@, ,/&@@@@@@@@@&\.
`*#########%%%%###%@@@@@@@@@@@@@@@@@@&*´
`*%%###########%@@@@@@@@@@@@@@&*´
`*%%%######%@@@@@@@@@@&*´
`*#%%##%@@@@@&*´
`*%#%@&*´
███╗ ███╗ ██████╗██████╗ ██╗ ██╗███╗ ██╗██╗████████╗██╗ ██╗
████╗ ████║██╔════╝██╔══██╗ ██║ ██║████╗ ██║██║╚══██╔══╝╚██╗ ██╔╝
██╔████╔██║██║ ██████╔╝ ██║ ██║██╔██╗ ██║██║ ██║ ╚████╔╝
██║╚██╔╝██║██║ ██╔═══╝ ██║ ██║██║╚██╗██║██║ ██║ ╚██╔╝
██║ ╚═╝ ██║╚██████╗██║ ╚██████╔╝██║ ╚████║██║ ██║ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝
MCP Unity は、Unity Editor 用の Model Context Protocol の実装であり、AI アシスタントが Unity プロジェクトを操作できるようにします。このパッケージは、Unity と MCP プロトコルを実装する Node.js サーバーをつなぐブリッジを提供し、Cursor、Windsurf、Claude Code、Codex CLI、GitHub Copilot、Google Antigravity、OpenCode などの AI エージェントが Unity Editor 内で操作を実行できるようにします。
機能
IDE 連携 — パッケージキャッシュへのアクセス
MCP Unity は、Unity の Library/PackedCache フォルダーをワークスペースに追加することで、VSCode のような IDE(Visual Studio Code、Cursor、Windsurf、Google Antigravity)と自動的に連携します。この機能により、次のことが可能になります。
- Unity パッケージのコードインテリジェンスが向上します
- Unity パッケージのオートコンプリートと型情報が改善されます
- AI コーディングアシスタントがプロジェクトの依存関係を理解しやすくなります
MCP サーバーのツール
以下のツールを使用して、MCP 経由で Unity のシーンや GameObject を操作および照会できます。
-
execute_menu_item:Unity のメニュー項目(MenuItem 属性が付与された関数)を実行しますプロンプトの例:「メニュー項目『GameObject/Create Empty』を実行して、新しい空の GameObject を作成してください」
-
select_gameobject:パスまたはインスタンス ID によって、Unity のヒエラルキー内のゲームオブジェクトを選択しますプロンプトの例:「シーン内の Main Camera オブジェクトを選択してください」
-
update_gameobject:GameObject の基本プロパティ(名前、タグ、レイヤー、アクティブ/静的状態)を更新します。GameObject が存在しない場合は作成しますプロンプトの例:「Player オブジェクトのタグを『Enemy』に設定し、非アクティブにしてください」
-
update_component:GameObject のコンポーネントフィールドを更新します。対象のコンポーネントが GameObject に含まれていない場合は追加しますプロンプトの例:「Player オブジェクトに Rigidbody コンポーネントを追加し、質量を 5 に設定してください」
-
add_package:Unity Package Manager に新しいパッケージをインストールしますプロンプトの例:「プロジェクトに TextMeshPro パッケージを追加してください」
-
run_tests:Unity Test Runner を使用してテストを実行しますプロンプトの例:「プロジェクト内の EditMode テストをすべて実行してください」
-
send_console_log:コンソールログを Unity に送信しますプロンプトの例:「コンソールログを Unity Editor に送信してください」
-
add_asset_to_scene:AssetDatabase からアセットを Unity のシーンに追加しますプロンプトの例:「プロジェクト内の Player プレハブを現在のシーンに追加してください」
-
create_prefab:任意の MonoBehaviour スクリプトとシリアライズされたフィールド値を指定して、プレハブを作成しますプロンプトの例:「『PlayerController』スクリプトから『Player』という名前のプレハブを作成してください」
-
create_scene:新しいシーンを作成し、指定したパスに保存しますプロンプトの例:「Scenes フォルダーに『Level1』という新しいシーンを作成してください」
-
load_scene:パスまたは名前でシーンを読み込みます。加算読み込みも指定できますプロンプトの例:「MainMenu シーンを読み込んでください」
-
delete_scene:パスまたは名前でシーンを削除し、Build Settings からも削除しますプロンプトの例:「プロジェクトから古い TestScene を削除してください」
-
get_gameobject:特定の GameObject の詳細情報を、すべてのコンポーネントとともに取得しますプロンプトの例:「Player GameObject の詳細を取得して」
-
get_console_logs:Unity コンソールのログをページネーション対応で取得しますプロンプトの例:「Unity コンソールの直近 20 件のエラーログを表示して」
-
recompile_scripts:Unity プロジェクト内のすべてのスクリプトを再コンパイルしますプロンプトの例:「Unity プロジェクト内のスクリプトを再コンパイルして」
-
save_scene:現在アクティブなシーンを保存します。必要に応じて、新しいパスに「名前を付けて保存」できますプロンプトの例:「現在のシーンを保存して」または「シーンを 'Assets/Scenes/Level2.unity' として保存して」
-
get_scene_info:名前、パス、変更状態、読み込み済みのすべてのシーンなど、アクティブなシーンの情報を取得しますプロンプトの例:「プロジェクトで現在読み込まれているシーンを教えて」
-
unload_scene:ヒエラルキーからシーンをアンロードします(シーンアセットは削除しません)プロンプトの例:「ヒエラルキーから UI シーンをアンロードして」
-
duplicate_gameobject:シーン内の GameObject を複製します。名前の変更や親の変更も指定できますプロンプトの例:「Enemy プレハブを 5 個複製して、Enemy_1 から Enemy_5 に名前を変更して」
-
delete_gameobject:シーンから GameObject を削除しますプロンプトの例:「古い Player オブジェクトをシーンから削除して」
-
reparent_gameobject:ヒエラルキー内の GameObject の親を変更しますプロンプトの例:「HealthBar オブジェクトを UI Canvas の子にして」
-
move_gameobject:GameObject を新しい位置に移動します(ローカル空間またはワールド空間)プロンプトの例:「Player オブジェクトをワールド空間の位置 (10, 0, 5) に移動して」
-
rotate_gameobject:GameObject を新しい回転に設定します(ローカル空間またはワールド空間、オイラー角またはクォータニオン)プロンプトの例:「Camera を Y 軸で 45 度回転して」
-
scale_gameobject:GameObject のローカルスケールを新しい値に設定しますプロンプトの例:「Enemy オブジェクトのサイズを 2 倍にして」
-
set_transform:1 回の操作で GameObject の位置、回転、スケールを設定しますプロンプトの例:「Cube の位置を (0, 5, 0)、回転を (0, 90, 0)、スケールを (2, 2, 2) に設定して」
-
create_material:指定したシェーダーを使って新しいマテリアルを作成し、プロジェクトに保存しますプロンプトの例:「URP Lit シェーダーを使って、'EnemyMaterial' という名前の赤いマテリアルを作成して」
-
assign_material:GameObject の Renderer コンポーネントにマテリアルを割り当てますプロンプトの例:「'EnemyMaterial' を Enemy GameObject に割り当てて」
-
modify_material:既存のマテリアルのプロパティ(色、浮動小数点値、テクスチャ)を変更しますプロンプトの例:「'EnemyMaterial' の色を青に変更して、メタリックを 0.8 に設定して」
-
get_material_info:シェーダーやすべてのプロパティを含む、マテリアルの詳細情報を取得しますプロンプトの例:「'PlayerMaterial' のすべてのプロパティを表示して」
-
batch_execute:複数のツール操作を 1 回のバッチリクエストで実行し、リクエストの往復を減らします。失敗時に任意でロールバックでき、アトミックな操作も可能ですプロンプトの例:「1 回のバッチ操作で、Enemy_1 から Enemy_10 という名前の空の GameObject を 10 個作成して」
MCP App ツール
-
show_unity_dashboard:VS Code で Unity ダッシュボード MCP App を開きます(VS Code 1.109+ が必要です)プロンプトの例:「Unity ダッシュボードアプリを開いて」
-
get_play_mode_status:Unity のプレイモードの状態(isPlaying、isPaused)を取得しますプロンプトの例:「Unity はプレイモードですか?」
-
set_play_mode_status:アクションを指定して Unity のプレイモードを操作します。'play'(開始または一時停止解除)、'pause'(一時停止の切り替え)、'stop'(プレイモード終了)、'step'(1 フレーム進める)を指定できますプロンプトの例:「Unity のプレイモードを開始して」または「ゲームを一時停止して」または「1 フレーム進めて」
MCP サーバーのリソース
-
unity://menu-items:Unity Editor で利用可能なすべてのメニュー項目の一覧を取得し、execute_menu_itemツールを使いやすくしますプロンプトの例:「GameObject の作成に関連するメニュー項目をすべて表示してください」
-
unity://scenes-hierarchy:現在の Unity シーンの階層にあるすべてのゲームオブジェクトの一覧を取得しますプロンプトの例:「現在のシーン階層の構造を表示してください」
-
unity://gameobject/{id}:シーン階層にあるインスタンス ID またはオブジェクトパスを指定して、特定の GameObject の詳細情報を取得します。GameObject のすべてのコンポーネントと、シリアライズされたプロパティおよびフィールドも含まれますプロンプトの例:「Player GameObject の詳細情報を取得してください」
-
unity://logs:Unity コンソールのすべてのログの一覧を取得しますプロンプトの例:「Unity コンソールの最近のエラーメッセージを表示してください」
-
unity://packages:Unity Package Manager から、インストール済みおよび利用可能なパッケージの情報を取得しますプロンプトの例:「Unity プロジェクトに現在インストールされているパッケージをすべて一覧表示してください」
-
unity://assets:Unity Asset Database 内のアセットに関する情報を取得しますプロンプトの例:「プロジェクト内のすべてのテクスチャアセットを検索してください」
-
unity://tests/{testMode}:Unity Test Runner のテストに関する情報を取得しますプロンプトの例:「Unity プロジェクトで利用可能なテストをすべて一覧表示してください」
-
ui://unity-dashboard:Unity ダッシュボードの MCP App UIプロンプトの例:「Unity ダッシュボードアプリを開いてください」
MCP サーバーのプロンプト
プロンプトは、一般的な Unity タスク向けに用意された、事前設定済みのテンプレートです。特定のシナリオで適切な操作手順や利用可能なツールを AI アシスタントが理解できるよう支援します。
-
unity_dashboard:Unity ダッシュボード MCP アプリを、その機能に関するコンテキスト情報とともに開きます**使用方法:**AI アシスタントでプロンプト「unity_dashboard」を使用すると、Unity ダッシュボードにガイド付きでアクセスできます
-
gameobject_handling_strategy:GameObject を扱うための構造化されたワークフローを提供します。使用するツールとリソースも含まれます**使用方法:**AI アシスタントで GameObject の ID、名前、またはパスとともにプロンプト「gameobject_handling_strategy」を使用すると、手順に沿ったガイダンスを利用できます
要件
- Unity 6 以降 — サーバーのインストールに必要です
- Node.js 18 以降 — サーバーの起動に必要です
- npm 9 以降 — サーバーのデバッグに必要です
メモ
スペースを含むプロジェクトパス
MCP Unity は、スペースを含むプロジェクトパスに対応しています。ただし、接続に問題が発生した場合は、トラブルシューティングとして、スペースを含まないパスにプロジェクトを移動してみてください。
例:
- ✅ 推奨:
C:\Users\YourUser\Documents\UnityProjects\MyAwesomeGame- ✅ 対応:
C:\Users\Your User\Documents\Unity Projects\My Awesome Game
インストール
この MCP Unity サーバーのインストールは、複数の手順で構成されています。
手順 1:Node.js をインストールする
MCP Unity サーバーを実行するには、Node.js 18 以降がコンピューターにインストールされている必要があります。

Windows
- Node.js のダウンロードページにアクセスします
- LTS バージョン(推奨)の Windows インストーラー(.msi)をダウンロードします
- インストーラーを実行し、インストールウィザードの手順に従います
- PowerShell を開いて次のコマンドを実行し、インストールを確認します:
node --version
macOS
- Node.js のダウンロードページにアクセスします
- LTS バージョン(推奨)の macOS インストーラー(.pkg)をダウンロードします
- インストーラーを実行し、インストールウィザードの手順に従います
- または、Homebrew がインストールされている場合は、次のコマンドを実行できます:
brew install node@18 - ターミナルを開いて次のコマンドを実行し、インストールを確認します:
node --version
ステップ 3:AI LLM クライアントを設定する
オプション 1:Unity Editor を使用して設定する
- Unity Editor を開きます
- Tools > MCP Unity > Server Window に移動します
- 下の画像に示すように、使用する AI LLM クライアントの「Configure」ボタンをクリックします

グローバル設定とプロジェクト設定:
- Configure [Client] — グローバルユーザー設定ファイル(例:
~/.claude.json)に書き込みます。絶対パスを使用します。マシン上のすべてのプロジェクトに適用されます。個人利用や単独開発者の環境に最適です。- Configure [Client] (Project) — Unity プロジェクトのルートにある
.mcp.jsonファイル(または同等のファイル)に書き込みます。相対パスを使用するため、複数のマシンで動作します。Git にコミットしてチームで共有することを想定しています。共同作業を行うプロジェクトや、設定をプロジェクトと一緒に持ち運びたい場合に最適です。迷った場合は、(Project) の方をおすすめします。相対パスの方が移植性に優れており、プロジェクトフォルダーを移動しても動作します。
- 表示されたポップアップで設定のインストールを確認します
オプション 2:手動で設定する
AI クライアントの MCP 設定ファイルを開き、MCP Unity サーバーの設定を追加します。
ABSOLUTE/PATH/TOを MCP Unity のインストール先の絶対パスに置き換えるか、Unity Editor の MCP Server ウィンドウ(Tools > MCP Unity > Server Window)からテキストをコピーしてください。Unity プロジェクトのツリー内にあり、Git にコミットされる設定ファイル(例:
<project>/.vscode/mcp.json、<project>/opencode.json、<project>/.cursor/mcp.json、<project>/.mcp.json、<project>/.codex/config.toml)では、同じファイルを複数のマシンで使用できるように、プロジェクト相対パスをおすすめします。Server Window の 「Use relative path」 を切り替えると、コピーするスニペットを絶対パス形式とプロジェクト相対パス形式の間で切り替えられます。Configure GitHub Copilot、Configure OpenCode、Configure Cursor (Project)、Configure Claude Code (Project)、Configure Codex CLI (Project) ボタンは、相対パスを自動的に出力します。プロジェクトローカルのボタン(Cursor/Claude Code/Codex CLI)は、MCP サーバーのエントリーをグローバルユーザー設定ではなく Unity プロジェクトのディレクトリに書き込みます。これにより、他の(Unity 以外の)プロジェクトで MCP 接続失敗の警告が表示されるのを防げます。特に Codex CLI (Project) では、プロジェクトルートから初めて
codexを実行するときにプロジェクトの信頼確認を承認する必要があります。そうしないと、Codex は<project>/.codex/config.tomlを無視します。
JSON ベースのクライアントの場合(Cursor、Windsurf、Claude Code、GitHub Copilot など):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"ABSOLUTE/PATH/TO/mcp-unity/Server~/build/index.js"
]
}
}
}
ワークスペーススコープの VS Code/GitHub Copilot(.vscode/mcp.json)では、マシン間でパスを移植可能にするため、${workspaceFolder} を使用します。
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"${workspaceFolder}/Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
Codex CLI の場合(~/.codex/config.toml):
[mcp_servers.mcp-unity]
command = "node"
args = ["ABSOLUTE/PATH/TO/mcp-unity/Server~/build/index.js"]
Cursor — プロジェクトローカルの場合(Unity プロジェクトのルートにある .cursor/mcp.json、プロジェクト相対パス):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
Claude Code — プロジェクトローカルの場合(Unity プロジェクトのルートにある .mcp.json、プロジェクト相対パス — Claude Code のチーム共有 MCP 設定):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
Codex CLI — プロジェクトローカルの場合(Unity プロジェクトのルートにある .codex/config.toml、プロジェクト相対パス):
[mcp_servers.mcp-unity]
command = "node"
args = ["Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"]
Codex はこのファイルをグローバルな
~/.codex/config.tomlに重ねて読み込みますが、プロジェクトが信頼済みとしてマークされている場合に限ります。プロジェクトにcdして初めてcodexを実行するときに、信頼確認を承認してください。そうしないと、Codex は.codex/config.tomlを無視します。
OpenCode の場合(Unity プロジェクトのルートにある opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-unity": {
"type": "local",
"enabled": true,
"command": ["node", "Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"],
"environment": {}
}
}
}
注:UPM パッケージキャッシュパス内の
@<hash>の部分は、パッケージの更新時に変わります。MCP Unity を更新した場合は、スニペットが新しいキャッシュディレクトリを参照するように、Configure ボタンをもう一度実行するか、パスを手動で更新してください。
AI クライアントが WebSocket サーバーに接続すると、ウィンドウ内の緑色のボックスに自動的に表示されます
オプション:WebSocket ポートを設定する
デフォルトでは、WebSocket サーバーはポート「8090」で実行されます。変更するには:
- Unity Editor を開きます
- Tools > MCP Unity > Server Window に移動します
- 「Connection Port」の値を任意のポート番号に変更します
- Unity は値を
ProjectSettings/McpUnitySettings.jsonに保存します - Node.js サーバーを再起動します
Node ブリッジは、インストール済みのパッケージパスからこのプロジェクト設定ファイルを検出するため、MCP クライアントの作業ディレクトリには依存しません。1 つの Node プロセスで値を上書きするには、UNITY_PORT を設定します。例:UNITY_PORT=9001 node build/index.js。
オプション:タイムアウトを設定する
デフォルトでは、MCP サーバーと WebSocket 間のタイムアウトは 10 秒です。 変更するには:
- Unity Editor を開きます
- Tools > MCP Unity > Server Window に移動します
- 「Request Timeout (seconds)」の値を任意のタイムアウト秒数に変更します
- Unity は値を
ProjectSettings/McpUnitySettings.jsonに保存します - Node.js サーバーを再起動します
1 つの Node プロセスで値を上書きするには、秒単位で UNITY_REQUEST_TIMEOUT を設定します。例:UNITY_REQUEST_TIMEOUT=30 node build/index.js。
ヒント
AI コーディング IDE(Claude Desktop、Cursor IDE、Windsurf IDE など)と MCP サーバー間のタイムアウトは、IDE によって異なります。
オプション:永続的なヘッドレス MCP ホストを実行する
CI やクラウドビルドでブリッジの起動や npm の実行が行われないよう、MCP Unity はデフォルトで -batchmode では無効になっています。長時間稼働するヘッドレス Editor を MCP ホストとして実行するには、Unity の起動前に、Server Window で Allow Batch Mode Server を有効にするか、MCP_UNITY_ALLOW_BATCH_MODE=true を設定してオプトインします:
MCP_UNITY_ALLOW_BATCH_MODE=true Unity -batchmode -nographics -projectPath /path/to/project -logFile /path/to/unity.log
オプトインすると、Unity 側の WebSocket サーバーは通常どおり起動しますが、バッチモードでは npm install や npm run build は実行されません。Node ブリッジがビルド済みで、MCP クライアントから利用できることを確認してください。
ブリッジ設定の解決
Node ブリッジは、各接続値を次の順序で解決します:環境変数(UNITY_PORT、UNITY_HOST、または UNITY_REQUEST_TIMEOUT)、MCP_UNITY_SETTINGS_PATH、インストール済みパッケージより上位の ProjectSettings/McpUnitySettings.json ファイル、その後に作業ディレクトリより上位で見つかったファイル、最後にデフォルト値です。生成された MCP 設定では、MCP_UNITY_SETTINGS_PATH と MCP_UNITY_AUTH_TOKEN_PATH が明示的に設定されます。ブリッジは値の取得元をログに記録し、デフォルト値にフォールバックする前に警告します。
ブリッジのセキュリティとパッケージのインストール
MCP Unity は、プロジェクトごとに 256 ビットの認証トークンを Library/McpUnity/bridge-token に作成します。トークンの解決順序は厳密に定められており、MCP_UNITY_AUTH_TOKEN、MCP_UNITY_AUTH_TOKEN_PATH、検出された Unity プロジェクトの隣にあるトークンの順に優先されます。明示的に指定された値が存在しない場合や形式が正しくない場合は、フォールバックせずに失敗します。生成される設定ではトークンファイルのパスを使用し、シークレットを ProjectSettings にコピーすることはありません。
Unity エンドポイントでは、ユーザー名 mcp-unity の HTTP Basic 認証情報が必要です。また、Origin ヘッダーを含むすべての WebSocket ハンドシェイクを拒否します。WebSocket を直接統合する場合は、認証を行い、Origin を含めないでください。Server Window を使用してトークンをコピーまたは再生成してください。トークンをローテーションした後は、すべての MCP クライアントプロセスを再起動してください。
Unity パッケージはコンパイル時に Editor コードを実行できるため、add_package ツールはデフォルトで無効になっています。パッケージソースと MCP クライアントが信頼できる場合に限り、Tools > MCP Unity > Server Window で Allow Package Installation を有効にするか、ProjectSettings/McpUnitySettings.json で AllowPackageInstallation を true に設定してください。
バージョン 1.5.0 では、1.4.x の Node ブリッジは意図的に拒否されます。Unity と Node の両方のパッケージコンポーネントをアップグレードし、パッケージキャッシュのパスが変わった場合は Unity の Configure アクションを再度実行してから、MCP クライアントを再起動してください。
オプション:リモート MCP ブリッジ接続を許可する
デフォルトでは、WebSocket サーバーは 'localhost' にバインドします。他のマシンからの MCP ブリッジ接続を許可するには、次の手順を実行します。
- Unity Editor を開きます
- Tools > MCP Unity > Server Window に移動します
- 「Allow Remote Connections」チェックボックスを有効にします
- Unity は WebSocket サーバーを '0.0.0.0'(すべてのインターフェース)にバインドします
- 新しいホスト設定を適用するため、Node.js サーバーを再起動します
- MCP ブリッジをリモートで実行するときは、環境変数 UNITY_HOST に Unity マシンの IP アドレスを設定します:
UNITY_HOST=192.168.1.100 node server.js
リモートトランスポートは引き続き暗号化されない ws:// です。認証によって不正アクセスは防げますが、通信内容は隠されません。リモートでの使用は、信頼できるネットワーク、VPN、または SSH トンネルに限定してください。Unity プロジェクトのトークンファイルを読み取れないリモートブリッジには、安全なシークレット管理の仕組みを通じて MCP_UNITY_AUTH_TOKEN を渡す必要があります。
サーバーのデバッグ
Node.js サーバーのビルド
MCP Unity サーバーは Node.js を使用してビルドされます。TypeScript コードを build ディレクトリ内の JavaScript にコンパイルする必要があります。
問題が発生した場合は、次の手順で強制的にインストールできます。
- Unity Editor を開きます
- Tools > MCP Unity > Server Window に移動します
- 「Force Install Server」ボタンをクリックします

手動でビルドする場合は、次の手順に従ってください。
-
ターミナル/PowerShell/コマンドプロンプトを開きます
-
Server ディレクトリに移動します。
cd ABSOLUTE/PATH/TO/mcp-unity/Server~ -
依存関係をインストールします。
npm install -
サーバーをビルドします。
npm run build -
サーバーを実行します。
node build/index.js
MCP Inspector を使ったデバッグ
@modelcontextprotocol/inspector を使ってサーバーをデバッグします。
- PowerShell
npx @modelcontextprotocol/inspector node Server~/build/index.js
- コマンドプロンプト/ターミナル
npx @modelcontextprotocol/inspector node Server~/build/index.js
ターミナルを閉じる前、または MCP Inspector を使ってデバッグする前に、Ctrl + C でサーバーをシャットダウンしてください。
コンソールログを有効にする
- ターミナルまたは log.txt ファイルへのログ記録を有効にします。
- PowerShell
$env:LOGGING = "true" $env:LOGGING_FILE = "true"- コマンドプロンプト/ターミナル
set LOGGING=true set LOGGING_FILE=true
よくある質問
MCP Unity とは何ですか?
MCP Unity は、Model Context Protocol(MCP)を使用して、Unity Editor 環境を AI アシスタントや LLM ツールに接続する強力なブリッジです。 要するに、MCP Unity は次のようなものです:
- Unity エディターの機能(オブジェクトの作成、コンポーネントの変更、テストの実行など)を、AI が理解して利用できる「ツール」および「リソース」として公開します。
- Unity 内で WebSocket サーバーを実行し、MCP を実装する Node.js サーバー(Unity に対する WebSocket クライアントとして機能)を実行します。これにより、AI アシスタントが Unity にコマンドを送信し、情報を受け取ることができます。
- AI アシスタントで自然言語のプロンプトを使用して、Unity プロジェクト内で複雑なタスクを実行できるようになり、開発ワークフローが大幅に高速化されます。
なぜ MCP Unity を使うのか?
MCP Unity は、開発者、アーティスト、プロジェクトマネージャーにとって、いくつかの魅力的な利点を提供します:
- 開発の加速: 反復的なタスクを自動化し、ボイラープレートコードを生成し、AI プロンプトを使ってアセットを管理できます。これにより、時間を解放し、創造的で複雑な問題解決に集中できます。
- 生産性の向上: 単純な操作のために手動でメニューをクリックしたりスクリプトを書いたりすることなく、Unity エディターの機能を操作できます。AI アシスタントは、Unity 内でのあなたの能力を直接拡張する存在となります。
- アクセシビリティの向上: Unity エディターの深い仕組みや C# スクリプティングにあまり慣れていないユーザーでも、AI のガイダンスを通じてプロジェクトに意味のある貢献や変更を行えます。
- シームレスな統合: MCP をサポートするさまざまな AI アシスタントや IDE と連携するように設計されており、開発ツールキット全体で AI を活用する一貫した方法を提供します。
- 拡張性: プロトコルとツールセットは拡張できます。新しいツールやリソースを定義して、プロジェクト固有の機能や Unity の機能をより多く AI に公開できます。
- コラボレーションの可能性: 従来はチームメンバーが行っていたタスクを AI が支援したり、プロジェクトの構造や操作を案内することで新しい開発者のオンボーディングを助けたりする、新しい協働の形を促進します。
MCP Unity は、今後登場する Unity 6.2 の AI 機能とどう比較されますか?
Unity 6.2 では、新しい組み込みの AI ツールが導入される予定です。これには、以前の Unity Muse(テクスチャやアニメーションの生成などの生成 AI 機能向け)や Unity Sentis(Unity ランタイムでニューラルネットワークを実行するためのもの)が含まれます。Unity 6.2 はまだ完全にはリリースされていないため、この比較は公開されている情報と予想される機能に基づいています:
- 焦点:
- MCP Unity: 主に エディターの自動化と操作 に焦点を当てています。外部の AI(LLM ベースのコーディングエージェントなど)が Unity エディター自体を制御および照会 して、シーン、アセット、プロジェクト設定を操作できるようにします。これは、エディター内での 開発者のワークフロー を強化することに関するものです。
- Unity 6.2 AI:
- エディター内でのコンテンツ作成(テクスチャ、スプライト、アニメーション、ビヘイビア、スクリプトの生成)と、Unity エディターのインターフェースに直接統合された、一般的なタスク向けの AI 支援を目指しています。
- Unity のドキュメントと API 構造についてどんな質問でもでき、Unity の環境により正確に合わせたカスタマイズされた例を提供する、ファインチューニングされたモデルです。
- AI モデルの推論を実行する機能を追加し、開発者が事前学習済みのニューラルネットワークを ゲームやアプリケーション内で デプロイおよび実行して、NPC の行動、画像認識などの機能を実現できるようにします。
- 相互排他的ではなく、補完的: MCP Unity と Unity ネイティブの AI ツールは補完的であると見なすことができます。AI コーディングアシスタントとともに MCP Unity を使用してシーンをセットアップしたり、アセットを一括変更したりしてから、Unity AI ツールを使用して特定のテクスチャを生成したり、アニメーションを作成したり、それらのアセットの 1 つ用の 2D スプライトを作成したりできます。MCP Unity は、エディターと対話するための柔軟なプロトコルベースの方法を提供し、より広範な外部 AI サービスと統合したり、カスタム自動化ワークフローを構築したい開発者にとって強力なものとなります。
現在、どの MCP ホストと IDE が MCP Unity をサポートしていますか?
MCP Unity は、MCP クライアントとして機能できる任意の AI アシスタントまたは開発環境で動作するように設計されています。エコシステムは成長していますが、現在知られている統合または互換プラットフォームには以下が含まれます:
- Cursor
- Windsurf
- Claude Desktop
- Claude Code
- Codex CLI
- GitHub Copilot
- Google Antigravity
- OpenCode
プロジェクト用のカスタムツールで MCP Unity を拡張できますか?
はい、もちろんです!MCP Unity アーキテクチャの重要な利点の 1 つは、その拡張性です。
- Unity (C#) 内:
McpToolBase(またはリソース用の同様の基底クラス)を継承した新しい C# クラスを作成して、カスタムの Unity エディター機能を公開できます。これらのツールはMcpUnityServer.csに登録されます。たとえば、プロジェクト固有の特定のアセットインポートパイプラインを自動化するツールを作成できます。 - Node.js サーバー (TypeScript) 内: 次に、
Server/src/tools/ディレクトリに対応する TypeScript ツールハンドラーを定義し、入力/出力用の Zod スキーマを含めて、Server/src/index.tsに登録します。この Node.js 部分は、リクエストを Unity 内の新しい C# ツールに転送します。
これにより、AI の機能をゲームやアプリケーションの特定のニーズやワークフローに合わせて調整できます。
MCP Unity は無料で使用できますか?
はい、MCP Unity は MIT ライセンスの下で配布されているオープンソースプロジェクトです。ライセンス条項に従って、自由に使用、変更、配布できます。
MCP Unity に接続できないのはなぜですか?
- WebSocket サーバーが実行されていることを確認してください(Unity の Server Window を確認してください)
- MCP クライアントからコンソールログメッセージを送信して、MCP クライアントと Unity サーバー間の再接続を強制してください
- Unity エディターの MCP Server ウィンドウでポート番号を変更してください。(Tools > MCP Unity > Server Window)
MCP Unity サーバーが起動しないのはなぜですか?
- Unity コンソールでエラーメッセージを確認してください
- Node.js が適切にインストールされ、PATH でアクセス可能であることを確認してください
- Server ディレクトリにすべての依存関係がインストールされていることを確認してください
Play Mode テストの実行時に接続失敗エラーが発生するのはなぜですか?
run_tests ツールは次の応答を返します:
Error:
Connection failed: Unknown error
このエラーは、Play モードに切り替えた際にドメインがリロードされ、ブリッジ接続が失われるために発生します。回避策は、Edit > Project Settings > Editor > "Enter Play Mode Settings" で Reload Domain をオフにすることです。
ツールの初期化時に一部のクライアントが KeyError: 'position' で失敗するのはなぜですか?
一部の MCP クライアントは、#/properties/position のようなローカル JSON ポインター参照を含むツールスキーマを解析する際に失敗することがあります。
MCP Unity は、トランスフォームツールの入力(set_transform、move_gameobject、rotate_gameobject、scale_gameobject)をフィールドごとに新規のネストされたベクタースキーマで登録することでこれを回避しており、生成されるスキーマがローカルの #/properties/... 参照に依存しないようになっています。
それでもこのエラーが発生する場合は、以下を確認してください:
- MCP クライアントを最新バージョンに更新する
- Node サーバーを再ビルドする(
cd Server~ && npm run build) - お使いのパッケージバージョンにこの互換性修正が含まれていることを確認する
トラブルシューティング: WSL2(Windows 11)のネットワーキング
Unity が Windows 11 上で動作している一方、MCP(Node.js)サーバーを WSL2 内で実行している場合、ws://localhost:8090/McpUnity への接続が ECONNREFUSED で失敗することがあります。
原因: WSL2 と Windows は別々のネットワーク名前空間を持っているため、WSL2 内の localhost は Windows ホストを指しません。デフォルトでは、Unity は localhost:8090 でリッスンしています。
解決策 1 — WSL2 のミラーモードネットワーキングを有効にする(推奨)
- Windows 11: 設定 → システム → 開発者向け → WSL → 「ミラーモードネットワーキング」を有効にします。
- または
.wslconfig経由で(その後wsl --shutdownを実行し、WSL を再度開きます):
[wsl2]
networkingMode=mirrored
有効にすると、localhost が Windows と WSL2 の間で共有されるため、デフォルト設定(localhost:8090)が機能します。
解決策 2 — Node クライアントを Windows ホストに向ける
MCP クライアントを起動する前に、WSL シェルで設定します:
# Use the Windows host IP detected from resolv.conf
export UNITY_HOST=$(grep -m1 nameserver /etc/resolv.conf | awk '{print $2}')
これにより、Server~/src/unity/mcpUnity.ts は localhost の代わりに ws://$UNITY_HOST:8090/McpUnity に接続します(UNITY_HOST を読み取り、存在する場合は ProjectSettings/McpUnitySettings.json 内の Host も尊重することがあります)。
解決策 3 — Unity からのリモート接続を許可する
- Unity: Tools → MCP Unity → Server Window → 「Allow Remote Connections」を有効にします(Unity は
0.0.0.0にバインドされます)。 - Windows ファイアウォールが、設定されたポート(デフォルト 8090)での受信 TCP を許可していることを確認します。
- WSL2 から、Windows ホストの IP(解決策 2 を参照)に接続するか、ミラーモードが有効になっていれば
localhostに接続します。
メモ
デフォルトポートは
8090です。Unity Server Window(Tools → MCP Unity → Server Window)で変更できます。この値はMcpUnitySettingsにマッピングされ、ProjectSettings/McpUnitySettings.jsonに永続化されます。
接続性を検証する
npm i -g wscat
# After enabling mirrored networking
wscat -c ws://localhost:8090/McpUnity
# Or using the Windows host IP
wscat -c ws://$UNITY_HOST:8090/McpUnity
テストの実行
C# テスト(Unity)
Unity の Test Runner を使用してテストを実行します:
- Unity Editor を開きます
- Window > General > Test Runner に移動します
- 「EditMode」タブを選択します
- 「Run All」をクリックしてすべてのテストを実行します
TypeScript テスト(サーバー)
Jest を使用してテストを実行します:
cd Server~
npm test
ウォッチモードでテストを実行するには:
npm run test:watch
サポートとフィードバック
ご質問やサポートが必要な場合は、このリポジトリで issue を作成するか、あるいは以下の方法でお問い合わせください:
- Linkedin:
- Discord: gamester7178
- Email: [email protected]
コントリビューション
コントリビューションを歓迎します!お気軽に Pull Request を送信するか、リクエスト内容を添えて Issue を作成してください。
変更をコミットする際は、Conventional Commits 形式に従ってください。
ライセンス
このプロジェクトは MIT License の下にあります。
謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。