현장에서 에이전트 런타임을 붙여 보면 같은 일이 반복된다. PoC에서는 잘 보이던 응답 속도와 비용 구조가 운영 트래픽 앞에서 흔들린다. 원인은 모델이 아니다. 매 요청마다 조금씩 달라지는 MCP tool catalog다.
툴 하나를 추가했고, 설명 문구를 다듬었고, 권한별로 노출 목록을 바꿨다. 개발 입장에서는 작은 변경이다. 모델 입장에서는 prefix가 바뀐 새 프롬프트다. 캐시는 맞지 않는다.
캐시는 의미가 아니라 prefix를 본다
Prompt caching은 “비슷한 내용”을 재사용하지 않는다. 공급자별 구현은 다르지만 운영자가 기억할 원리는 하나다. 캐시는 반복되는 앞부분이 같을 때만 경제성이 생긴다.
Anthropic 문서는 prompt caching이 tools, system, messages 순서로 prefix를 참조한다고 설명한다. tool definition 변경은 tools cache뿐 아니라 system, messages cache까지 함께 무너뜨린다. OpenAI 문서도 static content를 앞에 두고 variable content를 뒤에 두라고 권고하며, tools 역시 동일해야 캐시 대상이 된다고 설명한다.
에이전트 런타임에서 tool catalog는 설정 파일이 아니라 비용 구조를 결정하는 prefix 계약이다.
MCP를 붙인 뒤 캐시 hit rate가 낮다면 먼저 모델을 바꾸지 않는다. tool catalog가 요청마다 동일한지 본다.
Tool catalog는 동적으로 만들수록 비싸진다
MCP는 서버가 tool을 제공하고 클라이언트가 이를 발견해 호출하는 구조다. 2025-11-25 MCP schema의 Tool에는 name, title, description, inputSchema, outputSchema, annotations 같은 필드가 있다. 이 필드들은 모델이 도구를 이해하는 재료이자 캐시 prefix의 일부가 된다.
운영에서 자주 깨지는 지점은 명확하다.
| 흔한 설계 | 운영 결과 | AX Ops 설계 |
|---|---|---|
| 권한마다 tool 배열을 새로 생성 | 순서와 길이가 흔들림 | 전체 catalog 고정, 실행 단계에서 권한 검사 |
| 배포 때마다 description 자동 생성 | 문구 변화가 cache miss 유발 | 문구 변경은 버전 변경으로 관리 |
| 서버 응답 순서를 그대로 사용 | 런타임마다 배열 순서 변동 | canonical sort 고정 |
| 실험 tool을 중간에 삽입 | 뒤쪽 prefix까지 변경 | prefix namespace와 append-only 정책 |
권한 관리는 tool definition에서 하지 않는다. 실행 전 policy gate와 tool handler 내부에서 한다. 모델에게 보이는 catalog는 안정적으로 유지하고, 호출 가능 여부는 런타임에서 판단한다.
버전과 prefix를 분리해야 배포가 산다
Cache-stable catalog의 핵심은 세 가지다.
- 순서 고정:
vendor.domain.toolName같은 prefix를 붙이고 사전순으로 정렬한다. 사람이 보기 좋은 묶음보다 byte-level 안정성이 먼저다. - 버전 고정:
description,inputSchema,outputSchema가 바뀌면catalog_version을 올린다. 몰래 고치지 않는다. - prefix 고정: 공통 tool catalog, system instruction, 정적 policy를 앞에 둔다. 사용자 질문, 시간, 계정 상태, 조회 결과는 뒤에 둔다.
운영 런타임에는 catalog manifest가 필요하다. manifest에는 tool name, schema hash, description hash, owner, rollout state를 둔다. 요청 조립기는 manifest만 읽는다. MCP 서버가 응답한 순서를 그대로 프롬프트에 넣지 않는다.
이 방식은 유연성을 줄이는 일이 아니다. 변경을 배포 가능한 단위로 만드는 일이다. 카탈로그가 안정되면 캐시 hit rate, TTFT, 입력 토큰 비용을 같은 대시보드에서 관리할 수 있다.
참고와 다음 행동은 하나로 묶어라
이 주제의 결론은 단순하다. 에이전트 운영에서 prompt cache는 모델 기능이 아니라 런타임 설계의 산출물이다. MCP tool catalog를 cache-stable하게 만들지 않으면 tool이 늘어날수록 운영비와 지연이 같이 커진다.
참고 자료:
- Anthropic, Prompt caching, 2026 기준 문서: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
- OpenAI, Prompt caching, 2026 기준 문서: https://platform.openai.com/docs/guides/prompt-caching
- Model Context Protocol, Schema Reference 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25/schema
- Model Context Protocol, Tools 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25/server/tools
- Cloudflare, Remote MCP server guide, 2026-06-03 업데이트: https://developers.cloudflare.com/agents/model-context-protocol/guides/remote-mcp-server/
AX Ops에서는 이 작업을 prompt engineering으로 두지 않는다. catalog manifest, cache boundary, policy gate, telemetry를 한 설계로 묶는다. 다음 스프린트에서 할 일은 tool을 더 붙이는 것이 아니라 tool catalog를 계약으로 고정하는 것이다. AX Ops 방법론 →
