Skip to content

Releases: modelcontextprotocol/rust-sdk

rmcp-v1.8.0

23 Jun 12:29
2522036

Choose a tag to compare

Warning

⚠️ Breaking Changes

Despite being a minor version bump, this release contains a source-breaking API change (it should have been 2.0.0). If you depend on rmcp = "1.7", Cargo will resolve to 1.8.0 automatically and your build may fail. Pin to =1.7.x if you are not ready to migrate.

Peer::peer_info() return type changed (#862):

- pub fn peer_info(&self) -> Option<&R::PeerInfo>
+ pub fn peer_info(&self) -> Option<Arc<R::PeerInfo>>

This was needed so peer info can be re-set on a duplicate initialize (it now lives behind an RwLock), which is why a borrow can no longer be returned.

Migration: field access still works through Arc's Deref. If you need the old &InitializeResult (e.g. you bound the type explicitly), use .as_deref():

// Before (1.7.x): info is &InitializeResult
let info: Option<&InitializeResult> = client.peer_info();

// After (1.8.0): info is Arc<InitializeResult>
let info: Option<Arc<InitializeResult>> = client.peer_info();

// To recover the old reference type:
let info: Option<&InitializeResult> = client.peer_info().as_deref();

Added

  • standardize resource-not-found error code (SEP-2164) (#899)
  • validate OAuth authorization response issuer (#896)
  • specify OIDC application_type during dynamic client registration (SEP-837) (#883)
  • deprecate roots, sampling, and logging (SEP-2577) (#884)

Fixed

  • (auth) preserve configured reqwest client (#917)
  • (auth) align OAuth metadata discovery ordering (#887)
  • align progress timeout token (#909)
  • (elicitation) preserve enumNames through ElicitationSchema serde round-trip (#905)
  • return tool errors for invalid arguments (#894)
  • (auth) apply offline_access to reauth paths (#897)
  • update peer info on duplicate initialize (#862) — ⚠️ breaking: changes the Peer::peer_info() signature, see Breaking Changes above
  • strip and validate tool outputSchema and inputSchema (#860)
  • remove unnecessary fields from tools' inputSchema (#856)
  • reject init header/body version mismatch (#853)
  • align protocol version negotiation (#855)
  • accept 200 with empty body in response to notifications in addition to 202 (#849)

Other

  • Allow custom HTTP clients for OAuth (#908)
  • Add progress-aware request timeout reset (#858)
  • (server) document Err vs Ok(CallToolResult::error) visibility contract on ServerHandler::call_tool (#854)
  • refine mcpmate listing copy (#885)
  • added jilebi-mcp to the list of built with rmcp (#861)

rmcp-macros-v1.8.0

23 Jun 12:28
2522036

Choose a tag to compare

Added

  • deprecate roots, sampling, and logging (SEP-2577) (#884)

Fixed

  • strip and validate tool outputSchema and inputSchema (#860)
  • remove unnecessary fields from tools' inputSchema (#856)

Other

  • refine mcpmate listing copy (#885)
  • added jilebi-mcp to the list of built with rmcp (#861)

rmcp-v1.7.0

13 May 13:44
3529c36

Choose a tag to compare

Added

  • add task-based stdio examples (#839)

Fixed

  • (rmcp) flatten Resource variant of PromptMessageContent (#843)
  • reply -32700 on stdio parse errors instead of closing (#833)

Other

  • (rmcp) remove dependency on chrono default features (#829)
  • Fix/issue 817 idle timeout log level (#824)

rmcp-macros-v1.7.0

13 May 13:44
3529c36

Choose a tag to compare

Added

  • add task-based stdio examples (#839)

rmcp-v1.6.0

01 May 13:46
014fb2e

Choose a tag to compare

Added

  • (http) log Host/Origin rejections (#826)
  • (http) add Origin header validation (#823)
  • (router) support runtime disabling of tools (#809)
  • optional session store (resumabillity support) (#775)

Fixed

  • add init_timeout for streamable-http sessions (#811)
  • (http) fall back to :authority for HTTP/2 (#827)
  • (docs) use correct Parameters syntax in tool examples (#814)

Other

  • add systemprompt-template to Built with rmcp (#820)

rmcp-macros-v1.6.0

01 May 13:46
014fb2e

Choose a tag to compare

Fixed

  • (docs) use correct Parameters syntax in tool examples (#814)

Other

  • add systemprompt-template to Built with rmcp (#820)

rmcp-v1.5.0

16 Apr 16:56
020a38b

Choose a tag to compare

Added

  • (transport) add constructors for non_exhaustive error types (#806)
  • add 2025-11-25 protocol version support (#802)

Fixed

  • treat resource metadata JSON parse failure as soft error (#810)
  • include http_request_id in request-wise priming event IDs (#799)
  • (http) drain SSE stream for connection reuse (#790)

Other

  • (deps) update which requirement from 7 to 8 (#807)

rmcp-macros-v1.5.0

16 Apr 16:55
020a38b

Choose a tag to compare

Fixed

  • (macros) respect local feature in #[prompt] macro — omit + Send bound (#803)

rmcp-v1.4.0

10 Apr 14:49
4628720

Choose a tag to compare

Added

  • add Default and constructors to ServerSseMessage (#794)
  • add meta to elicitation results (#792)
  • (macros) auto-generate get_info and default router (#785)
  • (transport) add which_command for cross-platform executable resolution (#774)
  • (auth) add StoredCredentials::new() constructor (#778)

Fixed

  • (server) remove initialized notification gate to support Streamable HTTP (#788)
  • default session keep_alive to 5 minutes (#780)
  • (http) add host check (#764)
  • exclude local feature from docs.rs build (#782)

Other

  • update Rust toolchain to 1.92 (#797)
  • unify IntoCallToolResult Result impls (#787)

rmcp-macros-v1.4.0

10 Apr 14:48
4628720

Choose a tag to compare

Added

  • (macros) auto-generate get_info and default router (#785)