Title: Send `application_type` during Dynamic Client Registration (SEP-837) by Kludex · Pull Request #2930 · modelcontextprotocol/python-sdk · GitHub
Open Graph Title: Send `application_type` during Dynamic Client Registration (SEP-837) by Kludex · Pull Request #2930 · modelcontextprotocol/python-sdk
X Title: Send `application_type` during Dynamic Client Registration (SEP-837) by Kludex · Pull Request #2930 · modelcontextprotocol/python-sdk
Description: Implements SEP-837 (the third client-side item of #2902): send application_type during Dynamic Client Registration. What changed Added application_type: Literal["web", "native"] = "native" to OAuthClientMetadata. It serializes into the DCR /register body via the existing model_dump. Default is "native", matching the Rust SDK and the common MCP case (CLI/desktop clients with loopback redirect URIs - all our examples). Remote browser-based clients override to "web". Per the spec: omitting application_type defaults to "web" under OIDC, which an authorization server can reject for the localhost redirect URIs native clients use; non-OIDC servers ignore the parameter. Conformance Unblocks and removes from the expected-failures baselines: Default leg (expected-failures.yml): the 6 auth/iss-* and auth/offline-access-not-supported (their iss/scope checks already passed under #2921; they only failed sep-837-application-type-present at DCR). 2026-07-28 leg (expected-failures.2026-07-28.yml): the above plus auth/metadata-default, auth/metadata-var{1,2,3}, auth/scope-from-*, auth/scope-omitted-when-undefined, and auth/token-endpoint-auth-{basic,post,none}. The 2026-07-28 leg passes cleanly with no stale or unexpected entries. Note - pre-existing default-leg failure, not from this PR: the default leg still reports auth/scope-step-up as an unexpected failure. This fails identically on clean main (verified): #2927 removed it from expected-failures.yml for the alpha.5 harness (which gates the SEP-2350 scope-union check to 2026-07-28+), but CI is still pinned to alpha.4, where the check fires on the default leg. It resolves when the harness pin moves to alpha.5 (already a TODO in conformance.yml) or when SEP-2350 lands. Out of scope here. AI Disclaimer This PR was developed with the assistance of either Claude or Codex. I've reviewed and verified the changes.
Open Graph Description: Implements SEP-837 (the third client-side item of #2902): send application_type during Dynamic Client Registration. What changed Added application_type: Literal["web", "native"...
X Description: Implements SEP-837 (the third client-side item of #2902): send application_type during Dynamic Client Registration. What changed Added application_type: Literal["web", "...
Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/2930
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:1ebd8832-a769-1257-41f1-96238e72c478 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | 9EB4:130EDA:3D17A3:56C75C:6A59FA63 |
| html-safe-nonce | 0afd979547eddaf4e3d7bb1feaf945aef957db2dde9488ac1308f471ce626c79 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RUI0OjEzMEVEQTozRDE3QTM6NTZDNzVDOjZBNTlGQTYzIiwidmlzaXRvcl9pZCI6IjQ2MzkwNjA4OTE5MjA4OTA0NjciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 64175950a6b2ee16e93bf4806629ce58c3bcf8ebdebdaa64a56724035bfc009a |
| hovercard-subject-tag | pull_request:3904314068 |
| 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/2930/files |
| twitter:image | https://avatars.githubusercontent.com/u/7353520?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/7353520?s=400&v=4 |
| og:image:alt | Implements SEP-837 (the third client-side item of #2902): send application_type during Dynamic Client Registration. What changed Added application_type: Literal["web", "native"... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 4d3f961cfc83a4348ee5be7691cf4ae3515aab3ef5200c13a7e41b048125fb61 |
| 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 | ac4d28603af300ac851b62521abb878ab5d3319a |
| ui-target | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width