Releases: modelcontextprotocol/rust-sdk
Releases · modelcontextprotocol/rust-sdk
rmcp-v1.8.0
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 thePeer::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
rmcp-macros-v1.8.0
rmcp-v1.7.0
rmcp-macros-v1.7.0
Added
- add task-based stdio examples (#839)
rmcp-v1.6.0
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
rmcp-v1.5.0
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
Fixed
- (macros) respect
localfeature in#[prompt]macro — omit+ Sendbound (#803)
rmcp-v1.4.0
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
rmcp-macros-v1.4.0
Added
- (macros) auto-generate get_info and default router (#785)