저장소 문서를 다시 추적하고 계약 예제를 복원한다
All checks were successful
Deploy Gateway / deploy (push) Successful in 2m52s
All checks were successful
Deploy Gateway / deploy (push) Successful in 2m52s
계약 테스트는 docs/contracts 아래 예제를 golden example로 읽는다.
docs/와 README.md가 ignore되어 있어 예제 파일이 사라졌고 9건이
실패하고 있었다. 문서가 온전했던 마지막 상태(3de052a)에서 복원하고
.gitignore에서 두 항목을 제거한다. 에이전트 산출물인
docs/superpowers/ 제외는 유지한다.
initialize 응답의 capabilities.tools.listChanged를 문서는 true로
적고 있었으나 InitializeHandler는 false를 낸다. 현재 HTTP 단발 응답
transport가 notification을 push할 수 없으므로 false가 맞다. 예제와
architecture.md를 코드에 맞추고, ToolListChangedEvent가 발행되지만
아직 소비되지 않는다는 점과 SSE 도입 시 true로 바꾼다는 조건을
남긴다.
169개 테스트 전부 통과.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
39
docs/contracts/tool-service-mcp/README.md
Normal file
39
docs/contracts/tool-service-mcp/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Tool Service-MCP 계약 문서
|
||||
|
||||
이 디렉터리는 Tool Service와 MCP Server 사이의 metadata 조회·실행 계약을 관리한다.
|
||||
|
||||
```text
|
||||
Agent Builder ──[agent-builder-mcp 계약]──▶ MCP Server ──[tool-service-mcp 계약]──▶ Tool Service
|
||||
```
|
||||
|
||||
| 문서 | 상태 | 용도 |
|
||||
|---|---|---|
|
||||
| [protocol-v0.2-bundle-discovery.md](protocol-v0.2-bundle-discovery.md) | Implemented | Tool Service Bundle의 매니페스트 조회·실행 계약. 구현은 N개 Bundle을 지원하지만 운영 배포는 1개로 고정 |
|
||||
| [TEMP-tool-list-loading-guide.md](TEMP-tool-list-loading-guide.md) | Temporary | Tool 개발 파트가 현재 최초 적재·memory snapshot·`tools/list` 변환 흐름을 이해하기 위한 안내 |
|
||||
|
||||
push 등록 방식(v0.1)은 채택하지 않았다. 그 이유는
|
||||
[v0.2 §2](protocol-v0.2-bundle-discovery.md#2-왜-조회-방식인가-왜-기동-시-1회가-아닌가)에 있다.
|
||||
|
||||
## 현재 원칙
|
||||
|
||||
- 운영 Tool metadata의 유일한 원천은 각 Tool Service의 매니페스트다.
|
||||
- `local` profile은 Tool Service 매니페스트를 먼저 조회하고, 최초 실패 시 `config/local-core-tools-manifest-sample-v1.json` fallback을 사용한다.
|
||||
- 표준 MCP `name`이 `tools/list`와 `tools/call`의 실행 식별자다. Agent Builder UID는 이 계약에 포함하지 않는다.
|
||||
- Tool Service는 표준 MCP `name`을 선언한다. MCP는 자기 Bundle 안에서 형식·접두사·중복을 검증하며, 서로 다른 MCP 배포 간 전역 유일성은 Tool Service·플랫폼의 변경 절차로 보장한다.
|
||||
- MCP는 요청 경로에서 in-memory snapshot만 읽는다. Redis는 선택적인 공유 last-good cache다.
|
||||
- 조회 실패는 Tool 삭제가 아니다. 성공한 매니페스트가 Tool을 제외했을 때만 삭제를 반영한다.
|
||||
- 불완전한 aggregate, 중복 name, 총량 상한 초과는 현재 snapshot을 교체하지 않는다.
|
||||
|
||||
## 예제와 검증
|
||||
|
||||
[examples/bundle-v0.2](examples/bundle-v0.2/)의 매니페스트, MCP 설정, Actuator 상태 응답을 계약 테스트가 직접 읽는다.
|
||||
예제와 구현은 같은 변경에서 함께 수정한다.
|
||||
|
||||
운영 적용 전에 Tool 개발 파트와 다음 항목을 확정한다.
|
||||
|
||||
1. MCP → Tool 방향 NetworkPolicy와 매니페스트 인증 방식
|
||||
2. Tool name 변경·폐기 시 rolling 호환 기간
|
||||
3. `namePrefix`, Tool 수, 매니페스트 크기 상한
|
||||
4. Tool Service별 timeout과 권한 scope
|
||||
|
||||
상세 필드와 장애 처리는 [v0.2 계약](protocol-v0.2-bundle-discovery.md)을 따른다.
|
||||
Reference in New Issue
Block a user