# Unity MCP 연동 가이드 v2 (BurningTimes — 실전 검증 개정)

> **목적**: BT 조직 개발자가 Unity MCP를 처음 연동·재설치할 때 따를 **실전 검증** 절차. 2026-04-21~22 BT3 도입 시 실제 겪은 이슈·해결안 반영.
>
> **대상**: 개발팀·기획팀 (Unity Editor 조작에 MCP 도구 활용 전원)
>
> **개정 이력**:
> - v1 (2026-04-21): HTTP 방식 기반 초안
> - **v2 (2026-04-22)**: 실전 검증 — HTTP 거부·uvx 캐시 락·Transport 스위칭·Configure 자동화 반영
>
> **참조 규칙**: C6-1 원본 보호 · C30 git 동기화 · C34-11 Agent 경계 · C11 개발 관점

---

## 1. 구성 개요

| 구성 | 역할 |
|------|------|
| **CoplayDev MCP for Unity** (v9.6.x+) | Python 기반 MCP 서버 + Unity 에디터 패키지 2종 |
| **uv / uvx** (Astral) | Python 패키지·MCP 서버 실행 환경 |
| **Claude Desktop** | MCP 클라이언트 (BT 조직 기본 환경) |
| **EerieVillage Unity 프로젝트** | MCP 대상 Unity 프로젝트 |

### 🔴 중요 — Claude Desktop은 **stdio 방식 전용**
Claude Desktop은 공식적으로 **HTTP MCP 서버 연결을 지원하지 않음**. 실증: `{"url": "http://..."}` 방식은 "유효한 MCP 서버 구성이 아님" 경고로 거부됨. **반드시 stdio(uvx) 방식 사용**.

### 통신 구조
```
Claude Desktop  ←stdio(uvx)→  mcpforunityserver (Python)  ←HTTP/WebSocket→  Unity Editor (MCP for Unity Package)
```

- Claude Desktop → Python 서버: **stdio(uvx)** 전용
- Python 서버 → Unity Editor: Unity Package가 Transport를 HTTP·stdio 둘 다 지원. **Claude Desktop 대상 시 Unity 쪽 Transport도 stdio**로 설정 필수 (Configure 시 자동 검증 경고)

---

## 2. 사전 요구 사항

- Python 3.10+
- **uv** (Astral 배포) — winget 권장
- Unity 2021.3 LTS+ (EerieVillage는 6000.3.13f1 LTS)
- BT 레포 clone + setup 스크립트 실행 (unity-mcp 자동 clone 포함)
- Git 명령줄

---

## 3. 설치 절차 (신규 PC 기준 표준 7단계)

### 3-A. BT 레포 셋업
```powershell
# Windows
git clone https://burning.i234.me/NerdNavis_AiDev/BurningTimesAi.git "E:/BurningTimes"
cd E:/BurningTimes
cp paths.local.json.template paths.local.json
# paths.local.json 편집:
#   UNITY_PROJECT_ROOT = 실제 Unity 프로젝트 경로 (ProjectSettings 폴더 있는 경로)
#   FRAMEWORK_PKG_ROOT = BT.Framework 경로 (선택)
#   DISCORD_WEBHOOK = BT 공용 웹훅 URL
.\setup\setup_windows.ps1
```
→ setup 스크립트가 `코어코드/unity-mcp/`에 CoplayDev 저장소를 자동 `git clone`.

### 3-B. uv 설치
```powershell
# Windows (winget 권장)
winget install --id=astral-sh.uv -e --accept-source-agreements --accept-package-agreements
```
```bash
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**설치 후 터미널 재시작** (PATH 반영).

### 3-C. uvx 경로 확인
```powershell
Get-Command uvx | Select-Object Source
```
보통 경로: `C:\Users\{USERNAME}\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_*\uvx.exe`

### 3-D. uv 캐시 사전 워밍업 (중요 — pywin32 락 이슈 회피)
```powershell
& "C:\Users\{USERNAME}\AppData\Local\Microsoft\WinGet\Packages\astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe\uvx.exe" --from mcpforunityserver mcp-for-unity --help
```
**3~5분 소요**. `--help` 출력이 뜨면 성공 (의존성 `pywin32·fastmcp·pydantic` 등 캐시 구축 완료). 이 단계 건너뛰면 Claude Desktop 자동 시동 때 **"pywin32.data 디렉토리 락" 에러로 disconnected** 반복.

**에러 시 대처**:
- Defender 예외 등록 (관리자 PowerShell):
  ```powershell
  Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\uv\cache"
  ```
- 캐시 삭제 후 재시도:
  ```powershell
  Remove-Item -Recurse -Force "$env:LOCALAPPDATA\uv\cache" -ErrorAction SilentlyContinue
  ```

### 3-E. Unity Editor + MCP for Unity Package 설치
1. Unity Hub → EerieVillage 프로젝트 열기
2. `Window → Package Manager → + → Install package from git URL...`
3. 입력:
   ```
   https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main
   ```
4. 설치·컴파일 완료 대기 (우하단 스피너 멈춤)

### 3-F. Unity MCP for Unity 창 설정 (**v2 핵심**)
Unity 상단 메뉴: `Window → MCP for Unity` 창 열기

#### ① Transport를 **stdio**로 변경 (필수)
- 기본값은 `HTTP Local` — Claude Desktop 대상 시 그대로 Configure 누르면 **"Claude Desktop does not support HTTP transport"** 에러
- Transport 드롭다운 → **`stdio`** 선택

#### ② Server 구동
- "Start Server" 버튼 → 🟢 Running 상태 확인

#### ③ Client = **Claude Desktop** 선택
- Client Configuration 드롭다운에서 "Claude Desktop" 선택

#### ④ Configure 버튼 클릭 (자동 설정)
- Unity가 `%APPDATA%\Claude\claude_desktop_config.json`을 **자동으로 올바른 stdio 포맷**으로 덮어씀
- uvx 절대 경로·args 자동 탐지·기록
- 기존 수동 설정보다 안정적

### 3-G. Claude Desktop 완전 재시작 + 검증
1. **트레이 아이콘 우클릭 → Quit** (창 X는 트레이 잔류 — 미반영)
2. Claude Desktop 재실행
3. Claude 세션에서 요청: "Unity Console 로그 읽어줘"
4. 제가 `mcp__unityMCP__read_console` 호출 → Unity Console 로그 실수신 확인

**실증 (2026-04-22)**: 위 순서로 진행하면 5단계 만에 연동 성공. `success: true` + Unity Console 로그 배열 수신.

---

## 4. BT 조직 Unity MCP 편집 표준 워크플로우 v2

> **v1 계승 근거**: `공유/조직자산/시행착오_아카이브/개발_클라이언트팀장_v1.md` §Unity MCP 편집 6단계 표준 워크플로우

### 편집 6단계 표준 (씬·프리팹·ScriptableObject·스크립트 편집 시)

| 단계 | 액션 | 근거 규칙 |
|------|------|----------|
| 1. **SHA 기록** | Unity 프로젝트 `git rev-parse HEAD` 기록 (편집 전 커밋 확정) | C30 git 동기화 |
| 2. **Read 선행** | MCP 도구 또는 파일 직접 Read로 편집 전 상태 전수 파악 | C5 정직성 |
| 3. **백업** | 원본 파일 `.bak_{YYYYMMDD_HHMM}.{ext}` 복사 | C6-1 원본 보호 |
| 4. **Unity 프로젝트 commit** | 편집 전 현 상태 Unity 레포 commit (롤백 지점) | C6-2 프로덕션 보호 |
| 5. **편집 집행** | MCP 도구 호출. 상대 경로·`$UNITY_PROJECT_ROOT` 사용 | C34-11 Agent 경계 |
| 6. **검증** | Unity Console 오류 0건·의도 결과 반영 → 커밋 | P14 QA 게이트 |

### 금지 행위
- 절대 경로 하드코딩 (PC별 달라지는 경로)
- 백업 없이 씬·프리팹 직접 편집
- Unity Console 오류 잔존 상태로 작업 종료
- MCP 응답 "완료" 신뢰하고 Unity Editor 실체 미검증

---

## 5. 트러블슈팅 — 실전 검증 이슈 7종

| 증상 | 원인 | 해결 |
|------|------|------|
| `{"url": "..."}` 설정 시 **"유효한 MCP 서버 구성이 아닙니다"** | Claude Desktop HTTP 미지원 | stdio(uvx) 방식으로 전환 |
| **"Could not attach to MCP server"** 다수 서버 동시 | Claude Desktop 좀비 인스턴스가 MCP 프로세스 락 | 작업관리자에서 `Claude.exe`·`uvx.exe`·`uv.exe`·`python.exe`·`node.exe` 전수 종료 후 재실행 |
| **"Server disconnected" 반복** (unityMCP) | uvx 첫 설치 시 `pywin32.data` 폴더 락 (Defender 실시간 검사·이전 프로세스) | 3-D 수동 사전 워밍업 + 필요 시 Defender 예외 + `uv cache clean` |
| **"MCP memory: Server disconnected"** 또는 유사 | 다른 PC에서 가져온 config의 경로(`C:\Users\silve\...`) 무효 | 해당 PC 실제 경로로 수정 또는 불필요하면 제거 |
| Unity Package 설치 후에도 **"No Unity Editor instances found"** | MCP for Unity 브릿지 서버 미구동 | Unity → `Window → MCP for Unity` 창에서 "Start Server" 클릭 |
| Configure 버튼 클릭 시 **"Claude Desktop does not support HTTP transport"** | Unity 쪽 Transport가 `HTTP Local` (기본값) | Transport 드롭다운 → `stdio` 선택 후 재Configure |
| Claude Desktop 재시작해도 변경 미반영 | 트레이 좀비 인스턴스 잔류 (창 X 닫기는 미종료) | 트레이 아이콘 우클릭 Quit 또는 작업관리자 전수 종료 |

---

## 6. 업데이트·유지보수

### unity-mcp 업스트림 업데이트
```bash
cd 코어코드/unity-mcp
git pull
```
Unity Package는 Package Manager에서 별도 업데이트 (버전 변경 시 Unity에서 수동 수행).

### 충돌·연동 실패 시 로그 확인
- Claude Desktop 로그: `%APPDATA%\Claude\logs\mcp-server-unityMCP.log`
- Unity Console: `Window → General → Console`
- Unity MCP for Unity 창 하단 상태 표시

---

## 7. 관련 자산 (BT 조직 계승)

- `공유/조직공지/2026-04-22_Unity_MCP_연동_표준_워크플로우_v2.md` — 조직공지 승격본 (본 가이드 요지)
- `공유/조직자산/시행착오_아카이브/개발_MCP연동_v1.md` — BT3 도입 시행착오 타임라인·교훈
- `memory/org/feedback_mcp_setup_pitfalls.md` — MCP 셋업 재발 방지 패턴 5종
- `공유/조직자산/시행착오_아카이브/개발_클라이언트팀장_v1.md` — 이전 프로젝트 Unity MCP v1 경험
- `공유/개발팀_자산/claude_desktop_config.example.json` — Claude Desktop 설정 예시 (stdio 기본)
- `paths.local.json.template` — PC별 경로 템플릿
- `setup/setup_windows.ps1` / `setup_macos.sh` — 자동 셋업 스크립트 (§3.7 unity-mcp clone)
