rust-sdk/crates/rmcp/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
camillelawrence 397d416fdc
feat: route SEP-2260 associated server requests to the originating SSE stream (#1029)
* feat: implement SEP-2260 require server requests to associate with client requests

* feat(service): attach originating request id to in-handler outbound requests (SEP-2260)

Reuses the ORIGINATING_REQUEST task-local from #1027; the marker rides
the request's non-serialized Extensions so the streamable HTTP server
can route associated requests to the originating SSE stream.

* feat(transport): route associated server requests to originating SSE stream (SEP-2260)

* test: end-to-end SEP-2260 stream routing over streamable HTTP

* test: register SEP-2260 routing test with required-features; drop dead list_tools

* docs: document SEP-2260 association requirement and stream routing

* docs: fix redundant explicit link on OriginatingRequestId

* docs: note marker is role-agnostic; add reason to deprecated expect

Review follow-ups: the OriginatingRequestId rustdoc now states the marker
is attached for both roles with only the server transport reading it, and
the test's deprecation suppression carries a reason per house style.

* docs: condense inline comments to repo convention

Trims multi-line inline comments added in this branch down to the terse
one-to-two-line style used elsewhere in the codebase, keeping only the
non-obvious rationale (spec references, fallback invariant, version choice).

* docs: condense SEP-2260 rustdoc sections

Tightens the duplicated per-method association section from eleven lines
to five, and trims the marker and SessionManager docs to the same
information in fewer words.

* docs: single-source SEP-2260 caller requirements on OriginatingRequestId

* feat(service): reject unassociated server-to-client requests on the client (SEP-2260)

Implements the client receive-side of SEP-2260: restricted server
requests (sampling/createMessage, roots/list, elicitation/create)
received while the client has no outbound request in flight are
answered with -32602 invalid params instead of being dispatched to the
handler. Gated on negotiated protocol >= 2026-07-28; ping is exempt.

With a request in flight we cannot tell which one the server request
belongs to (SEP-2260 defines no wire field), so this is a deliberate
under-approximation of the spec's SHOULD; exact stream-based
enforcement for streamable HTTP needs receive-side provenance plumbing
and is left as a follow-up.

---------

Co-authored-by: Alex Hancock <alexhancock@block.xyz>
2026-07-23 13:12:20 -04:00
..
common feat: deprecate roots/sampling/logging types (#923) 2026-06-25 21:11:59 -04:00
test_deserialization fix(tasks): expose execution.taskSupport on tools (#635) 2026-02-03 19:17:36 -05:00
test_list_tools_result feat!: add MRTR model types (SEP-2322) (#915) 2026-07-08 14:03:33 -04:00
test_message_schema feat: Implement SEP-2663 Tasks Extension (#1020) 2026-07-22 14:16:52 -04:00
test_with_js refactor: provide http server as tower service (#228) 2025-05-28 19:21:40 +08:00
test_with_python feat: Add prompt support (#351) 2025-08-21 11:22:19 +08:00
test_cache_hints.rs feat!: implement SEP-2549 cache hints (#889) 2026-07-10 13:54:18 -04:00
test_cancelled_response.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_client_credentials.rs fix(auth): validate discovered metadata issuer (#996) 2026-07-16 16:55:11 -04:00
test_client_initialization.rs fix: accept stringified numeric response IDs (#1021) 2026-07-21 16:01:22 -04:00
test_client_lifecycle_modes.rs fix: accept stringified numeric response IDs (#1021) 2026-07-21 16:01:22 -04:00
test_close_connection.rs feat: add local feature for !Send tool handler support (#740) 2026-03-11 17:22:56 -04:00
test_completion.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_complex_schema.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_custom_headers.rs feat: standardize resource-not-found error code (SEP-2164) (#899) 2026-06-16 21:55:25 -04:00
test_custom_request.rs feat: add local feature for !Send tool handler support (#740) 2026-03-11 17:22:56 -04:00
test_deserialization.rs feat: Implement SEP-2663 Tasks Extension (#1020) 2026-07-22 14:16:52 -04:00
test_discover_http_client_startup.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_elicitation.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_embedded_resource_meta.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_handler_wrappers.rs chore: add #[non_exhaustive] and mutation methods to improve compatibility (#715) 2026-03-03 10:38:01 -05:00
test_inflight_response_drain.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -04:00
test_json_schema_detection.rs feat: relax outputSchema to accept non-object JSON Schema types (SEP-2106) (#895) 2026-07-08 14:19:28 -04:00
test_list_tools_result.rs fix: strip and validate tool outputSchema and inputSchema (#860) 2026-06-02 12:01:33 -04:00
test_logging.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_message_protocol.rs feat: deprecate roots/sampling/logging types (#923) 2026-06-25 21:11:59 -04:00
test_message_schema.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_meta_helpers.rs feat: add modern client lifecycle modes (SEP-2575) (#995) 2026-07-16 17:12:16 -04:00
test_mrtr_behavior.rs feat: add subscription listen streams (SEP-2575) (#1000) 2026-07-21 09:53:04 -04:00
test_notification.rs feat: add subscription listen streams (SEP-2575) (#1000) 2026-07-21 09:53:04 -04:00
test_progress_subscriber.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_prompt_handler.rs fix: fill missing fully qualified syntax in prompt_handler macros (#866) 2026-06-26 12:38:17 -04:00
test_prompt_macro_annotations.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_prompt_macros.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -04:00
test_prompt_routers.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -04:00
test_protocol_version_negotiation.rs fix: negotiate protocol version in handler (#930) 2026-06-29 13:29:06 -04:00
test_request_timeout_progress.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_resource_link.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_resource_link_integration.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_resource_not_found_version.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_result_type_wire.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_sampling.rs feat!: relax tool result structuredContent type (SEP-2106) (#933) 2026-07-08 14:14:07 -04:00
test_sep_2260_request_association.rs feat: route SEP-2260 associated server requests to the originating SSE stream (#1029) 2026-07-23 13:12:20 -04:00
test_sep_2260_stream_routing.rs feat: route SEP-2260 associated server requests to the originating SSE stream (#1029) 2026-07-23 13:12:20 -04:00
test_server_discover.rs feat!: add server discovery and negotiation (SEP-2575) (#973) 2026-07-16 13:47:30 -04:00
test_server_discover_client.rs feat!: add server discovery and negotiation (SEP-2575) (#973) 2026-07-16 13:47:30 -04:00
test_server_discover_http.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_server_initialization.rs fix: update peer info on duplicate initialize (#862) 2026-06-10 15:42:09 -04:00
test_sse_concurrent_streams.rs feat!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_stateless_protocol_version.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_stateless_server_requests.rs feat: add modern client lifecycle modes (SEP-2575) (#995) 2026-07-16 17:12:16 -04:00
test_stdio_response_concurrency.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_streamable_http_4xx_error_body.rs fix(rmcp): surface JSON-RPC error bodies on HTTP 4xx responses (#748) 2026-03-17 09:27:45 -04:00
test_streamable_http_connection_reuse.rs fix(http): drain SSE stream for connection reuse (#790) 2026-04-13 16:33:30 -04:00
test_streamable_http_disconnect_cancel.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_streamable_http_empty_2xx_notification.rs fix: accept 200 with empty body in response to notifications in addition to 202 (#849) 2026-05-14 14:52:11 -04:00
test_streamable_http_event_store.rs feat!: add distributed SSE event store (#1024) 2026-07-23 11:02:27 -04:00
test_streamable_http_idle_timeout_log.rs Fix/issue 817 idle timeout log level (#824) 2026-05-04 20:14:06 -04:00
test_streamable_http_init_timeout.rs fix: add init_timeout for streamable-http sessions (#811) 2026-05-01 09:20:50 -04:00
test_streamable_http_json_response.rs fix: .with_stateful_mode -> .with_legacy_session_mode (#1015) 2026-07-20 17:23:22 -04:00
test_streamable_http_priming.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_streamable_http_protocol_version.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_streamable_http_session_store.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_streamable_http_stale_session.rs feat!: add distributed SSE event store (#1024) 2026-07-23 11:02:27 -04:00
test_streamable_http_standard_headers.rs fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
test_structured_output.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_subscriptions.rs feat: add subscription listen streams (SEP-2575) (#1000) 2026-07-21 09:53:04 -04:00
test_subscriptions_model.rs feat: add subscription listen streams (SEP-2575) (#1000) 2026-07-21 09:53:04 -04:00
test_subscriptions_streamable_http.rs feat: add subscription listen streams (SEP-2575) (#1000) 2026-07-21 09:53:04 -04:00
test_task.rs feat: Implement SEP-2663 Tasks Extension (#1020) 2026-07-22 14:16:52 -04:00
test_tool_builder_methods.rs feat: relax outputSchema to accept non-object JSON Schema types (SEP-2106) (#895) 2026-07-08 14:19:28 -04:00
test_tool_disable_notification.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_tool_handler.rs Move whole rmcp crate to offcial rust sdk (#44) 2025-03-27 17:33:41 -04:00
test_tool_macro_annotations.rs feat(macros): auto-generate get_info and default router (#785) 2026-04-08 15:06:26 -04:00
test_tool_macros.rs feat: Implement SEP-2663 Tasks Extension (#1020) 2026-07-22 14:16:52 -04:00
test_tool_result_meta.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_tool_routers.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -04:00
test_trace_context.rs feat!: align metadata models with draft schema (#993) 2026-07-15 08:58:46 -04:00
test_unix_socket_transport.rs feat(transport): add Unix domain socket client for streamable HTTP (#749) 2026-03-24 09:50:32 -04:00
test_with_js.rs test: serialize JavaScript dependency install (#972) 2026-07-14 14:32:56 -04:00
test_with_python.rs feat: add local feature for !Send tool handler support (#740) 2026-03-11 17:22:56 -04:00