Title: fix: preserve OAuth authorization endpoint query params by he-yufeng · Pull Request #2787 · modelcontextprotocol/python-sdk · GitHub
Open Graph Title: fix: preserve OAuth authorization endpoint query params by he-yufeng · Pull Request #2787 · modelcontextprotocol/python-sdk
X Title: fix: preserve OAuth authorization endpoint query params by he-yufeng · Pull Request #2787 · modelcontextprotocol/python-sdk
Description: Fixes #2776. Summary The OAuth authorization URL builder always appended SDK parameters with a literal ?: f"{auth_endpoint}?{urlencode(auth_params)}" That breaks authorization servers whose metadata already includes endpoint-level query parameters. Salesforce sandbox auth endpoints are one example: https://test.salesforce.com/services/oauth2/authorize?prompt=select_account The generated URL became ...?prompt=select_account?response_type=..., so the OAuth parameters were folded into the existing prompt value instead of being sent as query parameters. This change parses the endpoint query first, preserves existing parameters, and appends the SDK-generated OAuth parameters with normal form encoding. Validation PYTHONPATH=src python -m pytest tests/client/test_auth.py -q -k authorization_endpoint_preserves_existing_query PYTHONPATH=src python -m pytest tests/client/test_auth.py -q python -m py_compile src/mcp/client/auth/oauth2.py tests/client/test_auth.py python -m ruff check src/mcp/client/auth/oauth2.py tests/client/test_auth.py git diff --check upstream/main..HEAD I also tried python -m pyright src/mcp/client/auth/oauth2.py tests/client/test_auth.py, but the local run failed on pre-existing environment/type-resolution issues in tests/client/test_auth.py before isolating this patch.
Open Graph Description: Fixes #2776. Summary The OAuth authorization URL builder always appended SDK parameters with a literal ?: f"{auth_endpoint}?{urlencode(auth_params)}" That breaks authorization servers who...
X Description: Fixes #2776. Summary The OAuth authorization URL builder always appended SDK parameters with a literal ?: f"{auth_endpoint}?{urlencode(auth_params)}" That breaks authorization ser...
Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/2787
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:2c3261ff-8ebd-2604-4df3-1d5ce30e3da0 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | E5AA:1C23F8:37763A:4AA117:6A5CBF6D |
| html-safe-nonce | ee65a4313969bad5d016e76ea0c713d0116ac3e53dec7ce762fd0ed0035a0d78 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNUFBOjFDMjNGODozNzc2M0E6NEFBMTE3OjZBNUNCRjZEIiwidmlzaXRvcl9pZCI6IjE5ODM4NjgyNjEwOTMwNDY4NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | e3d78536a364254b9b0bb60a4535c9f7ddb82cd89f8139403506a732a370f900 |
| hovercard-subject-tag | pull_request:3811618124 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/modelcontextprotocol/python-sdk/pull/2787/files |
| twitter:image | https://avatars.githubusercontent.com/u/40085740?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/40085740?s=400&v=4 |
| og:image:alt | Fixes #2776. Summary The OAuth authorization URL builder always appended SDK parameters with a literal ?: f"{auth_endpoint}?{urlencode(auth_params)}" That breaks authorization servers who... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/modelcontextprotocol/python-sdk git https://github.com/modelcontextprotocol/python-sdk.git |
| octolytics-dimension-user_id | 182288589 |
| octolytics-dimension-user_login | modelcontextprotocol |
| octolytics-dimension-repository_id | 862584018 |
| octolytics-dimension-repository_nwo | modelcontextprotocol/python-sdk |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 862584018 |
| octolytics-dimension-repository_network_root_nwo | modelcontextprotocol/python-sdk |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width