본문으로 건너뛰기

버전 관리

Model Context Protocol은 다음과 같은 형식의 문자 기반 버전 식별자를 사용하여 이전 버전과 호환되지 않는 변경이 마지막으로 이루어진 날짜를 나타냅니다. YYYY-MM-DD.

리비전

리비전은 다음과 같이 표시될 수 있습니다.

  • Draft: 아직 완성되지 않아 사용할 수 없는 작성 중인 사양.
  • Current: 현재 사용 가능한 프로토콜 버전으로, 계속해서 이전 버전과 호환되는 변경이 적용될 수 있습니다.
  • Final: 더 이상 변경되지 않는 과거의 완전한 사양입니다.

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

기능 상태

사양의 개별 기능은 기능 라이프사이클 및 단계적 중단 정책에 따라 Deprecated로 표시될 수도 있습니다. 이 경우 해당 기능은 여전히 사양에 포함되어 있지만 후일 제거될 예정입니다. Deprecated인 기능들은 마이그레이션 경로를 문서화하거나 마이그레이션이 필요하지 않다고 명시하며, 최소 12개월 동안 또는 정책의 신속 제거 예외에 따라 최소 90일 동안은 사양에 남아 있습니다. 그 기간이 지나면 제거 대상이 되어 향후 리비전에서 Removed될 수 있습니다.

현재 Deprecated인 기능들은 deprecated features registry에 나와 있습니다.

협상 과정

모든 요청은 자신이 사용하는 프로토콜 버전을 _meta 필드의 io.modelcontextprotocol/protocolVersion 키를 통해 명시하며, 서버는 각 요청을 개별적으로 수락하거나 거절합니다. Streamable HTTP의 경우에도 동일한 값이 MCP-Protocol-Version 헤더에 포함됩니다. 클라이언트와 서버는 MAY 동시에 여러 프로토콜 버전을 지원할 수 있습니다.

서버가 요청한 버전을 지원하지 않을 경우, 지원하는 버전들을 목록으로 나타내는 UnsupportedProtocolVersionError 응답을 보냅니다. 이때 클라이언트는 상호 호환되는 버전을 사용해 다시 요청하거나, 호환되는 버전이 전혀 없을 경우 사용자에게 오류를 표시할 수 있습니다.

사전에 버전을 선택하고 싶은 클라이언트는 서버가 지원하는 프로토콜 버전, capability, 식별 정보를 단일 요청으로 반환하는 필수 RPC인 server/discover를 호출할 수 있습니다. 이 호출은 선택 사항이며, 클라이언트는 직접 요청을 보낸 뒤 버전 관련 오류가 발생하면 이를 처리할 수도 있습니다.

handshake 기반의 프로토콜 리비전(2025-11-25 및 그 이전 버전)을 구현한 서버 및 클라이언트와의 상호 운용성에 대해서는 Backward Compatibility를 참조하십시오.