AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

MCP v2 – 세션 없는 HTTP 서버로 바뀐 Model Context Protocol

MCP v2는 2026-07-28 Model Context Protocol 스펙을 가리키는 실무적 표현이다. 핵심 변화는 MCP 서버가 더 이상 프로토콜 세션과 열린 스트림에 의존하지 않아도 된다는 점이다. 서버는 ordinary HTTP 요청처럼 도구 호출을 받고 결과를 반환할 수 있고, Cloudflare Workers 같은 request-scoped 서버리스 환경에서도 단순하게 배포할 수 있다.

왜 큰 변화인가

초기 리모트 MCP는 로컬 stdio 전송의 세션 모델을 웹으로 옮긴 형태에 가까웠다. 서버는 initialize 요청 뒤 Mcp-Session-Id를 발급하고, 이후 요청을 같은 세션 상태와 연결해야 했다. 운영자는 sticky session, 열린 stream, message replay, 배포 중 세션 drain 같은 문제를 처리해야 했다.

2026-07-28 스펙은 이 부담을 core request path에서 제거한다. 각 요청이 필요한 프로토콜 버전, 클라이언트 정체성, capability 정보를 직접 담는다. 서버 기능을 미리 살펴보고 싶으면 server/discover를 호출할 수 있지만 필수 handshake는 아니다.

주요 변경점

변경의미
세션 없는 호출Mcp-Session-Id와 필수 initialize 흐름 제거
MRTRelicitation을 열린 stream 대신 input_required 반환과 재시도로 처리
HTTP 헤더 표준화Mcp-Method, Mcp-Name으로 gateway·WAF·rate limit이 JSON body 파싱 없이 판단
캐시 힌트ttlMs, cacheScope로 tools/prompts/resources 목록 캐시 가능
인증 정리CIMD 우선, DCR은 deprecated, RFC 9207 issuer 확인과 RFC 8707 resource audience 적용
기능 수명주기Active, Deprecated, Removed 상태와 최소 12개월 deprecation window 도입

서버 구현이 어떻게 단순해지나

기존에는 MCP 자체 때문에 Durable Objects 같은 상태 저장 primitive가 필요했다. 이제 앱 도메인 상태가 필요한 경우에만 Durable Objects를 쓰고, 단순 도구 서버는 Workers handler 하나로 충분할 수 있다.

import { McpServer } from "@modelcontextprotocol/server";
import { createMcpHandler } from "agents/mcp/server";

function createServer() {
  const server = new McpServer({ name: "hello-server", version: "1.0.0" });
  server.registerTool("hello", { description: "Return a greeting" }, async () => ({
    content: [{ type: "text", text: "Hello, World!" }],
  }));
  return server;
}

export default {
  fetch(request, env, ctx) {
    return createMcpHandler(createServer)(request, env, ctx);
  },
};

실제 구현에서는 도구 입력 스키마, OAuth provider, logging, tool-level rate limit을 붙여야 한다. 다만 프로토콜 세션 저장소가 기본 요구사항에서 빠졌다는 점이 핵심이다.

마이그레이션할 때 볼 점

  • tools, prompts, resources 중심 서버는 SDK 업그레이드와 stateless handler 전환만으로 대부분 옮길 수 있다.
  • legacy protocol session, server-to-client request, standalone stream에 의존한 서버는 stateless route를 병행 운영하면서 기능을 단계적으로 옮겨야 한다.
  • elicitation은 열린 stream 기반 구현에서 input_required 결과와 사용자 입력 재시도 흐름으로 다시 설계해야 한다.
  • gateway·보안팀은 Mcp-Method, Mcp-Name 헤더 기준으로 method별 정책과 관측성을 붙일 수 있다.

누가 관심 가져야 하나

  • SaaS API 팀: MCP 서버를 일반 HTTP workload처럼 운영하고 싶은 팀
  • 서버리스 플랫폼 사용자: Worker, Function, edge runtime에 MCP를 올리고 싶은 개발자
  • 보안·플랫폼 팀: MCP tool 호출을 gateway, WAF, OAuth audience, rate limit 정책과 연결해야 하는 조직
  • 기존 MCP 서버 운영자: sessionful 구현을 유지할지 stateless 스펙으로 전환할지 판단해야 하는 팀

관련 문서

  • mcp — 에이전트와 외부 시스템을 연결하는 표준 프로토콜
  • cloudflare-agents — Cloudflare Workers와 Durable Objects 기반 에이전트 런타임
  • stateful-stateless-agent-design — 확장성과 연속성 사이의 에이전트 상태 설계
  • webmcp — 웹페이지가 브라우저 에이전트에 MCP 도구를 노출하는 방식

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)