Fix OAuth flow breaking MCP session initialization#490
Merged
trungutt merged 1 commit intodocker:mainfrom Oct 15, 2025
Merged
Conversation
When remote MCP servers require OAuth authentication, the OAuth flow was being triggered during the MCP session initialization handshake. This caused the session state to become corrupted because: 1. client.Connect() starts the MCP protocol handshake 2. Initial HTTP request returns 401 Unauthorized 3. oauthTransport intercepts and runs the full OAuth flow 4. After OAuth succeeds, the retry finds the MCP session in a broken state 5. Subsequent requests fail with "400 Bad Request: broken session" This fix adds retry logic that detects "broken session" errors during initialization and automatically retries once after OAuth completes, ensuring: - OAuth completes at the HTTP transport layer first - MCP session initialization happens with authentication already in place - No permanent session corruption from the OAuth interruption The retry is limited to OAuth-related "broken session" errors to avoid masking other legitimate connection failures. Fixes the issue where OAuth-protected MCP servers (like mcp.prisma.io) would fail to initialize despite successful user authentication.
Member
|
#485 should be updated. Or we can close it and open a new issue only for prisma |
Contributor
Author
krissetto
approved these changes
Oct 15, 2025
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.
Fixed #485.
When remote MCP servers require OAuth authentication AND the OAuth flow is triggered during the MCP session initialization handshake. This caused the session state to become corrupted because:
This fix adds retry logic that detects "broken session" errors during initialization and automatically retries once after OAuth completes, ensuring:
The retry is limited to OAuth-related "broken session" errors to avoid masking other legitimate connection failures.
Fixes the issue where OAuth-protected MCP servers (like mcp.prisma.io) would fail to initialize despite successful user authentication.
Note: An attempt to fix the same issue was #486, but that fix broken other MCP server like atlassian.