본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

Protocol Revision

~18 min · revisions, date-versioning, spec

Level 0호기심 많은 독자
0 XP0/48 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

MCP 의 revision 은 번호가 아니라 날짜야. 지금은 2025-11-25, 그 전은 2025-06-18, 또 그 전은 2025-03-26. 날짜로 판을 매기면 미덕이 둘 생겨. 이 변경이 v2 를 붙일 만큼 '큰지' 를 두고 아무도 다투지 않고, 지금 못박아둔 판이 얼마나 오래됐는지 누구나 한눈에 알아.

Revision 마다 spec 사이트에 자기 URL 이 하나씩 있고, 그 주소는 안 변해 (modelcontextprotocol.io/specification/2025-11-25). 한 번 나온 revision 은 그대로 굳어. 오타는 정오표 페이지로 가거나 다음 revision 에 반영되지, 슬쩍 고쳐지지 않아. 그래서 server 를 특정 revision 에 못박아두고 동작을 따져볼 수 있는 거야. '이 server 는 2025-11-25 를 따른다' 는 문장이 시간이 지나도 같은 뜻으로 남거든.

구현들은 initialize handshake 때 자기가 아는 가장 높은 revision 을 밝혀. 그 session 의 revision 은 양쪽 다 아는 것 중 가장 높은 게 되고. 새 revision 은 기능을 더하고 (CIMD, async task, extension 틀), 가끔 뭘 걷어내 (HTTP+SSE). 걷어낼 때도 언제나 다음 lesson 에서 볼 '나란히 두고, 시간을 주고, 그다음에' 라는 절제 안에서 움직여.

Code

Pinning + revision negotiate·python
# Client 쪽 — 우리가 말할 줄 아는 거
client_protocol_version = "2025-11-25"

# Initialize 의 server response 가 — 실제 negotiate 된 거 알려줌
init = await session.initialize()
print(init.protocolVersion)  # client 광고와 같거나 낮을 수 있음

# Test 에서 negotiated version assert. Drift 는 한 쪽이 뒤처졌단 신호.
assert init.protocolVersion == "2025-11-25"

External links

Exercise

즐겨 쓰는 MCP server 가 어느 revision 에 못박혀 있는지 적어. 가장 최근에 나온 revision 과 비교해봐. 그 간격이 몇 달인지가 곧 의존성이 얼마나 신선한지를 재는 자이자, 어느 한 쪽이 낡은 전제로 움직이고 있을 위험을 재는 자야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.