개요
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: 'Microsoft.CodeAnalysis'에 'Formatting' 형식 또는 네임스페이스 이름이 없습니다 오류를 해결하려면 어떻게 해야 하나요?
이 오류는 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을 비활성화하십시오.
문제 해결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에서 보고되었습니다.
문제 해결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 리소스 대신 컴포넌트를 검사하세요.
문제 해결SplineContainer knots 또는 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 및 이슈에서 언급된 베타 버전에 영향을 미칩니다. Newtonsoft.Json이 float2, float3, float4, quaternion과 같은 Unity.Mathematics 타입의 public 스위즐 프로퍼티를 직렬화하기 때문에 에디터가 멈춥니다. 각 스위즐은 더 많은 스위즐을 가진 다른 구조체를 반환하므로 조합적 직렬화 루프가 발생합니다. 빈 스플라인은 BezierKnot 값을 노출하지 않으므로 정상적으로 반환됩니다.
Unity.Mathematics 네임스페이스의 값 타입에 대해 public 인스턴스 필드만 직렬화하는 JsonConverter를 추가하여 수정하세요. 예를 들어 float3는 {x,y,z}로, quaternion은 {value}로 직렬화합니다. 변환기를 GameObjectSerializer._outputSerializer.Converters에 등록하되, 가능하면 인덱스 0에 삽입하세요. 동등한 수정 방법으로는 [EditorBrowsable(EditorBrowsableState.Never)]로 표시된 프로퍼티를 건너뛰는 계약 리졸버를 사용하거나, GetComponentData에 컴포넌트당 토큰 상한을 두어 폭주하는 컴포넌트 하나가 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이 업스트림 수정을 제공하므로, 패치된 빌드나 릴리스가 나오면 사용하세요.
문제 해결Debug.Log 메시지가 존재하는데도 Unity MCP `read_console`이 0개의 항목을 반환하는 문제를 해결하는 방법
read_console은 Unity의 내부 LogEntries.StartGettingEntries() / GetEntryInternal() API를 사용하며, 이 API들은 Console 창의 툴바 심각도 필터와 검색 텍스트를 그대로 따릅니다. Log/Warning/Error 토글 버튼이 꺼져 있으면, success가 true이고 메시지가 Editor.log에 존재하더라도 API는 0개의 항목을 반환합니다.
**즉시 해결 방법**
1. Unity **Console** 창을 엽니다.
2. 툴바에서 **Log**, **Warning**, **Error** 토글 버튼을 활성화합니다.
3. Console 검색/필터 상자를 비웁니다.
4. read_console을 다시 호출합니다.
Editor C# 코드에서도 심각도 플래그를 다시 활성화할 수 있습니다. 예를 들어 execute_code를 통해:
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에서 확인되었습니다.