핵심 포인트: MCP 이 프로토콜은 "스트리밍 HTTP" 전송 체계를 도입함으로써 완전한 상태 비저장성을 달성하고 통신을 간소화하여 향후 더 광범위한 애플리케이션을 위한 토대를 마련합니다.

메시지 채널 프로토콜(MCP)에 대한 주요 기술 개선안이 승인되어 이 새로운 프로토콜의 더 넓은 미래를 예고하고 있습니다. 이 업데이트의 핵심은 MCP가 데이터를 전송하는 방식에 혁신을 가져와 완전히 상태 비저장 방식으로 전환하고 일반 HTTP 프로토콜로 통신을 단순화하는 것입니다.
배경: HTTP+SSE의 한계
이전에는 MCP 프로토콜이 HTTP와 SSE(서버 전송 이벤트)를 사용하여 데이터를 전송했습니다. 이 방식에는 몇 가지 한계가 있었습니다:
- 연결 해제 및 재연결은 지원되지 않습니다.
- 서버는 안정성을 보장하기 위해 긴 연결을 유지해야 합니다.
- 서버 메시지는 SSE를 통해서만 전송할 수 있습니다.
혁신적인 솔루션: 스트리밍 HTTP
이러한 문제를 해결하기 위해 커뮤니티에서는 "스트리밍 HTTP" 전송 체계를 제안했습니다. 이 체계에는 다음과 같은 주요 조정 사항이 포함되어 있습니다:
- sse 인터페이스 제거: 모든 클라이언트-서버 간 메시지는 /message(또는 이와 유사한) 인터페이스를 통해 균일하게 전송됩니다.
- SSE로 요청 에스컬레이션: 서버는 실시간 푸시 알림 또는 데이터를 위해 클라이언트 요청을 SSE 연결로 에스컬레이션할 수 있습니다.
- 세션 ID 관리: 클라이언트는 HTTP 요청 헤더에 세션 ID를 제공하며, 서버는 이를 선택적으로 사용하여 세션을 식별할 수 있습니다.
- SSE 스트림 시작: 클라이언트는 /메시지 인터페이스에 빈 GET 요청을 전송하여 SSE 스트림을 설정할 수 있습니다.
이러한 개선으로 MCP 서버는 완전히 상태 저장소가 없어져 지속적인 연결이 필요하지 않으며 서버 복잡성과 리소스 소비를 크게 줄일 수 있습니다. 동시에 순수 HTTP 프로토콜을 사용함으로써 MCP의 호환성이 향상되어 기존 네트워크 인프라와 미들웨어에 더 잘 맞출 수 있습니다.
긍정적인 커뮤니티 반응
이 개선 제안은 널리 환영받았으며 MCP 커뮤니티로부터 긍정적인 피드백을 받았습니다. shopify, Pydantic, Cloudflare, LangChain, Vercel 및 인류학 팀과 다른 많은 조직과 개인이 이에 기여했습니다.
무국적자의 다양한 혜택
무국적은 이번 MCP 프로토콜 업데이트의 가장 큰 특징이며, MCP에 여러 가지 이점을 제공합니다:
- 배포 및 유지 관리 간소화: 세션 데이터 지속성 및 동기화를 처리할 필요가 없으므로 서버 배포 및 확장이 더 쉬워집니다.
- 시스템 안정성 향상: 단일 서버 장애가 시스템의 전체 작동에 영향을 미치지 않아 고가용성을 달성하기가 더 쉽습니다.
- 리소스 소비 감소: 긴 연결 및 세션 상태를 유지할 필요가 없으므로 서버 리소스 사용량과 비용이 줄어듭니다.
애플리케이션 시나리오 전망
상태 비저장 MCP의 구현은 많은 애플리케이션 시나리오에 새로운 가능성을 열어줍니다:
- 상태 비저장 도구 서버: 상태 관리 없이 언어 모델링 도구 기능만 제공하도록 완전히 상태 비저장 MCP 서버를 구축하여 도구 호출 프로세스를 간소화할 수 있습니다.
- 스트리밍 응답을 지원하는 상태 비저장 서버: 상태 비저장 서버도 SSE를 활용하여 도구 실행 중에 진행률 정보를 실시간으로 푸시하는 등 스트리밍 응답을 제공할 수 있습니다.
왜 웹소켓을 통해 HTTP를 스트리밍해야 할까요?
전송 방식 선택 시 WebSocket도 고려되었지만, 궁극적으로 커뮤니티는 다음과 같은 고려 사항을 바탕으로 "스트리밍 HTTP"를 선택했습니다:
- RPC 시나리오의 오버헤드: 간단한 RPC(원격 프로시저 호출) 시나리오의 경우 WebSocket을 강제로 사용하면 불필요한 운영 및 네트워크 부담이 발생합니다.
- 브라우저 호환성: WebSocket은 브라우저 환경에서의 HTTP 요청 헤더 설정 및 타사 라이브러리 구현 측면에서 SSE만큼 유연하지 않습니다.
- 프로토콜 업그레이드 복잡성: WebSocket은 GET 요청 업그레이드만 지원하며, POST 요청 업그레이드 프로세스는 복잡하고 지연 시간이 증가합니다.
- 간소화된 프로토콜 사양: MCP 프로토콜 사양은 호환성 문제를 피하기 위해 공식 전송 프로토콜의 종류를 제한하는 경향이 있습니다.
안전에 대한 탐구
무국적 상태는 많은 이점을 제공하지만, 특히 세션 ID 관리 및 인증과 관련하여 보안에 대한 논의도 활발해집니다.
일부 개발자들은 서버가 Mcp-Session-Id 요청 헤더를 사용하여 세션을 관리하는 경우, 다른 인증 환경에서 세션 ID가 오용되는 것을 방지하기 위해 세션 ID를 인증 환경에 바인딩해야 한다고 지적했습니다. 즉, 세션 ID는 전 세계적으로 공통적이지 않고 특정 사용자 또는 클라이언트 세션과 연관되어야 합니다.
미니멀한 서버를 원하는 개발자에게는 복잡한 인증 메커니즘이 적용되지 않을 수 있습니다. 상태 저장 모드에서는 HTTP 요청 자체가 세션 경계로 간주될 수 있습니다. 그러나 상태 비저장 모델에서는 HTTP 전용 쿠키 없이 세션을 안전하게 관리하는 방법에 대한 우려가 여전히 존재합니다.
일부 개발자는 클라이언트 세션을 관리하기 위해 HTTP 전용 쿠키를 도입하고 각 클라이언트 세션에 고유 ID를 부여한 다음 그 아래에 여러 MCP 세션 ID를 관리하여 보안과 유연성을 고려한 계층적 세션 관리를 달성할 것을 제안합니다.
요약 및 전망
MCP 프로토콜이 무국적자로 진화하는 것은 실용성과 사용 편의성을 향한 중요한 단계입니다. "스트리밍 HTTP" 체계의 채택은 MCP 배포의 문턱을 낮추고 더 많은 개발자와 애플리케이션 시나리오를 끌어들일 것으로 기대됩니다. 아직 보안에 대한 논의의 여지가 남아있지만, 커뮤니티가 지속적으로 발전함에 따라 MCP 프로토콜의 미래는 기대할 만하다고 생각합니다.
관련 제안
[RFC] HTTP+SSE를 새로운 "Streamable HTTP" 전송으로 대체 #206 제안 링크: [RFC] HTTP+SSE를 새로운 "Streamable HTTP" 전송으로 대체 #206© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...