TL;DR
MCP 2.0의 무상태 전환은 도구 호출을 초기화와 분리된 세션 흐름이 아니라 단일 HTTP 요청으로 처리하도록 규정했다. 요청 헤더와 요청 바디의 _meta에 클라이언트 정보를 포함하는 설계는 서버 측 세션 저장과 라우팅 부담을 제거하여 구현과 운영 복잡도를 낮췄다. 저자는 이 변경으로 작은 로컬 모델로도 도구를 제어하기 쉬워졌고, 직접 만든 mcp-explorer CLI가 무상태 규격의 적용 가능성을 확인해주었다.
섹션별 상세
- 무상태 MCP는 기존 상태ful MCP가 요구하던 세션 초기화와 세션 ID 관리를 제거하고 단일 HTTP 요청으로 도구 호출을 처리한다. — 본문의 두 코드 블록(legacy vs stateless)과 그 차이 설명, May 21st 릴리스 후보 블로그 포스트의 before-and-after 예시. 출처
- 무상태 전환은 서버 측 세션 상태 유지와 세션 라우팅 부담을 줄여 확장성과 구현 단순화를 가져온다. — 본문에서 단일 요청 방식이 서버 상태 유지와 라우팅 문제를 제거한다고 언급한 문단.
POST /mcp HTTP/1.1
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": { },
"clientInfo": { "name": "my-app", "version": "1.0" }
}
}
POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search",
"arguments": { "q": "otters" }
}
}이 코드는 legacy(상태ful) MCP에서 초기화와 도구 호출을 별도 HTTP 요청으로 수행한 흐름을 보여준다. 첫 요청은 initialize 메서드로 세션을 생성하여 Mcp-Session-Id를 발급받고, 두번째 요청은 발급받은 세션 ID를 헤더에 담아 실제 도구 호출을 수행한다. 이 구조는 서버가 세션 상태를 유지해야 하고 동일 세션을 같은 백엔드에 라우팅해야 하는 복잡성을 유발했다.
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search",
"arguments": { "q": "otters" },
"_meta": {
"io.modelcontextprotocol/clientInfo": { "name": "my-app", "version": "1.0" }
}
}
}이 코드는 무상태 MCP가 단일 요청으로 도구 호출과 클라이언트 정보를 함께 전송하는 방식을 보여준다. HTTP 헤더에 규격 버전과 메서드, 도구 이름을 명시하고 요청 바디의 _meta에 클라이언트 정보를 포함하여 세션 상태가 불필요해진다. 클라이언트와 서버 구현 양쪽에서 세션 관리 코드를 제거할 수 있어 확장성과 운영 복잡도가 감소한다.
용어 해설
- 모델 컨텍스트 프로토콜(MCP)
- — MCP는 LLM 기반 에이전트가 외부 도구를 표준화된 방식으로 호출하도록 정의한 프로토콜이다. 요청과 도구 호출 양식을 JSON-RPC 기반 HTTP로 규정하여 에이전트와 도구 간 인터페이스를 통일한다. 규격은 도구 호출, 메타데이터 전달, 확장 가능성에 초점을 두어 에이전트 호환성을 확보한다.
- 무상태 MCP(stateless MCP)
- — 무상태 MCP는 서버가 세션 상태를 유지하지 않고 단일 HTTP 요청으로 도구 호출을 처리하는 규격이다. 초기화와 호출을 별도 요청으로 나누지 않고 요청 내부 메타에 클라이언트 정보를 포함한다. 이 방식은 서버 측 세션 관리와 라우팅 복잡도를 낮추어 확장성을 개선한다.
- Mcp-Session-Id 헤더(Mcp-Session-Id)
- — 기존 상태ful MCP에서는 세션을 식별하기 위해 Mcp-Session-Id 헤더를 발급하고 이를 기반으로 서버가 상태를 연결했다. 세션 ID는 초기화 요청에서 생성되어 이후 호출 요청의 라우팅과 상태 추적에 사용되었다. 무상태 규격에서는 이 헤더 의존을 제거하여 단일 요청 흐름을 선호한다.
기술
- HTTP
- JSON-RPC
- Python
- curl
활용 사례
- LLM 에이전트가 외부 검색·데이터베이스·서비스를 호출하는 표준화된 인터페이스로 활용
- 대규모 웹 애플리케이션에서 세션 상태 없이 도구 호출을 스케일링하는 데 사용
- 작은 로컬 모델이 감사 가능하고 제어된 도구 인터페이스로 외부 동작을 수행하도록 설계
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.