ruby-sdk/lib/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
prompt Support Ruby 2.7 - Ruby 3.1 2026-01-06 10:38:56 +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 Return 404 for invalid session ID in handle_regular_request 2026-03-17 02:29:30 +09:00
tool Allow $ref in Tool::Schema for protocol version 2025-11-25 2026-02-27 14:33:36 +09:00
transports Add a migration path for Server::Transports::StdioTransport 2025-06-10 16:27:22 +09:00
annotations.rb Extract MCP::Annotations into a dedicated file 2026-02-03 15:38:04 +09:00
client.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
configuration.rb Support Ruby 2.7 - Ruby 3.1 2026-01-06 10:38:56 +09:00
content.rb Add Content::EmbeddedResource class for embedded resource content type 2026-03-02 01:33:05 +09:00
icon.rb Support icons parameter 2025-12-30 05:35:22 +09:00
instrumentation.rb Support Ruby 2.7 - Ruby 3.1 2026-01-06 10:38:56 +09:00
logging_message_notification.rb logging_message_notification: Remove unused require 2026-02-05 16:05:08 -05:00
methods.rb Add Elicitation skeleton 2025-11-21 02:42:20 +09:00
progress.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
prompt.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
resource.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
resource_template.rb Omit icons from responses when empty or nil 2026-01-12 09:46:45 +09:00
server.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
server_context.rb Support progress notifications per MCP specification 2026-03-10 01:49:09 +09:00
string_utils.rb Fix ReDoS vulnerability in StringUtils#underscore 2026-01-09 01:14:52 +09:00
tool.rb Use autoload to defer loading of unused subsystems 2026-03-12 14:08:27 +09:00
transport.rb Addressing feedback 2025-06-11 13:44:54 -07:00
version.rb Release 0.8.0 2026-03-03 01:19:53 +09:00