버전 관리

버전 관리 (Versioning)

Model Context Protocol은 YYYY-MM-DD 형식의 문자열 기반 버전 식별자를 사용해요. 이는 호환되지 않는(backwards incompatible) 변경이 마지막으로 이루어진 날짜를 나타냅니다.

출처: 문서

본문

Model Context Protocol은 YYYY-MM-DD 형식을 따르는 문자열 기반 버전 식별자를 사용해서, 호환되지 않는 변경이 마지막으로 이루어진 날짜를 표시해요.

프로토콜 버전은 변경이 하위 호환성(backwards compatibility)을 유지하는 한, 프로토콜이 업데이트되어도 증가하지 않아요. 이렇게 해서 상호 운용성을 유지하면서 점진적으로 개선할 수 있죠.

개정 (Revisions)

개정은 다음과 같이 표시될 수 있어요.

  • Draft(초안): 진행 중인 사양으로, 아직 사용할 준비가 되지 않은 단계예요.
  • Current(현재): 사용할 준비가 되었고, 하위 호환되는 변경을 계속 받을 수 있는 현재 프로토콜 버전이에요.
  • Final(최종): 더 이상 변경되지 않을, 지나간 완성된 사양이에요.

현재 프로토콜 버전은 2026-07-28입니다.

기능 상태 (Feature States)

사양의 개별 기능은 기능 수명주기 및 폐기 정책에 따라 Deprecated(폐기 예정) 로 추가 표시될 수 있어요. 이 경우 해당 기능은 여전히 사양의 일부로 남지만, 제거가 예정되어 있죠. 폐기 예정 기능은 마이그레이션 경로(또는 필요 없다는 명시)를 문서화하며, 정책의 신속 제거 예외 규정에 따라 최소 12개월 또는 최소 90일 동안 사양에 남아 있다가 제거 대상이 되고, 이후 미래 개정에서 Removed(제거) 될 수 있어요.

현재 폐기 예정인 기능은 폐기 예정 기능 레지스트리에 나열되어 있습니다.

협상 (Negotiation)

모든 요청은 자신의 _meta 필드에 있는 io.modelcontextprotocol/protocolVersion 키로 사용 중인 프로토콜 버전을 선언하며, 서버는 각 요청을 독립적으로 수락하거나 거부해요. Streamable HTTP에서는 같은 값이 MCP-Protocol-Version 헤더에도 실려 전달됩니다. 클라이언트와 서버는 여러 프로토콜 버전을 동시에 지원할 수 있어요(MAY).

서버가 요청된 버전을 지원하지 않으면, 지원하는 버전 목록을 담은 UnsupportedProtocolVersionError로 응답해요. 그러면 클라이언트는 서로 지원하는 버전으로 요청을 다시 시도하거나, 없다면 사용자에게 오류를 표시할 수 있어요.

버전을 미리 선택하려는 클라이언트는 서버의 지원 프로토콜 버전, 기능, 정체성을 한 번의 요청으로 돌려주는 필수 RPC인 server/discover를 호출할 수 있어요. 이를 호출하는 것은 선택 사항이라서, 클라이언트는 어떤 요청이든 바로 보내고 버전 오류가 오면 처리하면 됩니다.

핸드셰이크 기반 프로토콜 개정(2025-11-25 및 이전)을 구현하는 서버·클라이언트와의 상호 운용은 하위 호환성을 참고하세요.

더 알아보기 (Learn more)