# task-1141.1 완료 보고서: GLM MCP 서버 구현 + 8팀 구조 전환

**S**: dev8-team(라 팀장)은 OpenClaw 중간 단계를 통해 GLM 모델을 호출하는 구조로 운영 중이며, 팀원이 GLM-5 단일 에이전트로 구성되어 있었다.

**C**: OpenClaw 의존성으로 인해 done 파일 대기, 타임아웃, 세션 누적 문제가 발생하고, 단일 GLM 에이전트로는 역할별 전문성 분리가 불가능했다.

**Q**: Claude Code에서 GLM 모델을 MCP tool로 직접 호출하고, 8팀을 4명 팀원 구조로 전환할 수 있는가?

**A**: FastMCP 기반 MCP 서버(6개 tool)를 구현하고, 8팀을 아누비스/호루스/바스테트/토트 4명 구조로 전환 완료. pytest 129건 전체 통과, pyright 에러 0건, black/isort 적용 완료. z.ai API는 현재 잔액 부족(429)이나 코드 구조는 정상.

---

## 산출물

### 1. MCP 서버 코드 (신규)
- `/home/jay/workspace/tools/glm-mcp/server.py` — FastMCP 기반, 6개 tool
- `/home/jay/workspace/tools/glm-mcp/__init__.py`
- `/home/jay/workspace/tools/glm-mcp/requirements.txt`
- `/home/jay/workspace/tools/glm-mcp/tests/test_server.py` — 30개 테스트

### 2. settings.json MCP 서버 등록 (수정)
- `~/.claude/settings.json` — `mcpServers.glm-mcp` 추가

### 3. organization-structure.json (수정)
- `/home/jay/workspace/memory/organization-structure.json`
- 이시스(Isis) 제거, 바스테트(Bastet) 추가
- 아누비스: glm-4.7-flash → glm-5 (모델 업그레이드)
- 호루스: tester(haiku) → frontend(glm-4.7-flash)
- 토트: ux-ui → testing (역할 전환)

### 4. team_prompts.py (수정)
- `/home/jay/workspace/prompts/team_prompts.py`
- TEAM_INFO: type "glm" → "mcp", 멤버 업데이트
- TEAM_MEMBER_ROLES: 새 4인 구조 반영
- `_build_mcp_prompt()` 신규 함수 추가
- 라우팅: `elif team["type"] == "mcp":` 분기 추가

### 5. dev8 CLAUDE.md (수정)
- `/home/jay/workspace/teams/dev8/CLAUDE.md`
- OpenClaw 위임 → MCP tool 호출 방식으로 전면 재작성

### 6. GLM-WORKFLOW.md (수정)
- `/home/jay/workspace/teams/dev8/GLM-WORKFLOW.md`
- v5: OpenClaw 직접 호출 → MCP tool 호출로 완전 대체
- done 파일 대기 로직 제거 (MCP는 동기 호출)

### 7. 테스트 파일 (수정)
- `/home/jay/workspace/prompts/test_team_prompts.py` — dev8 type "mcp" 반영
- `/home/jay/workspace/tests/test_team_prompts.py` — mcp type + fixture 업데이트

---

## 테스트 결과
- MCP 서버 테스트: 30 passed (0.88s)
- team_prompts 테스트 (prompts/): 18 passed (0.06s)
- team_prompts 테스트 (tests/): 99 passed (0.24s)
- pyright: 0 errors, 0 warnings
- black/isort: OK

## 에이전트 미팅
1사이클 진행, 상세: `memory/meetings/task-1141.1-meeting.md` 참조

합의 사항:
1. 6개 MCP tool 구현 (glm_generate, glm_code, glm_backend, glm_frontend, glm_uxui, glm_tester)
2. 역할별 system prompt를 server.py 내 SYSTEM_PROMPTS에 정의
3. 순차 호출 기본, 팀장(Ra)이 오케스트레이션
4. 2회 재시도 + 120초 타임아웃, 에러는 문자열로 반환
5. OpenClaw 의존성 → MCP로 대체 (run-glm.sh 사용 중단)

---

## 발견 이슈 및 해결

### 자체 해결 (4건)
1. **z.ai API 429 잔액 부족** — mock 테스트로 대체, 코드 구조는 정상 구현
2. **team type "direct" 전환 시 routing 충돌** — "mcp" 신규 type 도입으로 해결 (direct의 Task tool 워크플로우와 GLM MCP tool 워크플로우 분리)
3. **tests/test_team_prompts.py fixture 미반영** — `patched_build_prompt`에 "mcp" type 분기 추가
4. **import 경로 문제 (test_server.py)** — `sys.path.insert(0, parent_dir)` 추가

### 범위 외 미해결 (1건)
1. **z.ai API 잔액 충전 필요** — 범위 외 사유: 외부 서비스(z.ai) 과금 정책. API 키의 리소스 패키지가 소진됨. 충전 후 실제 API 호출 테스트 필요.

---

## QC 자동 검증 결과
```json
{
  "task_id": "task-1141.1",
  "overall": "PASS (file_check FAIL은 보고서 미생성 시점)",
  "test_runner": "PASS — 129 passed in 0.98s",
  "pyright_check": "PASS — 0 errors, 0 warnings",
  "style_check": "PASS — black OK, isort OK",
  "data_integrity": "PASS"
}
```
