Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: modelcontextprotocol/rust-sdk
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: rmcp-v1.2.0
Choose a base ref
...
head repository: modelcontextprotocol/rust-sdk
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: rmcp-v1.3.0
Choose a head ref
  • 18 commits
  • 104 files changed
  • 10 contributors

Commits on Mar 11, 2026

  1. Configuration menu
    Copy the full SHA
    8700e5c View commit details
    Browse the repository at this point in the history
  2. feat: add local feature for !Send tool handler support (#740)

    * feat: add local feature for !Send tool handler support
    
    * fix: gate streamable HTTP transport on not(local) feature
    DaleSeo authored Mar 11, 2026
    Configuration menu
    Copy the full SHA
    1a4a52a View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2026

  1. fix(auth): redact secrets in Debug output for StoredCredentials and S…

    …toredAuthorizationState (#744)
    
    * fix(auth): redact secrets in Debug output for StoredCredentials and StoredAuthorizationState
    
    Removes `Debug` from the derive macros on `StoredCredentials` and
    `StoredAuthorizationState` and replaces them with manual `Debug` impls
    that print `[REDACTED]` for sensitive fields (access/refresh tokens,
    PKCE verifiers, and CSRF tokens), preventing accidental credential
    leakage via `{:?}` formatters, log calls, and error chains.
    
    Fixes #741
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
    
    * test(auth): assert Debug output redacts secrets for credential types
    
    Adds regression tests for the fix in the previous commit, verifying
    that `{:?}` formatting of `StoredAuthorizationState` and
    `StoredCredentials` does not emit plaintext secrets.
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
    
    * test(auth): address review feedback on debug redaction tests
    
    - Remove redundant VendorExtraTokenFields from use super:: in
      test_stored_credentials_debug_redacts_token_response (already
      imported at module scope)
    - Add assert!(debug_output.contains("created_at")) to
      test_stored_authorization_state_debug_redacts_secrets to verify
      non-secret fields remain visible in Debug output
    - Run cargo fmt
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
    
    * Update crates/rmcp/src/transport/auth.rs
    
    Co-authored-by: Dale Seo <[email protected]>
    
    * fix: remaining formatting issue
    
    * fix: formatting
    
    * fix: formatting
    
    * fix: please
    
    ---------
    
    Co-authored-by: Claude Sonnet 4.6 <[email protected]>
    Co-authored-by: Dale Seo <[email protected]>
    3 people authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    66712db View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    44dfcf5 View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2026

  1. fix(rmcp): surface JSON-RPC error bodies on HTTP 4xx responses (#748)

    * fix(rmcp): surface JSON-RPC error bodies on HTTP 4xx responses
    
    When a server returns a 4xx status with Content-Type: application/json,
    attempt to deserialize the body as a ServerJsonRpcMessage before falling
    back to UnexpectedServerResponse. This allows JSON-RPC error payloads
    carried on HTTP error responses to be surfaced as McpError instead of
    being lost in a transport-level error string.
    
    Fixes #724
    
    * fix(rmcp): surface JSON-RPC error bodies on HTTP 4xx responses
    
    When a server returns a 4xx status with Content-Type: application/json,
    attempt to deserialize the body as a ServerJsonRpcMessage before falling
    back to UnexpectedServerResponse. This allows JSON-RPC error payloads
    carried on HTTP error responses to be surfaced as McpError instead of
    being lost in a transport-level error string.
    
    Fixes #724
    
    * fix(rmcp): only accept JsonRpcMessage::Error on non-success responses
    kakarot-dev authored Mar 17, 2026
    Configuration menu
    Copy the full SHA
    55b478b View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2026

  1. Configuration menu
    Copy the full SHA
    d485249 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e709d0d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    251ebec View commit details
    Browse the repository at this point in the history

Commits on Mar 22, 2026

  1. feat: add configuration for transparent session re-init (#760)

    * feat: add configuration for transparent session re-init
    
    * fix: in ci revert running tests without local until all tests pass
    
    * fix: pr comments
    
    * fix: documentation
    glicht authored Mar 22, 2026
    Configuration menu
    Copy the full SHA
    3ea8c3c View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2026

  1. chore: remove the rig example (#763)

    The rig official has the mcp example, we need not to keep it just give the link.
    
    Signed-off-by: jokemanfire <[email protected]>
    jokemanfire authored Mar 23, 2026
    Configuration menu
    Copy the full SHA
    30cdc38 View commit details
    Browse the repository at this point in the history
  2. fix: prevent CallToolResult and GetTaskPayloadResult from shadowing C…

    …ustomResult in untagged enums (#771)
    
    The `#[serde(default)]` on `CallToolResult.content` (added in #752) made
    all fields optional, causing `CallToolResult` to greedily match any JSON
    object during `#[serde(untagged)]` deserialization of `ServerResult`.
    Similarly, `GetTaskPayloadResult(Value)` matched everything before
    `CustomResult(Value)` could be reached.
    
    Fix by replacing derived `Deserialize` impls with custom ones:
    - `CallToolResult`: require at least one known field to be present
    - `GetTaskPayloadResult`: always fail (indistinguishable from
      `CustomResult` in JSON; construct programmatically via `::new()`)
    DaleSeo authored Mar 23, 2026
    Configuration menu
    Copy the full SHA
    c8c0c0c View commit details
    Browse the repository at this point in the history
  3. chore(deps): update tokio-tungstenite requirement from 0.28.0 to 0.29…

    ….0 (#773)
    
    Updates the requirements on [tokio-tungstenite](https://github.com/snapview/tokio-tungstenite) to permit the latest version.
    - [Changelog](https://github.com/snapview/tokio-tungstenite/blob/master/CHANGELOG.md)
    - [Commits](snapview/tokio-tungstenite@v0.28.0...v0.29.0)
    
    ---
    updated-dependencies:
    - dependency-name: tokio-tungstenite
      dependency-version: 0.29.0
      dependency-type: direct:production
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Mar 23, 2026
    Configuration menu
    Copy the full SHA
    f89e412 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    baf22d3 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2026

  1. feat(auth): implement SEP-2207 OIDC-flavored refresh token guidance (#…

    …676)
    
    * feat: implement sep-2207 refresh token guidance
    
    * fix: update client-metadata.json to allow refresh tokens
    wdawson authored Mar 24, 2026
    Configuration menu
    Copy the full SHA
    a32a9c8 View commit details
    Browse the repository at this point in the history
  2. feat(transport): add Unix domain socket client for streamable HTTP (#749

    )
    
    * feat(transport): add Unix domain socket client for streamable HTTP
    
    MCP hosts in Kubernetes environments with Envoy sidecars need to route
    HTTP through Unix domain sockets because DNS-based URIs only resolve
    via the proxy. Adds UnixSocketHttpClient implementing StreamableHttpClient
    using hyper over tokio::net::UnixStream, gated behind the
    transport-streamable-http-client-unix-socket feature.
    
    Also extracts RESERVED_HEADERS, extract_scope_from_header, and
    validate_custom_header into common/http_header.rs to share header
    validation logic between the reqwest and unix socket implementations.
    
    * fix(transport): address review feedback for unix socket transport
    
    - Document one-connection-per-request behavior on UnixSocketHttpClient
    - Reject empty socket paths and bare '@' in constructor with assert
    - Add explicit dep:http to unix-socket feature for self-documenting deps
    - Document MCP-Protocol-Version exception on RESERVED_HEADERS constant
    - Fix test catch-all to echo request id instead of hardcoding 1
    - Remove leftover sleep(100ms) in test_unix_socket_custom_headers
    - Add blank line before macro comment in Cargo.toml
    
    * fix(transport): fix CI failures for unix socket transport
    
    - Use std::io::Error::other() instead of Error::new(ErrorKind::Other)
      to satisfy clippy::io_other_error on newer nightly
    - Use #[tokio::test(flavor = "current_thread")] for unix socket tests
      since axum's serve(UnixListener) requires spawn_local
    - Gate validate_custom_header behind client-side-sse feature since it
      references http::HeaderName which isn't available with default features
    
    * fix(transport): fix CI failures for unix socket transport
    
    axum::serve(UnixListener) uses spawn_local on Linux, which panics
    outside a LocalSet. Replace with manual hyper HTTP/1.1 server that
    accepts connections directly from the UnixListener, avoiding the
    spawn_local requirement entirely.
    
    * fix(transport): skip unix socket tests when local feature is enabled
    
    The local feature causes ().serve(transport) to use spawn_local, which
    requires a LocalSet. Gate the integration tests with not(feature = "local")
    to match every other integration test in the repo.
    wpfleger96 authored Mar 24, 2026
    Configuration menu
    Copy the full SHA
    ee1c63c View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2026

  1. chore: add #[non_exhaustive] to remaining public structs (#768)

    * chore: add #[non_exhaustive] to remaining public structs
    
    * chore: add #[non_exhaustive] to remaining public types
    
    * chore: enable exhaustive_structs/enums clippy lints
    
    * test: add untagged ServerResult deserialization regression tests
    DaleSeo authored Mar 26, 2026
    Configuration menu
    Copy the full SHA
    6a3b32d View commit details
    Browse the repository at this point in the history
  2. feat: add "theme" to Icon (#766)

    * feat: add theme field to Icon
    
    * fix: update IconThem crates/rmcp/src/model.rs (non_exhaustive)
    
    Co-authored-by: Dale Seo <[email protected]>
    
    * fix: update IconThem crates/rmcp/src/model.rs (eq, hash)
    
    Co-authored-by: Dale Seo <[email protected]>
    
    * fix: update docs with full descriptions of theme from mcp spec
    
    ---------
    
    Co-authored-by: Dale Seo <[email protected]>
    glicht and DaleSeo authored Mar 26, 2026
    Configuration menu
    Copy the full SHA
    0b36a84 View commit details
    Browse the repository at this point in the history
  3. chore: release v1.3.0 (#747)

    * chore: release v2.0.0
    
    * chore: version 1.3.0
    
    ---------
    
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Dale Seo <[email protected]>
    github-actions[bot] and DaleSeo authored Mar 26, 2026
    Configuration menu
    Copy the full SHA
    ac749e3 View commit details
    Browse the repository at this point in the history
Loading