ruby-sdk/test/mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Koichi ITO cf1d578433 Return 404 for invalid session ID in handle_regular_request
## Motivation and Context

The MCP specification requires that when a server receives a request containing
a session ID that is no longer valid, it MUST respond with HTTP 404 Not Found.
The `handle_get` path already returned 404 correctly, but `handle_regular_request`
(the POST path) was returning 400 "Invalid session ID" instead.

Ref: https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management

> The server MAY terminate the session at any time, after which it MUST respond
> to requests containing that session ID with HTTP 404 Not Found.

## How Has This Been Tested?

Added a test for POST requests with an invalid session ID, verifying that the
response is 404 with "Session not found" error message. All existing tests pass.

## Breaking Change

POST requests with an invalid session ID now return HTTP 404 "Session not found"
instead of HTTP 400 "Invalid session ID". Clients that match on the 400 status
code or the old error message will need to be updated.

However, this change is considered a bug fix because it brings the behavior into compliance with
the MCP specification.
2026-03-17 02:29:30 +09:00
..
client Add Accept header validation 2026-01-07 14:55:19 +09:00
resource Fix Resource::Contents#to_h to use correct property names per MCP spec 2026-02-19 13:50:10 +09:00
server/transports Return 404 for invalid session ID in handle_regular_request 2026-03-17 02:29:30 +09:00
tool Merge pull request #237 from koic/replace_assert_empty_with_assert_equal_using_explicit_literals 2026-03-03 01:05:16 +09:00
annotations_test.rb Replace assert_empty with assert_equal using explicit literals 2026-02-24 16:09:34 +09:00
client_test.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
configuration_test.rb Merge pull request #192 from koic/add_missing_assertion 2025-12-25 00:33:12 +09:00
content_test.rb Add Content::EmbeddedResource class for embedded resource content type 2026-03-02 01:33:05 +09:00
icon_test.rb Replace assert_empty with assert_equal using explicit literals 2026-02-24 16:09:34 +09:00
instrumentation_test.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
logging_message_notification_test.rb Add logging support 2026-01-26 22:23:46 +09:00
methods_test.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
progress_test.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
prompt_test.rb Fix Prompt#validate_arguments! crash when arguments are nil 2026-03-01 17:21:41 +09:00
resource_template_test.rb Omit icons from responses when empty or nil 2026-01-12 09:46:45 +09:00
resource_test.rb Omit icons from responses when empty or nil 2026-01-12 09:46:45 +09:00
server_context_test.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
server_notification_test.rb Add logging support 2026-01-26 22:23:46 +09:00
server_progress_test.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
server_test.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
string_utils_test.rb Fix ReDoS vulnerability in StringUtils#underscore 2026-01-09 01:14:52 +09:00
tool_test.rb Allow $ref in Tool::Schema for protocol version 2025-11-25 2026-02-27 14:33:36 +09:00
transport_test.rb Remove redundant require statements 2025-08-02 00:57:31 +09:00