Title: fix(auth): normalize redirect URI URL subclasses by he-yufeng · Pull Request #2808 · modelcontextprotocol/python-sdk · GitHub
Open Graph Title: fix(auth): normalize redirect URI URL subclasses by he-yufeng · Pull Request #2808 · modelcontextprotocol/python-sdk
X Title: fix(auth): normalize redirect URI URL subclasses by he-yufeng · Pull Request #2808 · modelcontextprotocol/python-sdk
Description: Summary Fixes #2687. OAuthClientInformationFull.redirect_uris is declared as list[AnyUrl], but Pydantic v2 preserves already-validated URL subclasses such as AnyHttpUrl. That makes a stored AnyHttpUrl("https://...") fail membership checks against an incoming AnyUrl("https://..."), even when the URL text is identical. This normalizes URL subclass instances back through strings at the model boundary, so redirect URI validation compares the declared AnyUrl values rather than the wrapper subclass type. Validation uv run pytest tests/shared/test_auth.py -q uv run ruff check src/mcp/shared/auth.py tests/shared/test_auth.py uv run ruff format --check src/mcp/shared/auth.py tests/shared/test_auth.py python -m py_compile src/mcp/shared/auth.py tests/shared/test_auth.py git diff --check
Open Graph Description: Summary Fixes #2687. OAuthClientInformationFull.redirect_uris is declared as list[AnyUrl], but Pydantic v2 preserves already-validated URL subclasses such as AnyHttpUrl. That makes a stored AnyHttp...
X Description: Summary Fixes #2687. OAuthClientInformationFull.redirect_uris is declared as list[AnyUrl], but Pydantic v2 preserves already-validated URL subclasses such as AnyHttpUrl. That makes a stored AnyHttp...
Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/2808
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:b2c1dd14-d303-fb20-b748-8e47f409f008 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | BCF4:22B385:19CD7C5:22578D3:6A5AD56A |
| html-safe-nonce | 2f16d21f81a1f33329ad1cc4da8fada27e26e1154b062f6707140ca433e1237f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQ0Y0OjIyQjM4NToxOUNEN0M1OjIyNTc4RDM6NkE1QUQ1NkEiLCJ2aXNpdG9yX2lkIjoiNTQ0NTQwNzY3Mjc5ODcyOTU3OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 084ad929763c4cc75402be3fd87c54691a31f7a90887b1356aebd4023e1706ee |
| hovercard-subject-tag | pull_request:3817926240 |
| 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/2808/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 | Summary Fixes #2687. OAuthClientInformationFull.redirect_uris is declared as list[AnyUrl], but Pydantic v2 preserves already-validated URL subclasses such as AnyHttpUrl. That makes a stored AnyHttp... |
| 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