rust-sdk/crates/rmcp/CHANGELOG.md
github-actions[bot] fd7811fdaa
chore: release v3.4.0 (#1258)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-15 11:37:39 -04:00

62 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

3.4.0 - 2026-09-15

Added

  • (model) add ServerConfig and ClientConfig (#1266)

Fixed

  • (rmcp) use ServerConfig in cancellation test (#1273)
  • (rmcp) route peer cancellation by lifecycle (#1262)
  • run first pre-init request in service loop (#1263)
  • (auth) let url origin decide prm discovery (#1264)
  • (model) deprecate ServerInfo and ClientInfo aliases (#1156)
  • (auth) ignore non-metadata JSON when probing for protected resource metadata (#1204)
  • do not treat malformed JSON 200 as Accepted for requests (#1208)
  • (streamable-http-server) map handler-generated HeaderMismatch to HTTP 400 (#1259)
  • (http) enforce Origin validation semantics (#1192)

3.3.0 - 2026-09-10

Added

  • add ServerHandler::negotiate_initialize (#1247)
  • (macros) reject empty tool_router (#1233)
  • (auth) add enterprise refresh-token and ID-JAG exchanges (#1234)

Fixed

  • (sse) saturate exponential reconnect backoff to avoid overflow panic (#1231)
  • resolve clippy warnings across workspace (#1195)
  • (auth) unify refresh checks and error handling (#1236)

Other

  • (deps) update process-wrap requirement from 9.0 to 10.0 (#1229)

3.2.0 - 2026-08-31

Added

  • (auth) coordinate OAuth refreshes through credential stores (#1232)
  • add request-state key rotation (#1128)

Fixed

  • keep initialize on legacy protocol versions (#1228)
  • (transport) fall back after sessionless HTTP discover rejections (#1211)
  • allow concurrent streamable http requests (#1186)

3.1.4 - 2026-08-18

Fixed

  • (rmcp) preserve elicitation requestedSchema $schema dialect (#1176)
  • harden signing key handling (#1166)
  • report pre-init metadata errors (#1160)

3.1.3 - 2026-08-17

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.2 - 2026-08-07

Fixed

  • (auth) map 401/403 challenges on the SSE GET stream (#1152)
  • (sse) loop instead of recursing when skipping SSE events (#1146)
  • (auth) preserve issuer trailing slash during discovery (#1145)

3.1.1 - 2026-08-05

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.0 - 2026-07-31

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

  • document the ping utility with examples (#1106)
  • complete Tier 1 feature docs and finalize roadmap (#1101)
  • (conformance) meeting requirements for tier 1 (#1087)

3.0.1 - 2026-07-29

Fixed

  • (auth) use discovered resource for token refresh (#1084)
  • return header mismatch for missing protocol header (#1083)
  • negotiate stateless initialize versions (#1080)
  • stamp server info on graceful subscription results (#1078)

3.0.0 - 2026-07-28

Fixed

  • recognize 2026 MCP methods (#1076)

3.0.0-beta.5 - 2026-07-28

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

  • prepare for stable 3.0 release (#1073)
  • RFC 9728 resource is used instead of base url when possible (#962)
  • [breaking] remove deprecated v3 APIs (#1066)

3.0.0-beta.4 - 2026-07-28

Fixed

  • accept namespaced discovery server information (#1044)

Other

  • (deps) update base64 requirement from 0.22 to 0.23 (#1059)
  • (deps) update jsonwebtoken requirement from 10 to 11 (#1058)

3.0.0-beta.3 - 2026-07-27

Fixed

  • [breaking] reject missing issuer in authorization server metadata by default (#1054)
  • default to allowing missing issuer (#1051)

Other

  • make oauth discovery reactive (#1052)

3.0.0-beta.2 - 2026-07-24

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.1 - 2026-07-23

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_mode to legacy_session_mode (and the builder with_stateful_mode to with_legacy_session_mode) to clarify that the option only affects legacy protocol versions (< 2026-07-28); per SEP-2567 the 2026-07-28 draft version is always served statelessly (#999)

Fixed

  • use the authorization server issuer as the default private_key_jwt audience

2.2.0 - 2026-07-08

Added

  • reject auth servers lacking S256 PKCE support (#955)

Fixed

  • pass client conformance suite (#960)
  • don't respond to cancelled requests (#957)
  • fail orphaned streamable HTTP responses on reinit (#914)
  • address 2025-11-25 conformance audit findings (#951)

2.1.0 - 2026-07-02

Added

  • add SEP-414 trace context meta accessors (#910)
  • add SEP-2575 meta helpers (#942)

Fixed

  • (transport) make AsyncRwTransport::receive cancel-safe (#941) (#947)
  • (auth) preserve refresh_token when refresh response omits it (#949)
  • block redirect header leaks (#936)
  • don't respond to unparsable messages (#940)
  • negotiate protocol version in handler (#930)

2.0.0 - 2026-06-27

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

  • consolidate repeated rmcp tests (#931)
  • Revert "feat!: relax tool result structuredContent type (#919)" (#932)
  • align README examples with v2 model API (#928)

1.8.0 - 2026-06-22

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

  • 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)

1.7.0 - 2026-05-13

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)

1.6.0 - 2026-05-01

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)

1.5.0 - 2026-04-16

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.0 - 2026-04-09

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)

1.3.0 - 2026-03-24

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.0 - 2026-03-11

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.1 - 2026-03-09

Fixed

  • accept logging/setLevel and ping before initialized notification (#730)

1.1.0 - 2026-03-04

Added

  • implement OAuth 2.0 Client Credentials flow (#707)

Other

  • add McpMux to Built with rmcp section (#717)

1.0.0 - 2026-03-03

Fixed

  • (auth) pass WWW-Authenticate scopes to DCR registration request (#705)
  • api ergonomics follow-up (#720)
  • (streamable-http) map stale session 401 to status-aware error (#709)

1.0.0-alpha - 2026-03-03

Added

  • docs update (#718)
  • (auth) [breaking] support returning extra fields from token exchange (#700)

Fixed

  • downgrade logging of message to TRACE to avoid spamming logs (#699)

Other

  • add #[non_exhaustive] and mutation methods to improve compatibility (#715)

0.17.0 - 2026-02-27

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

  • add prose documentation for core features to meet conformance (#702)
  • Fix/sse channel replacement conflict (#682)
  • document session management for streamable HTTP transport (#674)

0.16.0 - 2026-02-17

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

  • upgrade reqwest to 0.13.2 (#669)
  • include LICENSE in final crate tarball (#657)
  • (deps) update rand requirement from 0.9 to 0.10 (#650)
  • remove unused axum dependency from server-side-http feature (#642)
  • 11-25-2025 compliant Auth (#651)
  • add rudof-mcp to MCP servers list (#645)

0.15.0 - 2026-02-10

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.taskSupport on tools (#635)
  • (tasks) correct enum variant ordering for deserialization (#634)

Other

  • Add optional description field to Implementation struct (#649)
  • Implement SEP-1577: Sampling With Tools (#628)

0.14.0 - 2026-01-23

Fixed

  • (tasks) #626 model task capabilities correctly (#627)
  • don't treat non-success HTTP codes as transport errors (#618)

Other

  • show README content on docs.rs (#583)
  • added hyper-mcp to the list of built with rmcp (#621)
  • Implement SEP-1319: Decouple Request Payload from RPC Methods (#617)

0.13.0 - 2026-01-15

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.0 - 2025-12-18

Added

  • add support for custom requests (#590)
  • add support for custom server notifications (#580)

Fixed

  • update process-wrap to v9.0 (#586)
  • (oauth) rfc8414 should judement the response_types (#485)

Other

  • Add SEP-991 (CIMD) support for URL-based client IDs (#570)
  • merge cached_schema_for_type into schema_for_type (#581)
  • Add NexusCore MCP to project list (#573)

0.11.0 - 2025-12-08

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

  • Implements outputSchema validation (#566)
  • add video-transcriber-mcp-rs to projects built with rmcp (#565)

0.10.0 - 2025-12-01

Added

  • add support for custom client notifications (#556)

Other

  • replace paste with pastey for macros feature (#564)

0.9.1 - 2025-11-24

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.0 - 2025-11-17

Added

  • (auth) implement CredentialStore trait (#542)
  • (tool) add _meta to tool definitions (#534)

0.8.5 - 2025-11-05

Fixed

  • (oauth) respect oauth-protected-resource discovery (#511)

0.8.4 - 2025-11-04

Fixed

  • (oauth) fix oauth credential refresh (#509)
  • do not manually construct fallback authorization metadata (#507)
  • (doc) add stakpak-agent to Built with rmcp section (#500)

0.8.3 - 2025-10-22

Fixed

  • accept 204 in addition to 202 on initialize (#497)

0.8.2 - 2025-10-21

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

  • Streamable HTTP: drain SSE frames until the initialize response, ignoring early notifications to prevent handshake timeouts (#467)
  • bump crate version in README.md (#471)

0.8.1 - 2025-10-07

Fixed

  • (oauth) pass bearer token to all streamable http requests (#476)
  • fix spellcheck on intentional typo in CHANGELOG (#470)

0.8.0 - 2025-10-04

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.0 - 2025-09-24

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

  • (root) Add Terminator to Built with rmcp section (#437)
  • Non-empty paths in OAuth2 Authorization Server Metadata URLs (#441)

0.6.4 - 2025-09-11

Added

  • (SEP-973) add support for icons and websiteUrl across relevant types (#432)
  • implement context-aware completion (MCP 2025-06-18) (#396)
  • add title field 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

  • Skip notification in initialization handshake (#421)
  • add nvim-mcp project built by rmcp (#422)

0.6.3 - 2025-09-04

Fixed

  • change JSON-RPC request ID type from u32 to i64 (#416)

0.6.2 - 2025-09-04

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

  • Spec conformance: meta support and spec updates (#415)
  • add the rmcp-openapi and rmcp-actix-web related projects (#406)

0.6.1 - 2025-08-29

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.0 - 2025-08-19

Added

  • Add MCP Elicitation support (#332)
  • keep internal error in worker's quit reason (#372)

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

  • add related project rustfs-mcp (#378)
  • (streamable) add document for extracting http info (#373)

0.5.0 - 2025-08-07

Fixed

  • correct numeric types in progress notifications (#361)

0.4.1 - 2025-08-07

Fixed

  • (rmcp) allow both content and structured content (#359)

0.4.0 - 2025-08-05

Added

  • [breaking] Add support for Tool.outputSchema and CallToolResult.structuredContent (#316)

Fixed

  • don't wrap errors in streamable http auth client (#353)
  • (prompt) remove unused code (#343)

0.3.2 - 2025-07-30

Fixed

  • (capabilities) do not serialize None as null for list_changed (#341)
  • (Transport) close oneshot transport on error (#340)
  • (oauth) expose OAuthTokenResponse publicly (#335)

0.3.1 - 2025-07-29

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.0 - 2025-07-15

Added

  • unified error type (#308)
  • (transport) add builder & expose child stderr (#305)

Other

  • (deps) update schemars requirement from 0.8 to 1.0 (#258)
  • (rmcp) bump rmcp-macros version to match (#311)
  • fix packages used for server example (#309)

0.2.1 - 2025-07-03

Other

  • (docs) Minor README updates (#301)

0.2.0 - 2025-07-02

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