# [Lv.3] GLM MCP 서버 구현 + 8팀 구조 전환

## 레벨: Lv.3 (리서치 + 에이전트 미팅 필수)

---

## 목표
OpenClaw 중간 단계를 제거하고, Claude Code에서 GLM 모델을 MCP tool로 직접 사용할 수 있게 한다.
8팀(라) 구조를 변경: 팀장(Sonnet) + 팀원 4명(GLM) 오케스트레이션.

## GLM API 정보
- **API URL**: `https://api.z.ai/api/coding/paas/v4`
- **프로토콜**: OpenAI completions 호환
- **모델 목록**:
  - `glm-5` — 최상위 모델 (reasoning, 202K context, 131K output)
  - `glm-4.7` — 고성능 (reasoning, 202K context)
  - `glm-4.7-flash` — 빠른 응답 (reasoning, 202K context)
  - `glm-4.7-flashx` — 초고속 (reasoning, 202K context)
- **비용**: 전부 $0 (무료)
- **API Key**: `/home/jay/workspace/.env.keys`에서 로드하거나, OpenClaw 설정 참조: `~/.openclaw/agents/main/agent/models.json`의 `zai.apiKey`

## MCP 서버 구현

### 1. FastMCP 기반 MCP 서버
- 경로: `/home/jay/workspace/tools/glm-mcp/` 
- Python FastMCP 사용
- OpenAI 호환 API이므로 `openai` python 라이브러리 사용

### 2. MCP Tools 설계

**기본 도구:**
- `glm_generate(prompt, model="glm-4.7-flash", system_prompt="", max_tokens=4096)` — 단순 생성
- `glm_code(task, role="backend", model="glm-5", review_cycles=1)` — 코드 작성 + 자체 리뷰 사이클 후 결과 반환

**역할 기반 도구 (8팀 팀원 시뮬레이션):**
- `glm_backend(task)` — 백엔드 개발자 역할 (system prompt에 백엔드 전문가 설정)
- `glm_frontend(task)` — 프론트엔드 개발자 역할
- `glm_uxui(task)` — UX/UI 디자이너 역할
- `glm_tester(task)` — 테스터 역할 (테스트 코드 작성, 버그 리포트)

각 역할 tool의 내부 동작:
1. 해당 역할의 system prompt 설정
2. z.ai API 호출 (OpenAI 호환)
3. 결과 반환
4. review_cycles > 0 이면 자체 리뷰 → 수정 반복

### 3. Claude Code settings.json에 MCP 서버 등록
- `~/.claude/settings.json`의 mcpServers에 glm-mcp 추가
- 모든 팀(1~8팀)에서 사용 가능하도록 설정

### 4. 8팀 구조 변경

**현재:**
- 라(Ra) 팀장 — Sonnet, OpenClaw 통해 GLM 호출
- GLM-5 — OpenClaw 에이전트

**변경 후:**
- 라(Ra) 팀장 — Sonnet, 설계/검토/오케스트레이션
- 아누비스(Anubis) — GLM-5, 백엔드 (MCP tool: glm_backend)
- 호루스(Horus) — GLM-4.7-flash, 프론트엔드 (MCP tool: glm_frontend)
- 바스테트(Bastet) — GLM-4.7-flash, UX/UI (MCP tool: glm_uxui)
- 토트(Thoth) — GLM-4.7-flash, 테스터 (MCP tool: glm_tester)

(이집트 신화 계열 — 라(Ra) 팀장과 통일)

### 5. 대시보드 조직도 수정
- organization-structure.json에서 8팀 팀원 정보 업데이트
- 기존 GLM-5 단일 → 아누비스/호루스/바스테트/토트 4명으로 변경
- 각 팀원의 역할(백엔드/프론트/UX/테스터) 명시
- 모델: glm-5, glm-4.7-flash 표시

### 6. 8팀 CLAUDE.md / team_prompts.py 수정
- 기존 OpenClaw 호출 제거
- MCP tool 호출 방식으로 변경
- run-glm.sh 래퍼 → 더 이상 사용 안 함 (MCP로 대체)
- 팀장이 MCP tool로 팀원에게 직접 작업 위임하는 워크플로우

## 에이전트 미팅 안건
1. MCP tool 인터페이스 설계 — 어떤 파라미터가 필요한지
2. 역할별 system prompt 설계 — 각 팀원의 전문성을 어떻게 정의할지
3. 오케스트레이션 패턴 — 팀장이 팀원들을 어떻게 조율할지 (순차? 병렬?)
4. 에러 처리 — API 실패, 타임아웃 등
5. 기존 OpenClaw 의존성 제거 범위

## 참조
- OpenClaw 설정: `~/.openclaw/agents/main/agent/models.json`
- 현재 8팀 워크플로우: `/home/jay/workspace/teams/dev8/GLM-WORKFLOW.md`
- run-glm.sh: `/home/jay/workspace/teams/dev8/run-glm.sh`
- team_prompts.py: `/home/jay/workspace/teams/shared/team_prompts.py`
- organization-structure.json: `/home/jay/workspace/memory/organization-structure.json`
- bot-team-mapping.md: `/home/jay/workspace/memory/specs/bot-team-mapping.md`
- FastMCP 참고: `pip install fastmcp`

## 산출물
1. MCP 서버 코드: `/home/jay/workspace/tools/glm-mcp/`
2. settings.json에 MCP 서버 등록
3. organization-structure.json 8팀 업데이트
4. 8팀 CLAUDE.md 업데이트
5. team_prompts.py 8팀 프롬프트 업데이트
6. 테스트: MCP tool 호출 → GLM 응답 정상 확인

## task-timer
- task_id: task-1141.1
- team: dev2-team
