From 666293979c58155a8c92e3797c24b79e9c8c7321 Mon Sep 17 00:00:00 2001 From: RameshReddy Adutla Date: Wed, 4 Mar 2026 21:18:53 +0000 Subject: [PATCH 1/2] Add warning log when rejecting request with unknown/expired session ID The else branch in _handle_stateful_request() silently returns 404 when a request has an unknown or expired session ID. The other two branches (existing session, new session) both log at debug/info level. Add a logger.warning() call so operators can diagnose why client connections are being rejected, e.g. after a server restart when clients send stale session IDs. Fixes modelcontextprotocol#2204 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/mcp/server/streamable_http_manager.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index 50bcd5e79..50551a30e 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -272,6 +272,10 @@ async def run_server(*, task_status: TaskStatus[None] = anyio.TASK_STATUS_IGNORE # Unknown or expired session ID - return 404 per MCP spec # TODO: Align error code once spec clarifies # See: https://github.com/modelcontextprotocol/python-sdk/issues/1821 + logger.warning( + f"Rejected request with unknown or expired session ID: " + f"{request_mcp_session_id}" + ) error_response = JSONRPCError( jsonrpc="2.0", id=None, From 6f99c3d05b3fbbca518178b69845bce55e69c720 Mon Sep 17 00:00:00 2001 From: RameshReddy Adutla Date: Wed, 4 Mar 2026 21:26:24 +0000 Subject: [PATCH 2/2] Fix ruff format: single-line warning log message Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/mcp/server/streamable_http_manager.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index 50551a30e..d822f791e 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -272,10 +272,7 @@ async def run_server(*, task_status: TaskStatus[None] = anyio.TASK_STATUS_IGNORE # Unknown or expired session ID - return 404 per MCP spec # TODO: Align error code once spec clarifies # See: https://github.com/modelcontextprotocol/python-sdk/issues/1821 - logger.warning( - f"Rejected request with unknown or expired session ID: " - f"{request_mcp_session_id}" - ) + logger.warning(f"Rejected request with unknown or expired session ID: {request_mcp_session_id}") error_response = JSONRPCError( jsonrpc="2.0", id=None,