도구

스테이트리스 MCP

Stateless MCP

2026-07-28 명세에 들어간 MCP 구조로, 세션 없이 프로토콜 버전·클라이언트 정보·지원 기능을 요청마다 담아 보내서 요청 하나만 봐도 처리할 수 있다. 초기화 핸드셰이크로 세션을 먼저 만들던 이전 방식과 달리, 원격 MCP 서버를 일반 로드밸런서나 서버리스에 올려 여러 대로 늘릴 때 특히 도움이 된다.

항목이전 (스테이트풀)이제 (스테이트리스)
시작 절차initialize 핸드셰이크없음, 바로 요청
세션 식별Mcp-Session-Id 헤더없음
로드밸런서스티키 라우팅 필요일반 라운드로빈
서버 재시작열린 세션이 모두 끊김다른 인스턴스가 받음

MCP 서버가 평범한 HTTP 서비스가 된다

예전에는 세션이 서버 프로세스 하나에 묶여 있었다. 그래서 같은 클라이언트를 늘 같은 인스턴스로 보내거나, 공유 세션 저장소를 따로 운영해야 했다. 이제는 어느 인스턴스든 어떤 요청이든 처리할 수 있어서, 보통 웹 앱처럼 배포하고 수평으로 늘리면 된다.

도구·프롬프트·리소스만 제공하는 서버라면 Cloudflare Worker나 Cloud Run 같은 서버리스에 바로 올릴 수 있다. 붙잡고 있을 연결이 없으니 쓰지 않을 때는 인스턴스가 0까지 줄어 비용이 준다. 클라이언트도 도구 정의를 안전하게 캐시할 수 있다.

없어진 건 프로토콜 세션, 앱 상태는 그대로

스테이트리스라고 해서 서버가 아무것도 기억하지 못하는 건 아니다. 열린 브라우저 탭, 커밋 전 DB 트랜잭션, 장바구니처럼 도구가 다루는 상태는 계속 남아 있을 수 있다. 바뀐 건 클라이언트가 그 상태를 가리키는 방식이다. 숨은 세션에 기대지 않고 요청에 직접 적어 보내기 때문에, 어느 인스턴스가 받아도 해당 자원을 찾아갈 수 있다.

상황처리 방법
조회·검색 같은 단순 도구상태 없이 요청만 처리
브라우저 조작, 트랜잭션자원 식별자를 요청에 담아 보냄
여러 요청이 상태를 함께 조율Durable Objects 같은 별도 저장소 사용

기존 서버는 한 번 손봐야 한다

핸드셰이크와 세션 헤더가 없어졌으니 하위 호환이 깨지는 변경이다. TypeScript·Python·Go·C# 공식 SDK가 새 명세에 맞춰 바뀌었으므로, SDK를 올리고 세션에 기대던 코드를 걷어내면 된다. 옛 클라이언트가 아직 남아 있으면 두 가지 방법이 있다. 같은 경로에서 새 클라이언트와 옛 클라이언트를 함께 받거나, 두 버전을 모두 지원하는 MCP 게이트웨이를 앞에 둬서 전환 기간을 넘기면 된다.

원격 MCP 서버를 싸고 크게 돌릴 때 쓴다

가장 흔한 건 원격 도구 서버를 보통 웹 서비스처럼 배포하는 방식이다. 로컬에서 띄우던 MCP 서버를 인터넷에 올려 여러 사람과 여러 에이전트가 함께 쓰게 할 때, 세션 관리 부담 없이 늘리고 줄일 수 있다.

어디서어떻게 쓰나
서버리스 도구 서버조회·검색 도구를 Worker나 Cloud Run에 올리고, 요청이 없을 때는 0대로 줄여 비용을 아낀다
팀·사내 공용 MCP 서버일반 로드밸런서 뒤에 여러 대를 두고 라운드로빈으로 나눠 받는다
브라우저·DB 같은 상태 있는 도구탭이나 트랜잭션 식별자를 요청에 담아, 어느 인스턴스가 받아도 이어서 처리한다
버전 전환 기간게이트웨이를 앞에 두고 옛 클라이언트와 새 클라이언트를 함께 받는다
#MCP#Stateless#Serverless#Scaling
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-10-20