rust-sdk/crates/rmcp/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Amey Pawar bc2c5f3c4a
fix(transport): cancel in-flight request on stateless streamable-HTTP client disconnect (#857) (#967)
A stateless streamable-HTTP request is one-shot (no session, no resumption),
so if the client drops the response before the handler finishes, the request
is terminal and should be cancelled. Previously the handler kept running with
its `RequestContext::ct` never firing, so long-running or destructive tools
could not observe a client disconnect.

Give each stateless request its own cancellation token via
`serve_directly_with_ct` and cancel it when the client disconnects. This covers
both stateless paths: `serve_negotiated_request_directly` (per-request version
negotiation) and the non-negotiated path. In each:

- A disconnect while the handler is still producing its first message cancels
  it. The guard is disarmed once the handler emits anything, so a normal
  response is never cancelled.
- The SSE response stream is wrapped in a guard that cancels the handler if the
  stream is dropped before it ends naturally.
- When a negotiated request replies directly (JSON mode, or a non-OK status),
  the receiver is dropped, so a still-running handler is cancelled rather than
  left emitting into a closed channel. Without this its terminal send fails
  before adding the termination permit and the serve loop parks forever.

Stateful (resumable) mode is intentionally left unchanged: there a disconnect
may be recovered via `Last-Event-ID`, so cancelling on disconnect would break
resumption.

Adds a regression test covering both stateless sub-modes (SSE and JSON).
2026-07-17 09:06:44 -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!: add server discovery and negotiation (SEP-2575) (#973) 2026-07-16 13:47:30 -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: reply -32700 on stdio parse errors instead of closing (#833) 2026-05-07 12:27:15 -04:00
test_client_lifecycle_modes.rs feat: add modern client lifecycle modes (SEP-2575) (#995) 2026-07-16 17:12:16 -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!: align model types with MCP 2025-11-25 spec (#927) 2026-06-24 20:41:13 -04:00
test_discover_http_client_startup.rs feat: add modern client lifecycle modes (SEP-2575) (#995) 2026-07-16 17:12:16 -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 MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_notification.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -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_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 feat!: add server discovery and negotiation (SEP-2575) (#973) 2026-07-16 13:47:30 -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: negotiate protocol version in handler (#930) 2026-06-29 13:29:06 -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(transport): cancel in-flight request on stateless streamable-HTTP client disconnect (#857) (#967) 2026-07-17 09:06:44 -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_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(streamable-http): preserve progress in JSON mode (#990) 2026-07-14 14:46:42 -04:00
test_streamable_http_priming.rs fix: include http_request_id in request-wise priming event IDs (#799) 2026-04-16 12:02:35 -04:00
test_streamable_http_protocol_version.rs fix: prevent streamable HTTP session leak (#934) 2026-06-26 21:09:16 -04:00
test_streamable_http_session_store.rs feat: optional session store (resumabillity support) (#775) 2026-04-21 17:06:18 -04:00
test_streamable_http_stale_session.rs feat: add modern client lifecycle modes (SEP-2575) (#995) 2026-07-16 17:12:16 -04:00
test_streamable_http_standard_headers.rs feat(conformance): add SEP-2243 header validation tool (#997) 2026-07-16 13:11:45 -04:00
test_structured_output.rs feat!: add MRTR behavior support (SEP-2322) (#929) 2026-07-10 12:02:26 -04:00
test_task.rs fix: address 2025-11-25 conformance audit findings (#951) 2026-07-02 22:42:35 -04:00
test_task_support_validation.rs chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -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 chore: consolidate repeated rmcp tests (#931) 2026-06-26 16:15:20 -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