# 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개로 고정 | | [tool-list-loading-guide.md](tool-list-loading-guide.md) | Guide | Tool 개발 파트가 현재 최초 적재·memory snapshot·`tools/list` 변환 흐름을 이해하기 위한 안내. 규범 내용은 담지 않고 v0.2를 가리킨다 | 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)을 따른다.