From dd95fce1f018d167bb4168dfe5fce8f1bb50f3df Mon Sep 17 00:00:00 2001 From: g97iulio1609 Date: Sat, 28 Feb 2026 04:27:30 +0100 Subject: [PATCH 1/2] fix: use 'is not None' for related_request_id to handle id=0 When a JSON-RPC request uses id=0, notifications sent during tool execution were not routed to the correct request stream because the condition 'if related_request_id' evaluates to False for integer 0. This caused notifications to be sent to the GET stream instead of the POST stream for the specific request, making them invisible to clients that don't have a GET SSE connection open (e.g. stateless mode). Fix: change 'if related_request_id' to 'if related_request_id is not None' in send_notification(), consistent with similar checks elsewhere in the codebase (e.g. streamable_http.py line 984, 993, 997). Fixes #1218 --- src/mcp/shared/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp/shared/session.py b/src/mcp/shared/session.py index b617d702f..908cbd554 100644 --- a/src/mcp/shared/session.py +++ b/src/mcp/shared/session.py @@ -303,7 +303,7 @@ async def send_notification( ) session_message = SessionMessage( message=jsonrpc_notification, - metadata=ServerMessageMetadata(related_request_id=related_request_id) if related_request_id else None, + metadata=ServerMessageMetadata(related_request_id=related_request_id) if related_request_id is not None else None, ) await self._write_stream.send(session_message) From 692104d5d792cc57733da5632fc1442e3f5570c5 Mon Sep 17 00:00:00 2001 From: g97iulio1609 Date: Sat, 28 Feb 2026 14:05:58 +0100 Subject: [PATCH 2/2] style: apply ruff format --- src/mcp/shared/session.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mcp/shared/session.py b/src/mcp/shared/session.py index 908cbd554..3476cbeab 100644 --- a/src/mcp/shared/session.py +++ b/src/mcp/shared/session.py @@ -303,7 +303,9 @@ async def send_notification( ) session_message = SessionMessage( message=jsonrpc_notification, - metadata=ServerMessageMetadata(related_request_id=related_request_id) if related_request_id is not None else None, + metadata=ServerMessageMetadata(related_request_id=related_request_id) + if related_request_id is not None + else None, ) await self._write_stream.send(session_message)