@@ -300,12 +300,12 @@ def _create_error_response(
300300 # Return a properly formatted JSON error response
301301 error_response = JSONRPCError (
302302 jsonrpc = "2.0" ,
303- id = "server-error" , # We don't have a request ID for general errors
303+ id = None ,
304304 error = ErrorData (code = error_code , message = error_message ),
305305 )
306306
307307 return Response (
308- error_response .model_dump_json (by_alias = True , exclude_none = True ),
308+ error_response .model_dump_json (by_alias = True , exclude_unset = True ),
309309 status_code = status_code ,
310310 headers = response_headers ,
311311 )
@@ -325,7 +325,7 @@ def _create_json_response(
325325 response_headers [MCP_SESSION_ID_HEADER ] = self .mcp_session_id
326326
327327 return Response (
328- response_message .model_dump_json (by_alias = True , exclude_none = True ) if response_message else None ,
328+ response_message .model_dump_json (by_alias = True , exclude_unset = True ) if response_message else None ,
329329 status_code = status_code ,
330330 headers = response_headers ,
331331 )
@@ -338,7 +338,7 @@ def _create_event_data(self, event_message: EventMessage) -> dict[str, str]:
338338 """Create event data dictionary from an EventMessage."""
339339 event_data = {
340340 "event" : "message" ,
341- "data" : event_message .message .model_dump_json (by_alias = True , exclude_none = True ),
341+ "data" : event_message .message .model_dump_json (by_alias = True , exclude_unset = True ),
342342 }
343343
344344 # If an event ID was provided, include it
@@ -977,12 +977,11 @@ async def message_router():
977977 # Determine which request stream(s) should receive this message
978978 message = session_message .message
979979 target_request_id = None
980- # Check if this is a response
981- if isinstance (message , JSONRPCResponse | JSONRPCError ):
982- response_id = str (message .id )
983- # If this response is for an existing request stream,
984- # send it there
985- target_request_id = response_id
980+ # Check if this is a response with a known request id.
981+ # Null-id errors (e.g., parse errors) fall through to
982+ # the GET stream since they can't be correlated.
983+ if isinstance (message , JSONRPCResponse | JSONRPCError ) and message .id is not None :
984+ target_request_id = str (message .id )
986985 # Extract related_request_id from meta if it exists
987986 elif ( # pragma: no cover
988987 session_message .metadata is not None
0 commit comments