rmcp
Rust SDK for Model Context Protocol
3.1.4
22M downloads/mo
#2005 most downloaded on crates.io
modelcontextprotocol/rust-sdk
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 50 of 55 stable releases
1 version withdrawn
withdrawn after publishing
1 years old
62 releases · first in 2025
47 releases in the last 12 months
see the full history below
Release timeline
62 releases · Mar 2025 to Aug 2026
2026
Releases
latest 60 of 62-
3.1.420 Aug 2026 -
3.1.317 Aug 2026Release notes
Open source →Fixed
- (auth) ignore query parameters when matching resources (#1177)
- (auth) retain state until issuer validation (#1167)
- (model) preserve elicitation property order metadata (#1150)
- time out auto discovery probe (#1149)
- (client) classify discover outcome at source, not at the error type (#1133)
Other
- Fix typo in to_authorized_http_client doc comment (#1158)
Release notes
Open source →Fixed
- (auth) ignore query parameters when matching resources (#1177)
- (auth) retain state until issuer validation (#1167)
- (model) preserve elicitation property order metadata (#1150)
- time out auto discovery probe (#1149)
- (client) classify discover outcome at source, not at the error type (#1133)
Other
- Fix typo in to_authorized_http_client doc comment (#1158)
-
3.1.207 Aug 2026 -
3.1.105 Aug 2026Release notes
Open source →Fixed
- emit cache hints from handler macros (#1120)
- expose MRTR state to tool handlers (#1104)
- disambiguate input-required results (#1103)
Other
- make async-trait optional (#1119)
Release notes
Open source →Fixed
- emit cache hints from handler macros (#1120)
- expose MRTR state to tool handlers (#1104)
- disambiguate input-required results (#1103)
Other
- make async-trait optional (#1119)
-
3.1.031 Jul 2026Release notes
Open source →Added
- classify authorization-required errors (#1056)
- add strict stateless protocol metadata validation (#1091)
- SEP-2260 stream-based enforcement of client receive-side request association (#1055)
Fixed
- (model) decode metadata-bearing input-required results affecting mrtr (#1097)
- require metadata for modern HTTP requests (#1089)
- honor supported_protocol_versions when negotiating initialize (#1093)
Other
Release notes
Open source →Added
- classify authorization-required errors (#1056)
- add strict stateless protocol metadata validation (#1091)
- SEP-2260 stream-based enforcement of client receive-side request association (#1055)
Fixed
- (model) decode metadata-bearing input-required results affecting mrtr (#1097)
- require metadata for modern HTTP requests (#1089)
- honor supported_protocol_versions when negotiating initialize (#1093)
Other
-
3.0.129 Jul 2026 -
3.0.028 Jul 2026 -
3.0.0-beta.528 Jul 2026 pre-releaseRelease notes
Open source →Fixed
- [breaking] remove server_info from DiscoverResult (#1065)
- preserve transient OAuth discovery HTTP errors (#1071)
- [breaking] preserve OAuth discovery transport errors (#1069)
- gate client handler bounds for local (#1068)
Other
-
3.0.0-beta.428 Jul 2026 pre-release -
3.0.0-beta.327 Jul 2026 pre-releaseRelease notes
Open source →Fixed
- [breaking] reject missing
issuerin authorization server metadata by default (#1054) - default to allowing missing
issuer(#1051)
Other
- make oauth discovery reactive (#1052)
- [breaking] reject missing
-
3.0.0-beta.224 Jul 2026 pre-releaseRelease notes
Open source →Added
- expose oauth discovery metadata source (#1041)
Fixed
- [breaking] omit resultType for legacy protocol sessions (#1038)
Other
- declare and check MSRV (#1034)
-
3.0.0-beta.123 Jul 2026 pre-releaseRelease notes
Open source →Added
- route SEP-2260 associated server requests to the originating SSE stream (#1029)
- [breaking] add distributed SSE event store (#1024)
- add client-side TTL-honoring response cache (SEP-2549) (#1025)
- [breaking] Implement SEP-2663 Tasks Extension (#1020)
- add subscription listen streams (SEP-2575) (#1000)
- (auth) bind DCR client credentials to issuing authorization server (SEP-2352) (#998)
- add modern client lifecycle modes (SEP-2575) (#995)
- (auth) accumulate client-side scopes during step-up authorization (#888)
- [breaking] add server discovery and negotiation (SEP-2575) (#973)
- (conformance) add SEP-2243 header validation tool (#997)
- [breaking] align metadata models with draft schema (#993)
- [breaking] implement SEP-2549 cache hints (#889)
- [breaking] add MRTR behavior support (SEP-2322) (#929)
- [breaking] type Annotations.lastModified as a string (#956)
- [breaking] add SEP-2243 HTTP standard headers (#907)
- relax outputSchema to accept non-object JSON Schema types (SEP-2106) (#895)
- [breaking] relax tool result structuredContent type (SEP-2106) (#933)
- [breaking] add MRTR model types (SEP-2322) (#915)
Fixed
- reap completed response send tasks (#1026)
- accept stringified numeric response IDs (#1021)
- re-register after auth server change (#1011)
- .with_stateful_mode -> .with_legacy_session_mode (#1015)
- preserve negotiated progress responses (#1005)
- (server) serve draft-version requests statelessly per SEP-2567 (#999)
- pass client header conformance (#1012)
- (auth) add an SDK path for pre-registered OAuth clients (#994)
- (transport) cancel in-flight request on stateless streamable-HTTP client disconnect (#857) (#967)
- (auth) distinguish rejected refresh tokens from transient failures (#963)
- (auth) validate discovered metadata issuer (#996)
- bound streamable HTTP memory usage (#970)
- (streamable-http) preserve progress in JSON mode (#990)
- specify compatible sse-stream version (#968)
- flag schema derive on schemars feature (#966)
Other
- refactor OAuth client authorization api (#1009)
- update for 2026-07-28 version (#1032)
- (deps) update hmac requirement from 0.12 to 0.13 (#988)
- serialize JavaScript dependency install (#972)
Changed
- BREAKING: rename
StreamableHttpServerConfig::stateful_modetolegacy_session_mode(and the builderwith_stateful_modetowith_legacy_session_mode) to clarify that the option only affects legacy protocol versions (< 2026-07-28); per SEP-2567 the2026-07-28draft version is always served statelessly (#999)
Fixed
- use the authorization server issuer as the default
private_key_jwtaudience
-
2.2.008 Jul 2026 -
2.1.002 Jul 2026 -
2.0.029 Jun 2026Release notes
Open source →Added
- [breaking] relax tool result structuredContent type (#919)
- deprecate roots/sampling/logging types (#923)
- [breaking] align model types with MCP 2025-11-25 spec (#927)
Fixed
- prevent OAuth resource spoofing (#937)
- block oauth metadata ssrf (#935)
- prevent streamable HTTP session leak (#934)
- fill missing fully qualified syntax in prompt_handler macros (#866)
- (rmcp) add Audio variant to PromptMessageContent (#865)
Other
-
1.8.023 Jun 2026Release notes
Open source →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)
- 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
-
1.7.013 May 2026Release notes
Open source →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
-
1.6.001 May 2026Release notes
Open source →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<T> syntax in tool examples (#814)
Other
- add systemprompt-template to Built with rmcp (#820)
-
1.5.016 Apr 2026Release notes
Open source →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)
-
1.4.010 Apr 2026Release notes
Open source →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
-
1.3.026 Mar 2026Release notes
Open source →Added
- (transport) add Unix domain socket client for streamable HTTP (#749)
- (auth) implement SEP-2207 OIDC-flavored refresh token guidance (#676)
- add configuration for transparent session re-init (#760)
- add local feature for !Send tool handler support (#740)
Fixed
- prevent CallToolResult and GetTaskPayloadResult from shadowing CustomResult in untagged enums (#771)
- drain in-flight responses on stdin EOF (#759)
- remove default type param from StreamableHttpService (#758)
- use cfg-gated Send+Sync supertraits to avoid semver break (#757)
- (rmcp) surface JSON-RPC error bodies on HTTP 4xx responses (#748)
- default CallToolResult content to empty vec on missing field (#752)
- (auth) redact secrets in Debug output for StoredCredentials and StoredAuthorizationState (#744)
Other
- fix all clippy warnings across workspace (#746)
-
1.2.011 Mar 2026Release notes
Open source →Added
- add missing constructors for non-exhaustive model types (#739)
- include granted scopes in OAuth refresh token request (#731)
Fixed
- handle ping requests sent before initialize handshake (#745)
- allow deserializing notifications without params field (#729)
Other
- (deps) update jsonwebtoken requirement from 9 to 10 (#737)
-
1.1.109 Mar 2026Release notes
Open source →Fixed
- accept logging/setLevel and ping before initialized notification (#730)
-
1.1.004 Mar 2026Release notes
Open source →Added
- implement OAuth 2.0 Client Credentials flow (#707)
Other
- add McpMux to Built with rmcp section (#717)
-
1.0.003 Mar 2026 -
1.0.0-alpha03 Mar 2026 pre-releaseRelease notes
Open source →Added
Fixed
- downgrade logging of message to
TRACEto avoid spamming logs (#699)
Other
- add #[non_exhaustive] and mutation methods to improve compatibility (#715)
- downgrade logging of message to
-
0.17.027 Feb 2026Release notes
Open source →Added
- (streamable-http) add json_response option for stateless server mode (#683)
- mcp sdk conformance (#687)
- add default value support to string, number, and integer schemas (#686)
- add trait-based tool declaration (#677)
- send and validate MCP-Protocol-Version header (#675)
Fixed
- improve error logging and remove token secret from logs (#685)
- refresh token expiry (#680)
- gate optional dependencies behind feature flags (#672)
- allow empty content in CallToolResult (#681)
- (schema) remove AddNullable from draft2020_12 settings (#664)
Other
-
0.16.017 Feb 2026Release notes
Open source →Added
- add support for custom HTTP headers in StreamableHttpClient (#655)
- (auth) add token_endpoint_auth_method to OAuthClientConfig (#648)
Fixed
- remove unnecessary doc-cfg (#661)
- duplicate meta serialization (#662)
- sort list_all() output in ToolRouter and PromptRouter for deterministic ordering (#665)
- align task response types with MCP spec (#658)
Other
-
0.15.010 Feb 2026Release notes
Open source →Added
- (elicitation) add support URL elicitation. SEP-1036 (#605)
- enforce SEP-1577 MUST requirements for sampling with tools (#646)
- add native-tls as an optional TLS backend (#631)
- (capabilities) add extensions field for SEP-1724 (#643)
Fixed
- (tasks) avoid dropping completed task results during collection (#639)
- (auth) oauth metadata discovery (#641)
- compilation with --no-default-features (#593)
- (tasks) expose
execution.taskSupporton tools (#635) - (tasks) correct enum variant ordering for deserialization (#634)
Other
-
0.14.023 Jan 2026Release notes
Open source →Fixed
- (tasks) #626 model task capabilities correctly (#627)
- don't treat non-success HTTP codes as transport errors (#618)
Other
-
0.13.015 Jan 2026Release notes
Open source →Added
- provide blanket implementations for ClientHandler and ServerHandler traits (#609)
- (service) add close() method for graceful connection shutdown (#588)
- (auth) add StateStore trait for pluggable OAuth state storage (#614)
- (elicitation) implement SEP-1330 Elicitation Enum Schema Improvements (#539)
- (task) add task support (SEP-1686) (#536)
Fixed
- use the json rpc error from the initialize response and bubble it up to the client (#569)
- (build) fix build of the project when no features are selected (#606)
- use Semaphore instead of Notify in OneshotTransport to prevent race condition (#611)
- add OpenID Connect discovery support per spec-2025-11-25 4.3 (#598)
- only try to refresh access tokens if we have a refresh token or an expiry time (#594)
- (docs) add spreadsheet-mcp to Built with rmcp (#582)
Other
- (elicitation) improve enum schema builder, small changes of elicitation builder (#608)
- add pre-commit hook for conventional commit verification (#619)
- clean up optional dependencies (#546)
- re-export ServerSseMessage from session module (#612)
- Implement SEP-1699: Support SSE Polling via Server-Side Disconnect (#604)
- update README external links (#603)
- clarity and formatting (#602)
- Add optional icons field to RawResourceTemplate (#589)
-
0.12.018 Dec 2025 -
0.11.008 Dec 2025Release notes
Open source →Added
- (meta) add _meta field to prompts, resources and paginated result (#558)
- [breaking] remove SSE transport support (#562)
Fixed
- (streamable-http) gracefully shutdown while client connected (#494)
Other
-
0.10.001 Dec 2025Release notes
Open source →Added
- add support for custom client notifications (#556)
Other
- replace paste with pastey for macros feature (#564)
-
0.9.124 Nov 2025Release notes
Open source →Added
- (streamable-http) support both SSE and JSON response formats (#540)
Fixed
- don't block on creating the SSE stream (#553)
- (shemars) use JSON Schema 2020-12 as Default Dialect (#549)
- (oauth) let OAuth discovery skip to next well-known URL candidate on JSON parse error. (#545)
Other
- Implementation of SEP-986: Specify Format for Tool Names (#551)
-
0.9.017 Nov 2025Release notes
Open source → -
0.8.505 Nov 2025 -
0.8.404 Nov 2025 -
0.8.322 Oct 2025 -
0.8.221 Oct 2025Release notes
Open source →Added
- add type-safe elicitation schema support (#465) (#466)
- (SEP-973) following change Icon.sizes from string to string array (#479)
Fixed
- (oauth) three oauth discovery and registration issues (#489)
- (oauth) dynamic client registration should be optional (#463)
- (sse-client) consume control frames; refresh message endpoint (#448)
Other
-
0.8.107 Oct 2025 -
0.8.004 Oct 2025Release notes
Open source →Added
- allow clients to override client_name (#469)
Fixed
- (oauth) support suffixed and prefixed well-known paths (#459)
- generate default schema for tools with no params (#446)
Other
- bump to rust 1.90.0 (#453)
-
0.7.024 Sep 2025Release notes
Open source →Fixed
- return auth errors (#451)
- (oauth) do not treat empty secret as valid for public clients (#443)
- (clippy) add doc comment for generated tool attr fn (#439)
- (oauth) require CSRF token as part of the OAuth authorization flow. (#435)
Other
-
0.6.411 Sep 2025Release notes
Open source →Added
- (SEP-973) add support for icons and websiteUrl across relevant types (#432)
- implement context-aware completion (MCP 2025-06-18) (#396)
- add
titlefield for data types (#410)
Fixed
- crates/rmcp/src/handler/client/progress.rs XXXXXX -> dispatcher (#429)
- build issue due to missing struct field (#427)
- generate simple {} schema for tools with no parameters (#425)
Other
-
0.6.304 Sep 2025 -
0.6.204 Sep 2025Release notes
Open source →Added
- (rmcp) add optional _meta to CallToolResult, EmbeddedResource, and ResourceContents (#386)
Fixed
- resolve compatibility issues with servers sending LSP notifications (#413)
- remove batched json rpc support (#408)
- transport-streamable-http-server depends on transport-worker (#405)
- (typo) correct typo in error message for transport cancellation and field. (#404)
Other
-
0.6.129 Aug 2025Release notes
Open source →Added
- (rmcp) add authorization header support for the streamable http client (#390)
- (model) add helpers to build enum from concrete values (#393)
- (model) expose client method name (#391)
- add resource_link support to tools and prompts (#381)
- Add prompt support (#351)
- include reqwest in transport-streamble-http-client feature (#376)
Fixed
- (auth) url parse is not correct (#402)
- (readme) missing use declarations, more accurate server instructions (#399)
- enhance transport graceful shutdown with proper writer closure (#392)
Other
- simplify remove_route method signature (#401)
-
0.6.019 Aug 2025Release notes
Open source →Added
Fixed
- match shape of the calltoolresult schema (#377)
- make stdio shutdown more graceful (#364)
- (tool) remove unnecessary schema validation (#375)
- (rmcp) return serialized json with structured content (#368)
Other
-
0.5.007 Aug 2025 -
0.4.107 Aug 2025 -
0.4.005 Aug 2025Release notes
Open source →Added
- [breaking] Add support for
Tool.outputSchemaandCallToolResult.structuredContent(#316)
Fixed
- [breaking] Add support for
-
0.3.231 Jul 2025 -
0.3.129 Jul 2025Release notes
Open source →Fixed
- use mimeType instead of mime_type for MCP specification compliance (#339)
- return a 405 for GET and DELETE if stateful_mode=false (#331)
- propagate tracing spans when spawning new tokio tasks (#334)
- Explicitly added client_id as an extra parameter causes bad token requests (#322)
Other
- Fix formatting in crate descriptions in README.md (#333)
-
0.3.016 Jul 2025 -
0.2.103 Jul 2025 -
0.2.002 Jul 2025Release notes
Open source →Added
- mark boxed http body as sync (#291)
- add progress notification handling and related structures (#282)
- allow failable service creation in streamable HTTP tower service (#244)
- provide more context information (#236)
- stateless mode of streamable http client (#233)
- add cancellation_token method to
RunningService(#218) - better http server support (#199)
- throw initialize error detail (#192)
- sse client optionally skip the endpoint event (#187)
- (server) add annotation to tool macro (#184)
- (model) add json schema generation support for all model types (#176)
- (openapi) add OpenAPI v3 compatibility and test for nullable field schema workaround (#135) (#137)
- (extension) extract http request part into rmcp extension (#163)
- (transport) support streamable http server (#152)
- (oauth) fixes + cache client credentials (#157)
- allow use of reqwest without ring provider (#155)
- extensions to context (#102)
- revision-2025-03-26 without streamable http (#84)
- (tool) allow tool call return a serializable value in json format (#75) (#78)
- Sse server auto ping (#74)
- (transport) Sse client transport trait (#67)
Fixed
- let users decide what to wrap in child process command (#279)
- cancellable initialization process (#280)
- inject part into extension when handing init req (#275)
- streamable http server close request channel on response(#266) (#270)
- streamable http client close on response (#268)
- expose TokioChildWrapper::id() in TokioChildProcess and TokioChildProcessOut (#254)
- add compatibility handling for non-standard notifications in async_rw (#247)
- allow SSE server router to be nested (#240)
- error for status in post method of streamable http client (#238)
- disable wasmbind in chrono for wasm32-unknown-unknown (#234)
- (examples) add clients in examples's readme (#225)
- generic ServerHandler (#223)
- comment error (#215)
- resolve the server 406 error in API calls (#203)
- sse endpoint build follow js's
new URL(url, base)(#197) - more friendly interface to get service error (#190)
- cleanup zombie processes for child process client (#156)
- (schemar) use self-defined settings (#180)
- (transport-sse-server) cleanup on connection drop (#165)
- (test) skip serialize tool's annotation if empty (#160)
- fix resource leak (#136)
- (handler) do call handler methods when initialize server (#118)
- (server) schemars compilation errors (#104)
- (test) fix test introduced by #97 (#101)
- (macro) add generics marco types support (#98)
- (typo) nit language corrections (#90)
- (typo) s/marcos/macros/ (#85)
- (client) add error enum while deal client info (#76)
- (notification) fix wrongly error report in notification (#70)
- (test) fix tool deserialization error (#68)
- (server) add error enum while deal server info (#51)
Other
- add simpling example and test (#289)
- add update for test_message_schema (#286)
- add notion clear in model.rs (#284)
- cov settings, and fix several building warnings (#281)
- refactor tool macros and router implementation (#261)
- fix regression in URL joining (#265)
- remove erroneous definitions_path (#264)
- allow using a TokioCommandWrap for TokioChildProcess::new closes #243 (#245)
- Fix typo (#249)
- provide http server as tower service (#228)
- (deps) update sse-stream requirement from 0.1.4 to 0.2.0 (#230)
- Server info is only retrieved once during initialization (#214)
- (deps) update base64 requirement from 0.21 to 0.22 (#209)
- revert badge (#202)
- use hierarchical readme for publishing (#198)
- Ci/coverage badge (#191)
- fix error introduced by merge, and reorganize feature (#185)
- Transport trait and worker transport, and streamable http client with those new features. (#167)
- add oauth2 support (#130)
- remove un-used tower.rs (#125)
- update calculator example description (#115)
- fix the url (#120)
- add a simple chat client for example (#119)
- add an overview to
rmcp/src/lib.rs(#116) - (context) test context request handling and refactor for reusable client-server tests (#97)
- (logging) Add tests for logging (#96)
- Adopt Devcontainer for Development Environment (#81)
- fix typos (#79)
- format and fix typo (#72)
- add documentation generation job (#59)
- add test with js server (#65)
- fmt the project (#54)
- (sse_server) separate router and server startup (#52)
- fix broken link (#53)
- fix the branch name for git dependency (#46)
- Move whole rmcp crate to official rust sdk (#44)
- Initial commit
-
0.1.524 Mar 2025Nothing published for this version
-
0.1.421 Mar 2025Nothing published for this version
-
0.1.320 Mar 2025Nothing published for this version
-
0.1.218 Mar 2025Nothing published for this version