Handle SSE Disconnects Properly (#612)

This commit is contained in:
Akash D
2025-05-02 09:32:46 -07:00
committed by GitHub
parent 5d8eaf77be
commit 83968b5b2f
7 changed files with 38 additions and 11 deletions

View File

@@ -10,6 +10,7 @@ import uvicorn
from pydantic import AnyUrl
from starlette.applications import Starlette
from starlette.requests import Request
from starlette.responses import Response
from starlette.routing import Mount, Route
from mcp.client.session import ClientSession
@@ -83,13 +84,14 @@ def make_server_app() -> Starlette:
sse = SseServerTransport("/messages/")
server = ServerTest()
async def handle_sse(request: Request) -> None:
async def handle_sse(request: Request) -> Response:
async with sse.connect_sse(
request.scope, request.receive, request._send
) as streams:
await server.run(
streams[0], streams[1], server.create_initialization_options()
)
return Response()
app = Starlette(
routes=[