fix: update response status code for invalid session ID in HTTPSessionManger #1395
+2
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changed the status code from BAD_REQUEST to NOT_FOUND and added MCP_SESSION_ID_HEADER with
Mcp-Session-Id
Motivation and Context
Current behavior of HTTP Session Manager is not align with MCP specification.
https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management
In my opinion the
else
case, in the StreamableHTTP Session Manager for stateful events, handles request with old/invalidMcp-Session-Id
after unintentional session terminate (server restart). In that case NOT_FOUND status MUST be returned, not BAD_REQUEST.How Has This Been Tested?
Locally with Cursor AI.
Currently Cursor 1.6.x does not start new session after such response, see: https://forum.cursor.com/t/mcp-client-wrong-handling-of-http-not-found-in-session-management-stateful-mcp-server/134781
Breaking Changes
Probably, depends on MCP client logic implementation.
Types of changes
Checklist
Additional context