5cfb8a1이 .gitignore에 docs/를 넣고 68개 파일을 지웠다. 그런데
AgentBuilderContractExampleTest, ToolBundleContractExampleTest,
ArchitectureDocumentContractTest는 docs/ 아래 계약 예제와 architecture
문서를 입력으로 직접 읽는다. 그 결과 clean clone에서 테스트 10건이
입력을 찾지 못해 실패했다.
제외 범위를 원래 의도대로 좁힌다. 에이전트 산출물(AGENTS.md, .agents/,
.codex/, docs/superpowers/)은 계속 제외하고 저장소 문서는 추적한다.
문서는 삭제 직전 상태(3de052a)를 기준으로 복원하고, 그 위에 main 코드와
대조해 어긋난 부분을 고쳤다.
- ADR-0007을 Superseded로 바꾸고 ADR-0013을 새로 쓴다. route당 Tool
Service N개가 최종안이며, PortalToolRegistryClient가 이미 route별로
N개를 유지하고 있는데 ADR-0007은 "bundles는 항상 한 항목"을 Accepted
상태로 주장하고 있었다. ADR-0009 결정 4도 부분 대체한다.
- ADR-0008 파일 헤더가 Accepted였으나 ADR-0009가 이미 대체한 상태였다.
- 6078852의 endpoint 소유권 반전이 반영되지 않은 서술을 계약 v0.2,
bundle 설정 예제, Tool 적재 안내에서 고친다.
- Portal registry 계약 v0.1과 route key 규약을 새로 문서화한다. 둘 다
구현은 있는데 계약 문서가 없었다.
- MCP SDK 2.0.0 SBOM을 추가한다.
번호 주석: ADR-0011과 0012는 feature/mcp-integration이 Tool inputSchema
정책에 쓰고 있어 비워 둔다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
57 lines
2.5 KiB
Markdown
57 lines
2.5 KiB
Markdown
# Agent Builder-MCP 목표 계약 v1 합의 기준선
|
|
|
|
- 상태: Partial Agreement
|
|
- 합의 기준일: 2026-07-10
|
|
- 목적: 확정된 목표 제약만 기록하고 미확정 payload의 추측 구현을 방지
|
|
|
|
## Normative 합의 사항
|
|
|
|
### 책임 경계
|
|
|
|
- Agent Builder가 Tool을 선택한다.
|
|
- MCP Server는 요청에 명시된 Tool만 검증·실행한다.
|
|
- MCP Server는 stateless하며 `mcp-session-id`를 대화 상태로 사용하지 않는다.
|
|
|
|
### Tool 노출과 호출 단위
|
|
|
|
- Agent Builder가 LLM에 노출하는 Tool은 최대 50개다.
|
|
- Agent Builder-MCP 목표 호출은 요청 하나당 Tool 하나다.
|
|
|
|
### Tool 식별
|
|
|
|
- 표준 MCP Tool `name`을 `tools/list`와 `tools/call` 사이의 시스템 간 실행 key로 사용한다.
|
|
- Tool Service가 전체 MCP 범위에서 고유한 namespaced name을 선언하고 MCP Server는 이를 재작성하지 않는다.
|
|
- Agent Builder UID는 Agent Builder 내부 관리에만 사용하고 MCP wire contract에 포함하지 않는다.
|
|
|
|
### 실행 가드레일
|
|
|
|
- 전체 상호작용 상한은 300초다.
|
|
- MCP Server는 3만 자 기준으로 원문 응답을 임의 절단하지 않는다.
|
|
- idempotency가 확인되지 않은 write/update Tool은 자동 retry하지 않는다.
|
|
|
|
## 아직 Normative가 아닌 항목
|
|
|
|
다음 항목은 목표 v1의 일부로 구현하면 안 된다.
|
|
|
|
- 최종 method 이름 (`tool/call`, `tools/call` 또는 별도 vendor method)
|
|
- 최종 Tool Call parameter와 result field 이름
|
|
- `initialize` 전체 request/response
|
|
- Tool name 변경·폐기 시 rolling 호환 기간과 Agent Builder 내부 mapping lifecycle
|
|
- 사원 식별자 header를 언젠가 필수로 승격할지 여부 (현재 계약에서는 선택값이며 MCP는 검증하지 않는다)
|
|
- HTTP status와 JSON-RPC/업무 error code 매핑
|
|
- read retry 조건과 idempotency key
|
|
- 300초 timeout budget과 cancellation protocol
|
|
- 대용량 response의 최대 크기와 continuation 방식
|
|
- streaming media type과 framing
|
|
|
|
## 요청·응답 규격 처리 원칙
|
|
|
|
목표 v1의 확정 JSON 예시는 아직 제공하지 않는다. 미확정 field를 임의로 채운 JSON은 사실상 새로운 계약 결정이 되기 때문이다.
|
|
|
|
Agent Builder의 전체 payload와 위 미확정 항목이 승인되면 다음 순서로 갱신한다.
|
|
|
|
1. 이 문서 상태를 `Approved`로 변경한다.
|
|
2. 목표 v1 JSON example과 schema를 추가한다.
|
|
3. 관련 ADR을 추가하거나 기존 ADR의 구현 보류 조건을 해제한다.
|
|
4. 코드와 테스트 변경을 별도 작업으로 수행한다.
|