Skip to content

Commit 38f307c

Browse files
committed
clean all remaining stream ends on close
1 parent 202af49 commit 38f307c

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/mcp/server/sse.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,19 @@ async def response_wrapper(scope: Scope, receive: Receive, send: Send):
196196
tg.start_soon(response_wrapper, scope, receive, send)
197197

198198
logger.debug("Yielding read and write streams")
199-
yield (read_stream, write_stream)
199+
try:
200+
yield (read_stream, write_stream)
201+
finally:
202+
# Close all remaining stream ends
203+
for stream, name in [
204+
(read_stream, "read_stream"),
205+
(write_stream, "write_stream"),
206+
(sse_stream_reader, "sse_stream_reader"),
207+
]:
208+
try:
209+
await stream.aclose()
210+
except Exception as e:
211+
logger.debug(f"Error closing {name}: {e}")
200212

201213
async def handle_post_message(self, scope: Scope, receive: Receive, send: Send) -> None:
202214
logger.debug("Handling POST message")

0 commit comments

Comments
 (0)