# GLM MCP 서버 설계 에이전트 미팅

**일시**: 2026-03-27
**Task**: task-1141.1
**팀**: dev2-team
**퍼실리테이터**: 오딘 (Odin)
**참석자**: 토르(백엔드), 프레이야(프론트엔드), 미미르(UX/UI), 헤임달(테스터)

---

## 안건

### [토론 1] MCP tool 인터페이스 설계

**오딘**: z.ai API는 OpenAI completions 호환이므로 openai 라이브러리를 사용한다. 6개 tool을 설계해야 한다.

**토르**: 기본 도구 2개(`glm_generate`, `glm_code`)와 역할 도구 4개(`glm_backend`, `glm_frontend`, `glm_uxui`, `glm_tester`)가 명세되어 있다. `glm_generate`는 범용이고, `glm_code`는 자체 리뷰 사이클을 포함해야 한다. 파라미터는 다음과 같다:
- `glm_generate(prompt, model="glm-4.7-flash", system_prompt="", max_tokens=4096)` — 단순 생성
- `glm_code(task, role="backend", model="glm-5", review_cycles=1)` — 코드 작성 후 자체 리뷰

**프레이야**: 역할 도구는 내부적으로 `glm_generate`를 호출하되, 각 역할에 맞는 system prompt를 자동 설정하면 된다.

**헤임달**: `review_cycles` 파라미터는 0~3 범위로 제한해야 한다. 무한 루프 방지.

**합의**: 명세 그대로 6개 도구 구현. review_cycles는 0-3 제한.

### [토론 2] 역할별 system prompt 설계

**오딘**: 각 팀원(아누비스, 호루스, 바스테트, 토트)의 역할에 맞는 system prompt가 필요하다.

**미미르**: system prompt에 포함할 요소:
1. 역할 정의 (어떤 전문가인지)
2. 코딩 표준 (Python black/isort, 테스트 포함)
3. 출력 형식 가이드 (코드 블록으로 반환)

**토르**: 각 역할별 핵심 전문성:
- backend: Python/FastAPI, 데이터 모델, API 설계, 보안
- frontend: React/TypeScript, Next.js, 컴포넌트 설계
- uxui: 와이어프레임, 정보 아키텍처, 접근성
- tester: pytest, 엣지 케이스, 커버리지

**합의**: 역할별 system prompt를 별도 모듈(prompts.py)에 정의. 핵심 전문성 + 코딩 표준 포함.

### [토론 3] 오케스트레이션 패턴

**오딘**: 현재 8팀은 openclaw으로 GLM-5 단일 호출이다. MCP로 변경 후 팀장(Ra)이 MCP tool로 4명 팀원을 조율한다.

**프레이야**: 기본 패턴은 순차 호출이다. 팀장이 작업을 분해하고, 역할별 tool을 호출하면 된다. 병렬 호출은 Claude Code의 Task tool 병렬 실행에 맡기면 된다.

**토르**: MCP tool은 동기 호출이므로, 팀장이 순차적으로 `glm_backend` → `glm_frontend` → `glm_tester` 순으로 호출하는 게 자연스럽다.

**합의**: MCP tool은 순차 호출 기본. 팀장(Ra)이 오케스트레이션 판단. tool 자체는 독립적으로 동작.

### [토론 4] 에러 처리

**헤임달**: z.ai API에서 발생할 수 있는 에러:
1. 429 Rate Limit / 잔액 부족
2. 500 서버 에러
3. 타임아웃 (202K context → 대형 요청 시)
4. 모델 미지원 에러

**토르**: 재시도 전략: 429/500은 최대 2회 재시도 (5초 간격). 타임아웃은 60초 기본, 최대 300초.

**합의**:
- 2회 재시도 + 5초 대기
- 타임아웃: 기본 120초
- 모든 에러는 명확한 메시지로 반환 (MCP ToolError)

### [토론 5] 기존 OpenClaw 의존성 제거 범위

**오딘**: 현재 의존성:
1. `run-glm.sh` — openclaw agent 호출 래퍼
2. `GLM-WORKFLOW.md` — openclaw 기반 워크플로우
3. `team_prompts.py` `_build_glm_prompt()` — openclaw 위임 프롬프트 생성
4. CLAUDE.md — "OpenClaw에 위임" 지시

**프레이야**: `run-glm.sh`는 더 이상 필요 없다. GLM-WORKFLOW.md는 MCP tool 기반으로 재작성해야 한다. team_prompts.py의 type을 "glm" → "direct"로 변경하고, _build_glm_prompt를 MCP tool 사용 방식으로 수정해야 한다.

**토르**: 주의: 현재 dispatch.py에서 team type이 "glm"이면 다른 처리를 한다. type 변경 시 dispatch.py도 확인 필요.

**합의**:
- `run-glm.sh`: 사용 중단 (삭제는 하지 않음, 주석 처리)
- `GLM-WORKFLOW.md`: MCP 기반으로 업데이트
- `team_prompts.py`: type "glm" → "direct"로 변경, _build_glm_prompt → MCP tool 기반 프롬프트로 수정
- `CLAUDE.md`: MCP tool 사용 방식으로 업데이트
- dispatch.py 영향 범위 확인 필수

---

## 합의 사항
1. 6개 MCP tool 구현 (명세 그대로)
2. 역할별 system prompt를 prompts.py에 분리
3. 순차 호출 기본, 팀장이 오케스트레이션
4. 2회 재시도, 120초 타임아웃, ToolError로 에러 반환
5. OpenClaw 의존성은 MCP로 대체 (삭제가 아닌 업데이트)
6. review_cycles 0-3 범위 제한

## 미해결 사항
- z.ai API 잔액 부족 (429 에러) — 현재 테스트 불가, mock 테스트로 대체
