# Milestone: MCP Control Surface Sketch

## 위치

- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md`

## 목표

외부 agent가 NomadCode Core를 제어하는 표면을 MCP로 둘지 여부를 나중에 검토할 스케치로 보류한다. 현재 확정된 구현 범위가 아니며, Roadmap Driven Agent-Ops Automation과 이후 lifecycle sync에서 Core action, sync domain, review gate 경계가 더 분명해진 뒤 채택 여부와 구현 단위를 판단한다.

## 상태

[스케치]

## 승격 조건

- [ ] 외부 agent 제어 표면이 실제 제품/운영 흐름에서 필요한 사용 사례를 정리한다.
- [ ] MCP, HTTP, CLI/internal command 같은 후보 표면을 비교하고 채택/비채택 결정 기준을 남긴다.
- [ ] tool 권한, side effect, dry-run, expected revision, idempotency, actor/audit 경계를 정의한다.
- [ ] 구현이 필요하다고 판단될 경우 하나의 계획 Milestone으로 자를 수 있는 후속 slice를 정한다.

## 구현 잠금

- 상태: 잠금
- SDD: 확인 필요 - 외부 agent 제어 표면은 API/tool 계약, 권한, side effect, audit 경계를 바꿀 수 있으므로 계획 승격 시 SDD 필요 여부를 다시 판단한다.
- 결정 필요:
  - [ ] 외부 agent 제어 표면을 MCP로 채택할지 여부
  - [ ] 외부 agent가 호출할 수 있는 Core action 범위
  - [ ] 인증, 권한, audit, side effect 승인 경계

## 범위

- 외부 agent 제어 표면 후보 비교
- MCP 채택/비채택 기준 정리
- tool policy, 권한, side effect, idempotency 질문 정리
- Core action 모델이 안정된 뒤 구현 Milestone으로 승격할지 판단

## 기능

### Epic: [surface-sketch] External agent control surface sketch

외부 agent 제어 표면을 확정하지 않고 후보와 승격 조건만 정리한다.

- [ ] [surface-use-cases] 외부 agent가 Core action을 직접 호출해야 하는 사용 사례와 호출하지 않아도 되는 사용 사례를 구분한다.
- [ ] [surface-options] MCP, HTTP, CLI/internal command 후보를 같은 기준으로 비교한다.
- [ ] [tool-policy] 권한, actor, audit, side effect 승인, idempotency, revision mismatch 처리 질문을 정리한다.
- [ ] [promotion-slice] 채택 시 첫 구현 단위와 선행 조건을 계획 Milestone 후보로 나눈다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음

## 범위 제외

- MCP server 구현
- Core action 구현 또는 HTTP API 변경
- provider sync 동작 변경
- 현재 진행중 Milestone의 완료 조건 변경

## 작업 컨텍스트

- 이 항목은 완료된 Roadmap Driven Agent-Ops Automation에서 제외한 MCP 관련 내용을 나중에 검토하기 위한 스케치다.
- 선행 후보: Roadmap Driven Agent-Ops Automation, Milestone Execution Lifecycle Sync
- 관련 경로 후보: `services/core/internal/http/`, `packages/contracts/`, `agent-roadmap/`
- 확인 필요: 외부 agent 제어 표면이 실제로 필요한지, 필요하다면 MCP가 NomadCode의 기본 표면이어야 하는지
