MCP의 스테이트리스 전환

MCP(Model Context Protocol) 스펙이 2026-07-28 개정판에서 initialize 핸드셰이크와 연결별 세션을 없애고 완전한 스테이트리스 프로토콜로 바뀌었다. 기준 시점: 2026-07-28

무슨 일인가

MCP 공식 스펙 저장소의 "Key Changes" 문서에 따르면, 2026-07-28 개정판(이전 개정판은 2025-11-25)은 메이저 변경 9건을 담았다. 가장 큰 축은 상태(state)를 프로토콜 레벨에서 완전히 제거한 것이다.

같은 문서는 Roots, Sampling, Logging 세 기능과 HTTP+SSE 전송을 공식적으로 "Deprecated" 상태로 분류했다고도 밝혔다.

왜 중요한가

세션을 없앴다는 것은 MCP 서버를 운영하는 쪽에서 더 이상 "이 클라이언트가 어느 서버 인스턴스에 붙어 있는지"를 신경 쓰지 않아도 된다는 뜻이다. 로드 밸런서 뒤에 서버를 여러 대 띄워도 요청마다 아무 인스턴스로 보내면 되고, 스케일 아웃이 훨씬 단순해진다. 반대로 지금까지 세션 상태에 의존해 구현된 MCP 서버·클라이언트는 이번 개정에서 구조를 다시 짜야 한다.

Sampling(서버가 클라이언트의 LLM을 빌려 쓰는 기능)과 Roots(파일 루트 공유)가 Deprecated로 분류된 것도 눈에 띈다. 스펙 자체가 "서버가 클라이언트 쪽 LLM 호출을 대신 요청하는" 설계보다 "툴 파라미터나 리소스 URI로 필요한 걸 직접 넘기는" 설계를 권장하는 방향으로 움직이고 있다는 신호로 읽힌다.

짚고 갈 개념

내 생각

MCP가 나온 지 1년 조금 넘은 시점에 세션·핸드셰이크 같은 "전형적인 연결 지향 프로토콜" 요소를 걷어내고 스테이트리스로 간 건, 실제 운영 환경에서 MCP 서버를 여러 대 띄워 돌려본 피드백이 쌓였기 때문으로 보인다. 다만 호출 간 상태가 필요한 경우 "서버가 발급한 핸들을 툴 인자로 주고받으라"는 건 결국 상태 관리를 프로토콜 밖, 즉 서버 구현 쪽으로 떠넘긴 것이어서, 스펙은 가벼워지지만 서버 구현의 복잡도는 그대로거나 오히려 늘어날 수 있을 것으로 보인다.

출처

CSLOG에서 보기