From 52c63c53e2232c8126883ed27dd2736286c10636 Mon Sep 17 00:00:00 2001 From: BUMshakalaka Date: Wed, 24 Sep 2025 15:02:37 +0200 Subject: [PATCH] fix: update response status code for invalid session ID in StreamableHTTPSessionManager Changed the status code from BAD_REQUEST to NOT_FOUND and added MCP_SESSION_ID_HEADER to the response headers if available. This behaviour is align with MCP spec https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management --- src/mcp/server/streamable_http_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index 53d542d21..46de07cbc 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -274,6 +274,7 @@ async def run_server(*, task_status: TaskStatus[None] = anyio.TASK_STATUS_IGNORE # Invalid session ID response = Response( "Bad Request: No valid session ID provided", - status_code=HTTPStatus.BAD_REQUEST, + status_code=HTTPStatus.NOT_FOUND, + headers={MCP_SESSION_ID_HEADER: request_mcp_session_id} if request_mcp_session_id else {}, ) await response(scope, receive, send)