OpenSource-Hub

unity-mcp

フレームワーク

CoplayDev/unity-mcp

AI アシスタントを Unity エディターに接続し、アセットとシーンを管理する。

概要

Unity MCP は、モデルコンテキストプロトコルを介して Claude、GPT などの大規模言語モデルを Unity エディターに接続し、シーンの作成、スクリプトの編集、アセットの管理、ゲーム開発ワークフローの自動化を実現する 47 のツールを提供します。MIT ライセンスのもとでオープンソースとして公開されています。

README プレビュー

\n  \n    \n    \n  \n\n\n\n\n[English](README.md)  [简体中文](docs/i18n/README-zh.md)    |    [Discord](https://discord.gg/y4p8KfzrN4)  [Wiki](https://coplaydev.github.io/unity-mcp/)\n\n#### Proudly sponsored and maintained by [Aura](https://www.tryaura.dev/) — the AI assistant for Unreal & Unity.\n##### And don't miss [Godot AI](https://github.com/hi-godot/godot-ai), the new open source project from the makers of MCP for Unity.\n\n\n\nCreate your Unity apps with LLMs. MCP for Unity bridges AI assistants — Claude, Codex, VS Code, local LLMs, and more — with your Unity Editor via Model Context Protocol. Give your LLM the tools to manage assets, control scenes, edit scripts, run tests, and automate your game dev workflows.\n\n\n  \n\n\n---\n\n\n\nRecent Updates\n\n* **[v10.0.0](https://github.com/CoplayDev/unity-mcp/releases/tag/v10.0.0)** (2026-06-30)\n* **[v9.7.3](https://github.com/CoplayDev/unity-mcp/releases/tag/v9.7.3)** (2026-06-15)\n* **[v9.7.1](https://github.com/CoplayDev/unity-mcp/releases/tag/v9.7.1)** (2026-05-24)\n* **[v9.7.0](https://github.com/CoplayDev/unity-mcp/releases/tag/v9.7.0)** (2026-05-22)\n* **[v9.6.8](https://github.com/CoplayDev/unity-mcp/releases/tag/v9.6.8)** (2026-04-27)\n\nFull history: [Release Notes](https://coplaydev.github.io/unity-mcp/releases).\n\n\n\n\n---\n\n## What it does\n\nControl the Unity Editor in natural language from any MCP client — create scenes & GameObjects, edit C# scripts, manage assets, run tests, profile, and build. 47 focused MCP tool entrypoints, any client, free & MIT.\n\n**[Browse the full tool catalog →](https://coplaydev.github.io/unity-mcp/reference/tools/)**\n\n---\n\n## Quickstart\n\n**Requirements:** Unity **2021.3 LTS → 6.x** · Python **3.10+** (via [`uv`](https://docs.astral.sh/uv/)). Works with **any MCP client** — Claude Desktop & Code, Cursor, VS Code, Windsurf, Cline, Gemini CLI, and more.\n\n1. **Install** — Unity → Package Manager → Add from git URL:\n   `https://gith

FAQ (5)

トラブル対応
Unity 6でCS0234: 型または名前空間名 'Formatting' は名前空間 'Microsoft.CodeAnalysis' に存在しません というエラーを修正するにはどうすればよいですか?

このエラーは、USE_ROSLYN が有効な状態で MCP for Unity v10.0.0 を使用した場合に発生します。原因は、ManageScript.cs が Microsoft.CodeAnalysis.Formatting を使用しているにもかかわらず、MCPForUnity.Editor.asmdef が Roslyn Workspaces アセンブリを参照していないことです。

推奨される修正方法: Workspaces 層のフォーマット依存関係を取り除く修正が含まれるバージョンへ、MCP for Unity を更新してください。

手動での回避策: MCPForUnity.Editor.asmdef を開き、precompiledReferences に Microsoft.CodeAnalysis.CSharp.Workspaces.dll を追加します。

"precompiledReferences": [
  "Newtonsoft.Json.dll",
  "Microsoft.CodeAnalysis.dll",
  "Microsoft.CodeAnalysis.CSharp.dll",
  "Microsoft.CodeAnalysis.CSharp.Workspaces.dll",
  "System.Collections.Immutable.dll",
  "System.Reflection.Metadata.dll",
  "System.Runtime.CompilerServices.Unsafe.dll"
]

DLL がプロジェクト内に実際に存在することを確認してから、asmdef を保存し、Unity に再コンパイルさせてください。ワンクリックインストーラーで Microsoft.CodeAnalysis.CSharp.Workspaces.dll が提供されない場合は、存在しない DLL を参照するのではなく、修正済みのパッケージバージョンを使用するか、USE_ROSLYN を無効にしてください。

参照 Issue #1391
トラブル対応
MCP for Unity で manage_components の set_property を使って SpriteRenderer.sprite を設定する際に発生する "SerializedProperty 'sprite' not found" エラーを修正するにはどうすればよいですか?

これは、MCP for Unity がパブリックな C# プロパティ名(sprite)を使ってシリアライズされたフィールドを検索するのに対し、Unity 組み込みの SpriteRenderer はネイティブのバッキングフィールド m_Sprite にそれを格納しているために発生します。シリアライズされたフィールド名に m_ プレフィックスを使用している他の組み込みオブジェクト参照プロパティでも、同じ失敗が発生する可能性があります。

即時の回避策: set_property の代わりに execute_code を使ってプロパティを設定してください:

var sr = gameObject.GetComponent<SpriteRenderer>();
sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/Sprites/WhiteSquare.png");
EditorUtility.SetDirty(sr);

GUID しか持っていない場合:

var path = AssetDatabase.GUIDToAssetPath("YOUR-ASSET-GUID");
var sr = gameObject.GetComponent<SpriteRenderer>();
sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(path);
EditorUtility.SetDirty(sr);

恒久的なコード修正: MCPForUnity/Editor/Helpers/ComponentOps.cs で、SetViaSerializedProperty の検索処理を更新し、Unity のネイティブな m_ フィールド命名規則へフォールバックするようにします:

SerializedProperty prop = so.FindProperty(propertyName)
    ?? so.FindProperty(normalizedName)
    ?? so.FindProperty("m_" + char.ToUpperInvariant(propertyName[0]) + propertyName.Substring(1));

より堅牢な修正としては、SerializedObject のトップレベルプロパティを反復処理し、m_ プレフィックスを取り除いた上で、要求された名前を大文字小文字を区別せずに照合する方法があります。MCP for Unity の main と Unity 6000.3.13f1 の組み合わせで報告されました。

参照 Issue #1413
トラブル対応
Unity 6000.6 で MCP for Unity の GameObject リソースを読み取る際に EditorUtility.InstanceIDToObject で発生する 'NotImplementedException' を修正するにはどうすればよいですか?

com.coplaydev.unity-mcp をバージョン 10.3.0 以降にアップグレードしてください。修正は最新の beta/main ブランチで利用可能です。Unity 6000.6 で EditorUtility.InstanceIDToObject(int) の機能が削除されたため、MCP for Unity 10.2.0 は mcpforunity://scene/gameobject/{id} や .../components の呼び出し時に失敗します。一時的な回避策として、GameObject リソースを使用せず、アクティブなシーンを走査して execute_code を通じてオブジェクトを解決してください。

var roots = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
var all = roots.SelectMany(r => r.GetComponentsInChildren<Transform>(true)).Select(t => t.gameObject);
var target = all.FirstOrDefault(go => go.GetInstanceID() == instanceId);

返されたオブジェクトを使用して、壊れた instance-ID リソースの代わりにコンポーネントを調査してください。

参照 Issue #1412
トラブル対応
SplineContainer のノットや Unity.Mathematics の構造体を含む GameObject からコンポーネントを読み取る際に、MCP for Unity がいつまでもハングしてしまう問題を修正するにはどうすればよいですか?

この問題は、Unity 6000.0.73f1、com.unity.splines 2.8.4、com.unity.mathematics 1.3.2、および Newtonsoft Json 3.2.2 を使用している場合に、MCP for Unity 10.1.2、10.2.0、および issue で言及されているベータ版に影響します。エディターがハングするのは、Newtonsoft.Json が float2、float3、float4、quaternion などの Unity.Mathematics 型のパブリックなスウィズルプロパティをシリアライズするためです。各スウィズルはさらに多くのスウィズルを持つ別の構造体を返すため、組み合わせ爆発的なシリアライズループが発生します。空のスプラインは BezierKnot 値を公開しないため、正常に返されます。

修正するには、Unity.Mathematics 名前空間内の値型に対して、パブリックインスタンスフィールドのみをシリアライズする JsonConverter を追加します。たとえば、float3 は {x,y,z}、quaternion は {value} としてシリアライズします。このコンバーターを GameObjectSerializer._outputSerializer.Converters に登録します。可能であればインデックス 0 に挿入してください。同等の修正としては、[EditorBrowsable(EditorBrowsableState.Never)] でマークされたプロパティをスキップするコントラクトリゾルバーを使用する方法、または GetComponentData にコンポーネントごとのトークン上限を設けて、1つの暴走したコンポーネントが Unity をフリーズさせる代わりに失敗するようにする方法があります。

一時的な回避策: ロード時にリフレクションを使用して、Unity.Mathematics のフィールドのみをシリアライズするコンバーターを GameObjectSerializer._outputSerializer.Converters に挿入します。パッチが適用されるまでは、空でない SplineContainer コンポーネントや、float2/float3/float4/quaternion フィールドを公開するその他のコンポーネントを含む GameObject に対して、mcpforunity://scene/gameobject/{id}/components を呼び出さないでください。エディターが応答しなくなった場合、30秒のブリッジタイムアウトでは Unity のメインスレッドは解放されないため、Unity を再起動する必要があります。「fix: serialize Unity.Mathematics structs by their fields, not their swizzles」というタイトルの PR がアップストリームでの修正を提供します。パッチ適用済みのビルドまたはリリースが利用可能になり次第、それを使用してください。

参照 Issue #1415
トラブル対応
Debug.Logメッセージが存在するのにUnity MCPの`read_console`が0件のエントリを返す場合の解決方法

read_console は Unity の内部 API である LogEntries.StartGettingEntries() / GetEntryInternal() を使用しており、これらの API は Console ウィンドウのツールバーの重要度フィルターと検索テキストを継承します。Log/Warning/Error のトグルボタンがオフになっている場合、success が true でメッセージが Editor.log に存在していても、API は 0 件のエントリを返します。

**即時の回避策**
1. Unity の **Console** ウィンドウを開きます。
2. ツールバーの **Log**、**Warning**、**Error** の各トグルボタンを有効にします。
3. Console の検索/フィルターボックスをクリアします。
4. read_console を再度呼び出します。

execute_code などを使い、Editor の C# コードから重要度フラグを再度有効にすることもできます:

using UnityEditor;
using System.Reflection;

var logEntriesType = typeof(Editor).Assembly.GetType("UnityEditor.LogEntries");
var setFlag = logEntriesType.GetMethod(
    "SetConsoleFlag",
    BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic
);

setFlag.Invoke(null, new object[] { 1 << 7, true }); // Log
setFlag.Invoke(null, new object[] { 1 << 8, true }); // Warning
setFlag.Invoke(null, new object[] { 1 << 9, true }); // Error

var setFilter = logEntriesType.GetMethod(
    "SetFilteringText",
    BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic
);
setFilter?.Invoke(null, new object[] { "" });

その後、types: ["log"] または types: ["all"] を指定して read_console を再試行してください。

**恒久対応:** ReadConsole.GetConsoleEntries にパッチを適用し、現在の consoleFlags とフィルタリングテキストを保存して、エントリの反復処理中は LogLevelLog (1 << 7)、LogLevelWarning (1 << 8)、LogLevelError (1 << 9) を一時的に強制的にオンにし、検索フィルターをクリアした上で、処理後に元の状態を復元します。より影響の少ない方法としては、要求された重要度レベルがマスクされている場合に "note": "Console window filters are hiding log/warning entries" のような警告を返すことも挙げられます。

MCP for Unity v10.0.0 および Unity 6000.3.9f1 で確認されています。

参照 Issue #1239