Jeremy Schoemaker
c345078867
fix(auth): map 401/403 challenges on the SSE GET stream ( #1152 )
...
`post_message_with_max_sse_event_size` turns a 401 or 403 carrying a
`WWW-Authenticate` header into `StreamableHttpError::AuthRequired` /
`InsufficientScope`. `get_stream_with_max_sse_event_size`, in the same file,
handles only 405 and then falls through to `error_for_status()?`, so the same
challenge becomes an opaque `StreamableHttpError::Client`.
That matters because `AuthClient::get_stream` routes through
`call_reacting_to_challenges`, whose whole purpose is to catch `AuthRequired`,
run `try_refresh_or_reauth()`, and retry once. It never sees that variant from
this path, so an expired token on the standalone SSE stream is never refreshed —
the stream just fails, while the identical expiry on `post_message` recovers
silently.
Copies the two blocks verbatim from `post_message` in the same file.
`unix_socket.rs` already does the same thing in its own `get_stream`.
Adds four tests against an axum mock server: a 401 with a challenge maps to
`AuthRequired`, a 403 maps to `InsufficientScope` with the scope extracted, a
401 *without* a challenge is still not `AuthRequired`, and 405 keeps reporting
`ServerDoesNotSupportSse`. The first two fail before this change with
`Err(Client(reqwest::Error { kind: Status(401, None) }))`; the last two pass
either way and exist to catch an over-broad fix.
2026-08-07 15:39:55 -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
fix: stamp server info on graceful subscription results ( #1078 )
2026-07-29 13:34:33 -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_auth_error_classification.rs
feat: classify authorization-required errors ( #1056 )
2026-07-31 09:00:23 -04: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!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -04:00
test_client_lifecycle_modes.rs
fix!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -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
fix(model): decode metadata-bearing input-required results affecting mrtr ( #1097 )
2026-07-31 09:23:56 -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
refactor!: remove deprecated v3 APIs ( #1066 )
2026-07-28 14:01:56 -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_cache_hints.rs
fix: emit cache hints from handler macros ( #1120 )
2026-08-05 10:20:08 -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_local_client_handler.rs
fix: gate client handler bounds for local ( #1068 )
2026-07-28 11:02:32 -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
fix!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -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
fix: expose MRTR state to tool handlers ( #1104 )
2026-08-05 09:55:09 -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: honor supported_protocol_versions when negotiating initialize ( #1093 )
2026-07-30 15:44:37 -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_version.rs
fix!: omit resultType for legacy protocol sessions ( #1038 )
2026-07-24 10:22:20 -04:00
test_result_type_wire.rs
fix: disambiguate input-required results ( #1103 )
2026-08-03 12:54:59 -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_enforcement.rs
feat: SEP-2260 stream-based enforcement of client receive-side request association ( #1055 )
2026-07-29 19:59:47 -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
fix!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -04:00
test_server_discover_client.rs
fix!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -04:00
test_server_discover_http.rs
fix!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -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: honor supported_protocol_versions when negotiating initialize ( #1093 )
2026-07-30 15:44:37 -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_get_stream_auth_challenge.rs
fix(auth): map 401/403 challenges on the SSE GET stream ( #1152 )
2026-08-07 15:39:55 -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
feat: add strict stateless protocol metadata validation ( #1091 )
2026-07-30 16:00:02 -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
fix: stamp server info on graceful subscription results ( #1078 )
2026-07-29 13:34:33 -04:00
test_subscriptions_model.rs
fix: stamp server info on graceful subscription results ( #1078 )
2026-07-29 13:34:33 -04:00
test_subscriptions_streamable_http.rs
fix: stamp server info on graceful subscription results ( #1078 )
2026-07-29 13:34:33 -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