Skip to content

Commit f7d33ad

Browse files
author
Hoa Lam
committed
Fix handle sse disconnect
1 parent ec62372 commit f7d33ad

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

src/mcp/server/sse.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async def handle_sse(request):
4343
from sse_starlette import EventSourceResponse
4444
from starlette.requests import Request
4545
from starlette.responses import Response
46-
from starlette.types import Receive, Scope, Send
46+
from starlette.types import Message, Receive, Scope, Send
4747

4848
import mcp.types as types
4949

@@ -120,9 +120,15 @@ async def sse_writer():
120120
}
121121
)
122122

123+
async def handle_see_disconnect(message: Message) -> None:
124+
logger.debug(f"Disconnect sse {session_id}")
125+
del self._read_stream_writers[session_id]
126+
123127
async with anyio.create_task_group() as tg:
124128
response = EventSourceResponse(
125-
content=sse_stream_reader, data_sender_callable=sse_writer
129+
content=sse_stream_reader,
130+
data_sender_callable=sse_writer,
131+
client_close_handler_callable=handle_see_disconnect, # type: ignore
126132
)
127133
logger.debug("Starting SSE response task")
128134
tg.start_soon(response, scope, receive, send)

uv.lock

Lines changed: 15 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)