chore(deps): bump rmcp from 2.2.0 to 3.2.0 - #5877
Conversation
Bumps [rmcp](https://github.com/modelcontextprotocol/rust-sdk) from 2.2.0 to 3.2.0. - [Release notes](https://github.com/modelcontextprotocol/rust-sdk/releases) - [Changelog](https://github.com/modelcontextprotocol/rust-sdk/blob/main/release-plz.toml) - [Commits](modelcontextprotocol/rust-sdk@rmcp-v2.2.0...rmcp-v3.2.0) --- updated-dependencies: - dependency-name: rmcp dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
|
Thanks @dependabot[bot] for taking the time to contribute. This repository is observing a maintainer-managed PR intake gate in dry-run mode, so this pull request is staying open. This note helps maintainers prepare the allowlist before any enforcement is considered. Please read |
|
Superseded by #5924, which lands rmcp 3.2.0 together with the OAuth transport port the bump needed (issuer validation on discovery, the split refresh error variants, and the renamed discovery/authorization APIs). Thanks Dependabot. |
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
Supersedes the red Dependabot PR Hmbown#5877. rmcp 3.2 reshaped `transport::auth`; this ports our client and the in-process OAuth mock to the new contract without changing any product guarantee. What changed in rmcp, and what we adapted to: 1. `AuthorizationManager::discover_metadata()` is now `resolve_metadata()`, returning `AuthorizationMetadataResolution { metadata, source }`. The discovery order (RFC 9728 protected resource metadata, then RFC 8414 / OIDC, then legacy synthesized endpoints) and the legacy fallback are unchanged, so the two call sites just take `.metadata`. 2. `OAuthState::start_authorization(scopes, redirect_uri, client_name)` is now a single `AuthorizationRequest` builder. It also introduces a client-identity priority order (pre-registered client ID, then a Client ID Metadata Document, then Dynamic Client Registration); we supply neither of the first two, so we still land on DCR exactly as before. Empty scopes now mean "let the SDK select from the WWW-Authenticate challenge / PRM / AS metadata" rather than "request none" — strictly better, and our explicit scopes still win. 3. Discovery now validates the `issuer` in the fetched authorization server metadata against the discovery URL (RFC 8414 / OIDC) and fails with `AuthError::AuthorizationServerMismatch` instead of silently accepting it. Our in-process mock answered *every* `/.well-known/oauth-authorization-server*` path with one document whose `issuer` is the origin root, including rmcp's first candidate `/.well-known/oauth-authorization-server/mcp`, whose issuer must be `<origin>/mcp`. The mock now answers only the canonical path, which is what a real authorization server at the origin root does. That is a conformance fix to a test double, not a product behavior change: every assertion in the eight tests is untouched. 4. `AuthError` split the refresh outcomes: `TokenRefreshFailed` is now the retryable case and the new `TokenRefreshRejected` carries a definitive `invalid_grant`; separately, `refresh_token()` returns `AuthError::AuthorizationRequired` where 2.2 returned `TokenRefreshFailed("No refresh token available")`. The `invalid_grant` text still reaches us intact, so the dead-grant guarantees hold unchanged, but "OAuth authorization required" — a credential with no usable grant left — was classified as a plain transport failure on every surface. `error_text_looks_auth_required` now matches rmcp's full phrase, so that case flips the server to `auth required` and offers the login tool like every other unrecoverable credential. Not adapted because nothing depended on it: `StoredCredentials` gained an `issuer` field and `initialize_from_store` now discards tokens when the authorization server changes; `CredentialStore` gained an optional `acquire_refresh_guard`; the RFC 8707 `resource` parameter on refreshes now prefers the discovered PRM resource indicator and falls back to the base URL, which is what 2.2 always sent. We keep our own credential store, so rmcp's in-memory default is untouched by any of these. Verified locally: cargo fmt clean cargo check -p codewhale-tui clean RUST_MIN_STACK=16777216 cargo test -p codewhale-tui --lib -- mcp:: 230 passed; 0 failed; 1 ignored (was 222 passed; 8 failed) RUST_MIN_STACK=16777216 cargo test -p codewhale-tui --lib 11717 passed; 0 failed; 13 ignored Two earlier full-suite runs each tripped one different pre-existing parallel-execution flake in a module this change does not touch (`model_inventory::...ollama_default_prefers_live_local_tags...`, then `remote_control::...distinct_recovery_turn_ids`); both pass alone and the run above is clean. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188XYyJaw9Mh9uSrqQBoqhm Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Bumps rmcp from 2.2.0 to 3.2.0.
Release notes
Sourced from rmcp's releases.
... (truncated)
Commits
51ccb42chore: release v3.2.0 (#1227)ad9832efix: keep initialize on legacy protocol versions (#1228)4e74499feat(auth): coordinate OAuth refreshes through credential stores (#1232)3a2ebbcchore(deps): bump taiki-e/install-action from 2.85.13 to 2.86.7 (#1230)1afde5bdocs: use auto lifecycle in HTTP example (#1187)ec041b7ci: reduce dependabot update noise (#1184)3ef34e6feat: add request-state key rotation (#1128)12db028ci: pin release-plz fork revision (#1221)c8bb1c6ci: remove coverage job write permission (#1219)3501f3eci: default workflow tokens to read-only contents (#1218)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)