Skip to content

Commit 9cd4572

Browse files
committed
use client_close_handler_callable for connect_sse
1 parent 1917066 commit 9cd4572

File tree

3 files changed

+674
-674
lines changed

3 files changed

+674
-674
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies = [
2727
"httpx-sse>=0.4",
2828
"pydantic>=2.7.2,<3.0.0",
2929
"starlette>=0.27",
30-
"sse-starlette>=1.6.1",
30+
"sse-starlette>=2.3.0",
3131
"pydantic-settings>=2.5.2",
3232
"uvicorn>=0.23.1; sys_platform != 'emscripten'",
3333
]

src/mcp/server/sse.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ async def handle_sse(request):
4242
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
4343
from pydantic import ValidationError
4444
from sse_starlette import EventSourceResponse
45-
from starlette.background import BackgroundTask
4645
from starlette.requests import Request
4746
from starlette.responses import Response
48-
from starlette.types import Receive, Scope, Send
47+
from starlette.types import Receive, Scope, Send, Message
4948

5049
import mcp.types as types
5150

@@ -128,7 +127,7 @@ async def sse_writer():
128127
}
129128
)
130129

131-
async def _remove_stream_writer() -> None:
130+
async def client_close_handler(message: Message) -> None:
132131
await read_stream_writer.aclose()
133132
await write_stream_reader.aclose()
134133
del self._read_stream_writers[session_id]
@@ -140,7 +139,7 @@ async def _remove_stream_writer() -> None:
140139
response = EventSourceResponse(
141140
content=sse_stream_reader,
142141
data_sender_callable=sse_writer,
143-
background=BackgroundTask(_remove_stream_writer),
142+
client_close_handler_callable=client_close_handler,
144143
)
145144
logger.debug("Starting SSE response task")
146145
tg.start_soon(response, scope, receive, send)

0 commit comments

Comments
 (0)