BurningTimesAi/공유/조직자산/시행착오_아카이브/개발_MCP연동_v1.md

208 lines
10 KiB
Markdown
Raw Normal View History

feat(BT·MCP·자산): Unity MCP 연동 완결 + 조직 자산 4종 축적 PD님 "이번 세션 디버깅 노하우·MCP 연동 경험 조직 자산화" 지시 이행. ## BT3 완결 - Unity MCP 연동 완전 성공 실증 (`mcp__unityMCP__read_console` 실수신) - PD 지시 로그 BT3 완료 아카이브 이동 - 활성 지시 0건 상태 ## 조직 자산 축적 (4종 산출물) 1. Unity_MCP_연동_가이드_v1.md — v2 실전 개정 (Transport stdio 강제·Configure 자동·트러블슈팅 7종) 2. claude_desktop_config.example.json — stdio 기본 + HTTP 미지원 경고 + 수동 워밍업 안내 3. memory/org/feedback_mcp_setup_pitfalls.md — 함정 5종 재발 방지 SOT 4. 공유/조직자산/시행착오_아카이브/개발_MCP연동_v1.md — 7단계 타임라인 5. 공유/조직공지/2026-04-22_Unity_MCP_연동_표준_워크플로우_v2.md — 조직공지 승격본 + MEMORY.md 인덱스 항목 append ## 실증된 함정 5종 (조직 계승 핵심) (1) Claude Desktop HTTP 거부 → stdio 전용 (2) uvx pywin32 캐시 락 → 수동 사전 워밍업 + Defender 예외 (3) Claude 좀비 인스턴스 "Could not attach" → 트레이 Quit·작업관리자 전수 종료 (4) 다른 PC config 경로 무효 → PC별 재구성, template만 git 추적 (5) Unity Package Transport 기본 HTTP → Claude Desktop 대상 stdio 전환 ## 대화로그 공유/대화로그/조직운영/2026-04-21.md에 BT3 완결 섹션 append (성공 검증·자산화 내역·계승 원칙·Phase 3 이관 안건) ## 매니페스트 bt-mcp-knowledge-capture Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 16:06:38 +00:00
---
type: 시행착오 아카이브
scope: Unity MCP (Model Context Protocol) 도입·연동
source_project: BurningTimes (BT3 지시)
source_date: 2026-04-21 ~ 2026-04-22
target_org: BurningTimes
target_project: EerieVillage + 차기 프로젝트
maintainer: 개발팀장 · 총괄PM
created: 2026-04-22
version: v1
related_rules: C6-1 · C11 · C16 · C23 · C30 · C34-11 · P10 · P14
related_feedback: feedback_mcp_setup_pitfalls.md
rationale: BT3 Unity MCP 도입 시 실증된 7종 트러블슈팅 타임라인·해결 순서·교훈을 조직 자산으로 영구 보존. 차기 MCP 도구 도입·신규 PC 셋업 시 첫 참조 자산
---
# BurningTimes · Unity MCP 연동 시행착오 아카이브 v1
## 1. 개요 — BT3 지시 요약
| 항목 | 값 |
|------|---|
| **지시일** | 2026-04-21 |
| **지시 내용** | "Unity MCP를 이용해 프로젝트 개발 진행" + Unity MCP 저장소 `E:\BurningTimes\코어코드\unity-mcp`에 사전 clone |
| **완결일** | 2026-04-22 |
| **소요 세션** | 약 3 세션 (경계: SessionStart hook resume 3회) |
| **최종 결과** | ✅ 완전 연동 성공 (`mcp__unityMCP__read_console` 실수신 확인) |
| **관리 방침 결정** | A안 (gitignore + setup 자동 clone) — PD 승인 |
## 2. 시행착오 타임라인 — 7단계
### 단계 1. HTTP url 방식 실패
**시도**: unity-mcp 공식 README의 "기본 권장" HTTP 설정 채택
```json
"unityMCP": {"url": "http://localhost:8080/mcp"}
```
**결과**: Claude Desktop 경고 **"유효한 MCP 서버 구성이 아닙니다: unityMCP"** (유일한 거부 이유 메시지)
**근본 원인**: Claude Desktop은 **stdio 방식만 공식 지원**. README의 "HTTP 권장"은 Claude Code·Cursor·Windsurf 등 타 클라이언트 대상이었고, Claude Desktop 호환성은 별도 명시되지 않음.
**해결**: stdio(uvx) 방식으로 전환
```json
"unityMCP": {
"command": "<uvx.exe 절대 경로>",
"args": ["--from", "mcpforunityserver", "mcp-for-unity", "--transport", "stdio"]
}
```
**교훈**: MCP 공식 문서의 "권장" 방식 ≠ 모든 클라이언트 지원. **클라이언트별 stdio/HTTP 호환성 재확인** 필수.
---
### 단계 2. "Server disconnected" 반복 (memory·filesystem)
**증상**: JSON 문법 수정 후에도 `MCP memory / filesystem: Server disconnected` 경고 반복.
**근본 원인**:
- `memory` 서버: `C:\Users\silve\...` 경로 — **다른 PC(silve 사용자)에서 가져온 config**. 이 PC는 `sw` 사용자
- `filesystem` 서버: `D:\Dev\SurgeCoin`**해당 프로젝트 폴더 자체 미존재**
- BT 조직 작업과 무관한 다른 프로젝트(SurgeCoin) 잔재 경로
**해결**:
- BT 작업에 불필요한 서버(filesystem·sqlite)는 config에서 제거
- memory는 `sw` 경로로 수정 유지 또는 제거 (옵션 A: minimal config 권장 채택)
**교훈**: **config는 PC별·사용자별 경로가 혼입되기 쉬움**. 다른 PC에서 복사 시 전수 경로 수정 + 불필요 서버 제거. BT 조직은 **template만 git 추적**, 실제 config는 PC별 개별 관리.
---
### 단계 3. "Could not attach" 4개 서버 동시 실패
**증상**: Claude Desktop 재시작 후에도 4개 MCP 서버(sqlite·filesystem·memory·unityMCP) 모두 `Could not attach to MCP server` 경고.
**근본 원인**: Claude Desktop **좀비 인스턴스** 잔류. 창 X 닫기는 트레이 잔존이라 이전 인스턴스가 MCP 프로세스 락. 새 인스턴스가 attach 시도하나 실패.
**해결**:
1. 작업관리자에서 `Claude.exe` 프로세스 **전수 종료** (복수 인스턴스 모두)
2. MCP 서버 잔재 프로세스(`uvx.exe`·`python.exe`·`node.exe`) 검색·종료
3. Claude Desktop 재실행
**교훈**: "창 닫기 ≠ 종료". **트레이 아이콘 우클릭 Quit** 또는 **작업관리자 전수 종료** 필수. 가이드·조직공지에 명시화.
---
### 단계 4. unityMCP "Server disconnected" 반복 — pywin32 캐시 락
**증상**: 3개 서버 disconnected 해소 후에도 `MCP unityMCP: Server disconnected` 지속.
**로그** (`%APPDATA%\Claude\logs\mcp-server-unityMCP.log`):
```
error: Failed to install: pywin32-311-cp312-cp312-win_amd64.whl (pywin32==311)
Caused by: failed to remove directory ...pywin32-311.data:
다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. (os error 32)
```
**근본 원인**: uvx 첫 설치 시 `mcpforunityserver` 의존성 `pywin32-311` 전개 중 **Windows Defender 실시간 스캔**이 `.pyd` 바이너리 일시 락. 또는 이전 uvx 시도 잔재 프로세스가 캐시 락.
**해결**:
1. 모든 Claude·uvx·python 프로세스 전수 종료
2. `uv cache` 삭제:
```powershell
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\uv\cache"
```
3. 수동 사전 워밍업 — Claude Desktop 밖에서 먼저 uvx 실행:
```powershell
& "<uvx.exe 경로>" --from mcpforunityserver mcp-for-unity --help
```
성공하면 캐시에 모든 의존성 완전 설치됨 (3~5분)
4. Claude Desktop 재실행 → uvx는 캐시에서 즉시 시동 (수 초)
**교훈**: Python 기반 MCP 서버는 **첫 실행 시 의존성 다운로드·설치가 수 분 소요**. Claude Desktop의 자동 시동은 타임아웃 짧아 실패 가능. **반드시 수동 사전 워밍업** 후 재시작.
---
### 단계 5. Python 서버 연결 성공 · Unity 연결 미완
**증상**: Claude Desktop에서 `mcp-installer (running)`·`unityMCP` 표시. `mcp__unityMCP__read_console` 호출 응답 수신:
```
"No Unity Editor instances found. Please ensure Unity is running with MCP for Unity bridge."
```
**근본 원인**: **Claude ↔ Python 서버는 연결**되었으나 **Python 서버 ↔ Unity Editor 미연결**. Unity Editor 실행만 하고 MCP for Unity Package 미설치.
**해결**:
1. Unity Hub에서 EerieVillage 프로젝트 열기
2. Package Manager → + → "Install package from git URL..."
3. `https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main`
4. 설치·컴파일 완료 대기
**교훈**: "MCP 서버 연결 = 도구 작동"이 아님. **대상 시스템(Unity)과의 최종 연결**까지 별도 검증 필요. 구간별 단계 체크가 효율적.
---
### 단계 6. Unity Transport HTTP → stdio 전환
**증상**: Unity MCP for Unity 창 열림. Configure 버튼 클릭 시 에러 팝업:
> **"Claude Desktop does not support HTTP transport. Switch to stdio in settings before configuring."**
**근본 원인**: Unity 쪽 Transport 기본값은 `HTTP Local`. Claude Desktop 대상 시 stdio 필요 — Unity MCP Package가 자체 검증해서 친절히 차단.
**해결**:
1. Unity MCP for Unity 창 → Transport 드롭다운 → **stdio** 선택
2. Client 드롭다운 → **Claude Desktop** 선택
3. Configure 버튼 재클릭 → 성공
**교훈**: MCP 도구 양쪽(서버·클라이언트) **Transport 일치 필수**. Unity MCP Package는 자체 검증 로직 있어 에러 메시지가 정확한 방향 제시.
---
### 단계 7. 연동 완전 성공 검증
**시점**: 2026-04-22
**명령**: `mcp__unityMCP__read_console action=get count=5`
**응답**:
```json
{
"success": true,
"message": "Retrieved 5 log entries.",
"data": [
"MCP-FOR-UNITY: Setup marked as completed",
"MCP-FOR-UNITY: Started local HTTP server in terminal: <uvx> --offline --from mcpforunityserver==9.6.6 mcp-for-unity --transport http --http-url http://127.0.0.1:8080 ...",
"[WebSocket] Receive loop error: ...",
...
]
}
```
**검증 포인트**:
- ✅ Unity Editor 실체 로그 수신
-`mcpforunityserver==9.6.6` 실행 확인
- ⚠️ WebSocket 경고 3건 — Configure 전환 시점 임시 재연결 로그 (현재 연결 정상이므로 무해)
## 3. BT 조직 계승 체크리스트
### 신규 PC Unity MCP 셋업 시 (필독)
1. BT 레포 clone + `paths.local.json` 생성 + `setup_windows.ps1` 실행 → unity-mcp 자동 clone
2. `winget install astral-sh.uv` → 터미널 재시작
3. **수동 사전 워밍업** (필수): `uvx --from mcpforunityserver mcp-for-unity --help` (3~5분)
4. Unity Editor + Package Manager로 MCP for Unity 설치
5. MCP for Unity 창 → **Transport: stdio** + Server Start + Client: Claude Desktop + Configure
6. Claude Desktop **트레이 Quit** 후 재실행
7. 연동 검증: "Unity Console 로그 읽어줘" 요청 → 실수신 확인
### 차기 MCP 도구 도입 시
1. 공식 README의 "권장 방식"이 HTTP이면 **Claude Desktop 호환성 재확인**
2. Python 기반 서버는 **uvx 수동 사전 워밍업** 우선
3. 재시작은 **트레이 Quit** 체크
4. 연동 검증은 **실체 도구 호출**로 판정 (UI 표시만으로 성공 단정 금지)
## 4. PM 보고 안건 (Phase 3 이관 검토)
- **Unity MCP 편집 표준 워크플로우 v2** 조직공지 정식 발행 (`2026-04-22_Unity_MCP_연동_표준_워크플로우_v2.md` 완료)
- **C23 정직성 관점 재발 방지**: 단계 5·6 같이 "MCP 서버 연결 = 도구 작동" 오인 차단 — 체크리스트에 실체 검증 단계 고정화
- **ToolSearch·Agent 권한 추가 반영** (`.claude/settings.json` commit `6550dc7`): 차기 MCP 도구 도입 시 유사 자동 승인 패턴 적용 검토
- **C34-11 Agent 경계 재확인**: Unity MCP 도구 호출 시 PC별 경로 하드코딩 금지 — `$UNITY_PROJECT_ROOT` 변수 활용 표준 유지
## 5. 참조 원본
### 대화로그·로그
- `공유/대화로그/조직운영/2026-04-21.md` — BT3 지시·집행·트러블슈팅 세션 경위
- `%APPDATA%\Claude\logs\mcp-server-unityMCP.log` — pywin32 락 에러 로그 (로컬)
- `%APPDATA%\Claude\logs\main.log` — Claude Desktop MCP 전반 로그 (로컬)
### 관련 자산
- `공유/개발팀_자산/Unity_MCP_연동_가이드_v1.md` (v2 개정본)
- `공유/개발팀_자산/claude_desktop_config.example.json` (stdio 기본)
- `공유/조직공지/2026-04-22_Unity_MCP_연동_표준_워크플로우_v2.md`
- `memory/org/feedback_mcp_setup_pitfalls.md` — 재발 방지 SOT (본 아카이브 축약판)
- `공유/조직자산/시행착오_아카이브/개발_클라이언트팀장_v1.md` — 이전 Unity MCP v1 경험 계승
### 커밋 타임라인
- `aa61028` — Unity MCP 도입 셋업 PM 집행분
- `6550dc7` — ToolSearch·Agent 권한 자동 승인 추가
- (본 세션 후속 commit) — BT3 완료 + 조직 자산 축적