fix: update response status code for invalid session ID in HTTPSessionManger#1395
Draft
Bumshakalaka wants to merge 1 commit intomodelcontextprotocol:mainfrom
Draft
fix: update response status code for invalid session ID in HTTPSessionManger#1395Bumshakalaka wants to merge 1 commit intomodelcontextprotocol:mainfrom
Bumshakalaka wants to merge 1 commit intomodelcontextprotocol:mainfrom
Conversation
…HTTPSessionManager 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
Contributor
|
I believe this is a legitimate improvement to spec compliance but represents a breaking change - I'm marking this for a future v2 and converting this to a draft for now to remove it from the immediate review queue. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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-IdMotivation 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
elsecase, in the StreamableHTTP Session Manager for stateful events, handles request with old/invalidMcp-Session-Idafter 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