Skip to content

Commit 20e6879

Browse files
committed
Apply sse fix from upstream modelcontextprotocol#703
1 parent 35777b9 commit 20e6879

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/mcp/server/sse.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ async def sse_writer():
179179

180180
async with anyio.create_task_group() as tg:
181181

182-
async def response_wrapper(scope: Scope, receive: Receive, send: Send):
182+
async def response_wrapper(scope: Scope, receive: Receive, send: Send, transport: SseServerTransport):
183183
"""
184184
The EventSourceResponse returning signals a client close / disconnect.
185185
In this case we close our side of the streams to signal the client that
@@ -190,10 +190,13 @@ async def response_wrapper(scope: Scope, receive: Receive, send: Send):
190190
)
191191
await read_stream_writer.aclose()
192192
await write_stream_reader.aclose()
193+
await read_stream.aclose()
194+
await write_stream.aclose()
195+
transport._read_stream_writers.pop(session_id)
193196
logging.debug(f"Client session disconnected {session_id}")
194197

195198
logger.debug("Starting SSE response task")
196-
tg.start_soon(response_wrapper, scope, receive, send)
199+
tg.start_soon(response_wrapper, scope, receive, send, self)
197200

198201
logger.debug("Yielding read and write streams")
199202
yield (read_stream, write_stream)

0 commit comments

Comments
 (0)