출시 이래 최대 개정이 겨냥한 것

2026년 5월 21일 확정된 MCP 2026-07-28 릴리스 후보는 프로토콜 '출시 이래 최대 개정'으로 불립니다. initialize/initialized 핸드셰이크와 Mcp-Session-Id 헤더, 그리고 프로토콜 수준 세션 관리가 통째로 제거되면서 어떤 MCP 요청이든 아무 서버 인스턴스에나 도달할 수 있게 됐습니다. 지금까지 수평 확장에 필수였던 스티키 라우팅과 공유 세션 스토어가 프로토콜 계층에서 더는 필요하지 않습니다. 원격 MCP 서버는 평범한 라운드로빈 로드밸런서 뒤에서 Mcp-Method 헤더로 트래픽을 나누고, 클라이언트가 tools/list 응답을 캐시하도록 둘 수 있습니다.

확장이 1급 시민으로 승격되면서

Extensions는 역방향 DNS ID로 식별되고 클라이언트·서버 능력의 extensions 맵으로 협상되며, 각자 ext-* 저장소에서 위임된 메인테이너가 관리하고 스펙과 독립적으로 버저닝됩니다. 서버 렌더링 UI를 제공하는 MCP Apps는 샌드박스 iframe에 대화형 HTML을 그리는 공식 확장으로 편입됐고, 2025-11-25 릴리스에서 실험적으로 등장했던 장시간 작업 Tasks는 프로덕션에서 드러난 재설계 필요를 반영해 스펙 본문이 아니라 확장으로 자리를 옮겼습니다.

12개월 폐기 유예가 열어 준 창

Roots·Sampling·Logging 세 기능에는 폐기 예고가 붙었습니다. 폐기 통지와 가장 이른 제거 시점 사이에 최소 12개월을 두는 정책이 명문화됐으므로, 유예 기간 내내 세 기능은 그대로 동작합니다. 다만 신규 코드에서 폐기 예정 기능을 새로 끌어다 쓰면 12개월 뒤 재작업이 예약되는 셈이라, 마이그레이션은 이 유예를 시간을 무한정 버는 장치가 아니라 마감일이 박힌 창으로 다뤄야 합니다.

설계에서 운영까지: 무상태 MCP 마이그레이션 체크리스트

(a) 기획·목표 수치: 옮길 대상과 합격선을 코드보다 먼저 선언합니다. 첫 지표는 세션 의존 코드 지점 수입니다. Mcp-Session-Id나 initialize 시점에 유저 상태를 얹은 코드 경로를 전수 조사해 목표를 0으로 잡고, 무상태 배포 후 에러율을 기준선 대비 +0.5%p 이내로 묶는 것을 전환 합격선으로 둡니다. 확장별 버전 매트릭스도 착수 전에 표로 만들어, 어떤 확장이 어떤 역방향 DNS ID와 버전으로 협상되는지 한눈에 보이게 합니다.

(b) 실패 패턴: 실패는 세 갈래에서 반복됩니다. 세션 ID에 유저 상태나 장바구니·인증 컨텍스트를 얹어 둔 서버는 무상태 전환 순간 상태를 잃습니다. 로드밸런서에 스티키 세션 설정이 남아 있으면 라운드로빈의 이점이 사라지고 특정 인스턴스로 트래픽이 쏠립니다. 폐기 예정인 Roots·Sampling·Logging을 신규 기능에 새로 끌어 쓰는 것은 12개월 시한폭탄을 스스로 심는 선택입니다.

(b') 복구 분기: 복구는 상태를 서버 밖으로 밀어내는 방향으로 설계합니다. 세션에 얹혀 있던 값은 요청 페이로드나 외부 스토어(Redis·DB)로 이전하고, 인스턴스는 어떤 요청이 오든 동일하게 응답하도록 만듭니다. 스티키 설정을 걷어 내기 전에는 라운드로빈과 스티키를 병행하는 카나리 구간을 두고, 무상태 인스턴스 비율을 5%→50%→100%로 올리며 에러율과 tools/list 캐시 히트율을 함께 관측합니다. 이상 징후가 임계선을 넘으면 라우팅 설정만 되돌려 분 단위로 복구합니다.

(c) 운영 체크리스트·품질: 배포 전 시나리오 테스트에는 '같은 논리 세션의 연속 요청이 서로 다른 인스턴스에 도달해도 결과가 같은가'를 반드시 넣습니다. 로그에는 처리 인스턴스 ID, Mcp-Method, 협상된 확장 ID·버전, 무상태 여부 플래그를 남겨 여러 인스턴스에 흩어진 요청을 하나의 대시보드에서 추적합니다. 유예 마일스톤은 캘린더로 못 박습니다. 7월 28일 스펙 확정 → 8월 확장 버전 매트릭스 동결 → 9~11월 세션 의존 코드 제거와 무상태 배포 → 이후 12개월 안에 Roots·Sampling·Logging 사용처 대체 순으로 배치하면, 각 항목의 마감이 서로 겹치지 않습니다.

(d) 개선 루프: 전환이 끝나도 확장은 스펙과 독립적으로 버저닝되므로 버전 매트릭스는 계속 움직입니다. 릴리스가 지날 때마다 협상 실패·미지원 확장 로그를 모아 매트릭스를 갱신하고, 세션 의존 코드 지점 수가 0에서 다시 늘지 않는지 회귀로 점검합니다. 무상태 배포 뒤 에러율과 캐시 히트율을 이전 값과 나란히 두고 보면, 라운드로빈 전환이 실제로 인스턴스 부하를 고르게 폈는지 숫자로 드러납니다.

한눈에 보는 적용 포인트

세션 핸드셰이크와 Mcp-Session-Id가 사라진 2026-07-28 스펙에서 살아남는 길은 상태를 서버 밖으로 밀어내는 재설계입니다. 세션 의존 코드 지점 0, 무상태 배포 후 에러율 +0.5%p 이내를 합격선으로 잡고, 스티키 설정을 걷어 낸 라운드로빈 위에서 5→50→100% 카나리로 올린 뒤, 확장 버전 매트릭스와 12개월 폐기 유예 캘린더를 체크리스트에 넣어 두면 7월 28일 확정본이 그대로 돌아갑니다.

참고 링크

The 2026-07-28 MCP Specification Release Candidate — MCP Blog