@@ -42,10 +42,9 @@ async def handle_sse(request):
4242from anyio .streams .memory import MemoryObjectReceiveStream , MemoryObjectSendStream
4343from pydantic import ValidationError
4444from sse_starlette import EventSourceResponse
45- from starlette .background import BackgroundTask
4645from starlette .requests import Request
4746from starlette .responses import Response
48- from starlette .types import Receive , Scope , Send
47+ from starlette .types import Receive , Scope , Send , Message
4948
5049import 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