개요
Server-Sent Events(SSE)는 웹 서버가 하나의 장기 실행 HTTP 연결을 통해 클라이언트에 업데이트를 전송할 수 있는 표준 방식을 제공합니다. MCP의 맥락에서 SSE는 원격 서버가 데이터(예: tool 응답)를 실시간으로 CrewAI 애플리케이션에 스트리밍하는 데 사용됩니다.주요 개념
- 원격 서버: SSE는 원격에 호스팅된 MCP 서버에 적합합니다.
- 단방향 스트림: 일반적으로 SSE는 서버에서 클라이언트로의 단방향 통신 채널입니다.
MCPServerAdapter구성: SSE의 경우, 서버의 URL을 제공하고 전송 유형을 지정해야 합니다.
SSE를 통한 연결
SSE 기반 MCP 서버에 연결하려면 연결 수명 주기를 관리하는 두 가지 주요 접근 방식을 사용할 수 있습니다.1. 완전 관리형 연결(권장)
Python 컨텍스트 매니저(with 문)를 사용하는 것이 권장되는 접근 방식입니다. 이 방법은 SSE MCP 서버에 대한 연결의 생성과 종료를 자동으로 처리합니다.
"http://localhost:8000/sse"를 실제 SSE MCP 서버의 URL로 교체하십시오.2. 수동 연결 라이프사이클
더 세밀한 제어가 필요한 경우,MCPServerAdapter의 연결 라이프사이클을 수동으로 관리할 수 있습니다.
연결이 종료되고 리소스가 해제되도록 반드시
mcp_server_adapter.stop()을 호출해야 합니다. try...finally 블록을 사용하는 것을 강력히 권장합니다.SSE를 위한 보안 고려사항
이 위험을 완화하려면:- MCP 서버 구현에서는 들어오는 SSE 연결의
Origin헤더를 검증해야 합니다. - 개발 환경에서 로컬 SSE MCP 서버를 실행할 때에는 모든 네트워크 인터페이스(
0.0.0.0)가 아닌,localhost(127.0.0.1)에만 바인딩해야 합니다. - 민감한 도구나 데이터를 노출하는 SSE 연결에는 적절한 인증을 구현해야 합니다.
