Uh oh!
There was an error while loading. Please reload this page.
fix: handle OAuth error responses returned with HTTP 200 status - #1343
Conversation
Some OAuth servers (e.g., GitHub) return error responses with HTTP 200 status instead of 4xx. The SDK now checks for an `error` field in the JSON response before attempting to parse it as tokens. This provides users with meaningful error messages like: "The client_id and/or client_secret passed are incorrect." Instead of confusing Zod validation errors about missing access_token. Fixesmodelcontextprotocol#1342 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 4055465 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
@modelcontextprotocol/client@modelcontextprotocol/server@modelcontextprotocol/express@modelcontextprotocol/hono@modelcontextprotocol/nodecommit: |
- Fix TypeScript error by properly typing json as unknown - Add changeset for the patch release Fixesmodelcontextprotocol#1342 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
pcarleton
commented
Jan 8, 2026
Thanks! One small suggestion - check for error only if token parsing fails, keeps the happy path clean. Pushing a commit with this approach. |
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Paul Carleton <paulcarletonjr@gmail.com>
christso
commented
Jan 19, 2026
@pcarleton It's waiting for review for a while. Should we still merge this given it won't make any difference unless GitHub stops returning HTTP 200 for what should be an error? |
59df40b to
9fe43c2Compare
felixweinberger
left a comment
There was a problem hiding this comment.
Thanks for this LGTM!
Pushed a small regression test for completeness on top of this branch.
Dismissing review as comments have been addressed afaict
9fe43c2 to
1213c01CompareAdds test case for issue modelcontextprotocol#1342 where OAuth servers like GitHub return error responses with HTTP 200 instead of 4xx. Ensures the fix properly surfaces the OAuth error message instead of a confusing Zod validation error.
1213c01 to
d6c3f65CompareUh oh!
There was an error while loading. Please reload this page.
Summary
Some OAuth servers (e.g., GitHub) return error responses with HTTP 200 status instead of 4xx. This PR adds a check for the
errorfield in the JSON response before attempting to parse it as tokens.Problem
When GitHub's OAuth token endpoint returns an error like:
{ "error": "incorrect_client_credentials", "error_description": "The client_id and/or client_secret passed are incorrect." }The SDK's
executeTokenRequest()only checksresponse.ok(which istruefor HTTP 200), then tries to parse the response asOAuthTokensSchema, resulting in a confusing Zod validation error:Solution
Check for the
errorfield in the JSON response before attempting to parse as tokens. This surfaces the actual OAuth error message to users:Test plan
Closes#1342
🤖 Generated with Claude Code