Filinto Duran
00bcf13800
fix(model): decode metadata-bearing input-required results affecting mrtr ( #1097 )
...
* fix(model): decode metadata-bearing input-required results
The draft permits every Result, including InputRequiredResult, to carry
_meta and recommends that servers include
io.modelcontextprotocol/serverInfo on every response. It also requires
an InputRequiredResult to contain inputRequests or requestState so the
client knows what to provide or how to resume the request.
ServerResult uses untagged deserialization and attempts CallToolResult
before InputRequiredResult. Because CallToolResult accepts _meta and
defaults missing content to an empty list, it consumed valid
input_required results carrying metadata. Unknown inputRequests and
requestState fields were then discarded, leaving clients without the
information needed to continue.
Reject resultType input_required when deserializing CallToolResult so
Serde proceeds to the InputRequiredResult variant. Add regression
coverage proving that inputRequests, requestState, and serverInfo
metadata are preserved.
Spec:
41d9e938e9/schema/draft/schema.ts (L137-L151)
41d9e938e9/schema/draft/schema.ts (L198-L224)
41d9e938e9/schema/draft/schema.ts (L541-L565)
Signed-off-by: Filinto Duran <1373693+filintod@users.noreply.github.com>
* incorporate feedback - close gap in inputrequired not properly checking that at least one of inputRequest or requestState is present
Signed-off-by: Filinto Duran <1373693+filintod@users.noreply.github.com>
---------
Signed-off-by: Filinto Duran <1373693+filintod@users.noreply.github.com>
2026-07-31 09:23:56 -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_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!: remove server_info from DiscoverResult ( #1065 )
2026-07-28 15:55:40 -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!: omit resultType for legacy protocol sessions ( #1038 )
2026-07-24 10:22:20 -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_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