상세 기사는 아래를 참조하세요.
MCP 2026-07-28의 변경 사항은 API 추가가 아니라, 통신 모델 자체의 재설계이다. 핵심적인 3가지 변경 사항과 프로덕션(Production) 이행 지침을 정리한다.
1. 스테이트리스(Stateless)화 구현 상세
initialize / notifications/initialized / Mcp-Session-Id를 완전히 폐지한다. 대신 각 요청의 params._meta에 io.modelcontextprotocol/protocolVersion, clientCapabilities, clientInfo를 저장한다. 서버 인스턴스 간의 상태 공유가 불필요해진다. createMcpHandler(() => new McpServer(...))는 요청마다 새로운 인스턴스를 생성하는 팩토리 패턴(Factory Pattern)이다.
상태가 필요한 경우에는 DynamoDB/PostgreSQL/서명된 토큰(Signed Token)에 저장하고, 명시적인 핸들(Handle)을 도구 인자(Tool Argument)로서 유통시킨다. 암묵적인 세션에 의존하지 않는 설계가 전제된다.
2. MRTR (Multi Round-Trip Requests)
기존 elicitation/create의 푸시(Push)형에서, resultType: "input_required"를 반환하는 풀(Pull)형으로 변경된다. 클라이언트는 inputResponses를 부가하여 동일한 도구를 재실행한다. JSON-RPC ID는 새로 생성되며, 별도의 HTTP 연결이나 별도의 인스턴스로의 도달도 허용한다. 멱등성(Idempotency) 보장은 구현 측의 책임이다 (idempotencyKey 패턴 권장).
3. 헤더 라우팅과 캐시
Mcp-Method / Mcp-Name 헤더를 통해 ALB/WAF/Envoy가 JSON 바디를 해석하지 않고도 라우팅, 속도 제한(Rate Limiting), 추가 인증을 적용할 수 있게 된다. tools/list 등은 ttlMs + cacheScope (private / public)를 반환하며, 결정론적 순서(Deterministic Order)로 정렬하는 것이 권장된다.
이행 판단의 요점
- 즉시 대응:
initialize 의존성 제거, Streamable HTTP 이행, server/discover 구현
- 단계적 이행: Elicitation → MRTR 이행, 세션 상태의 핸들화
- 주의: Roots/Sampling/Logging은 12개월의 권장되지 않음(Deprecated) 기간이 있다. 신규 채택 불가. Tasks는 확장 사양인
io.modelcontextprotocol/tasks로 이동
- 인가(Authorization): RFC 9207 Issuer 검증 필수화. DCR → Client ID Metadata Documents로 이행
- GitHub MCP Server 실적: Redis 세션 삭제, 헤더 참조로 변경 완료
GitHub Actions에 공식 Conformance Test를 통합하고, 멱등성·토큰 만료·분산 트레이싱(traceparent 전파)을 구현하면 ECS/K8s/Lambda 상의 일반적인 HTTP 기반으로서 본 프로덕션 운용이 가능하다.
Discussion