Set default protocol version to the latest specification

Currently, MCP has three versions: 2024-11-05, 2025-03-26, and 2025-06-18.

- https://modelcontextprotocol.io/specification/2024-11-05/basic/transports (stdio and HTTP with SSE)
- https://modelcontextprotocol.io/specification/2025-03-26/basic/transports (stdio and Streamable HTTP)
- https://modelcontextprotocol.io/specification/2025-06-18/basic/transports (stdio and Streamable HTTP)

The newer specification supports stdio and Streamable HTTP as transport mechanisms.
Only the oldest version, 2024-11-05, supports stdin and HTTP with SSE,
but that version is now considered legacy.

Given the current behavior of the Ruby SDK, it likely makes more sense to set
the default protocol version to the latest one, 2025-06-18, rather than the oldest, 2024-11-05.

Ideally, the implementation should adjust its behavior based on the version,
but this PR is limited to updating the default protocol version only.
This commit is contained in:
Koichi ITO 2025-07-20 16:11:08 +09:00
commit 2b36bf6b2d
4 changed files with 6 additions and 6 deletions

View file

@ -148,7 +148,7 @@ server.notify_tools_list_changed()
#### Rails Controller
When added to a Rails controller on a route that handles POST requests, your server will be compliant with non-streaming
[Streamable HTTP](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) transport
[Streamable HTTP](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http) transport
requests.
You can use the `Server#handle_json` method to handle requests.
@ -340,7 +340,7 @@ MCP::Server.protocol_version = nil
If an invalid `protocol_version` value is set, an `ArgumentError` is raised.
Be sure to check the [MCP spec](https://modelcontextprotocol.io/specification/2025-03-26) for the protocol version to understand the supported features for the version being set.
Be sure to check the [MCP spec](https://modelcontextprotocol.io/specification) for the protocol version to understand the supported features for the version being set.
### Exception Reporting

View file

@ -2,8 +2,8 @@
module MCP
class Configuration
DEFAULT_PROTOCOL_VERSION = "2024-11-05"
SUPPORTED_PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", DEFAULT_PROTOCOL_VERSION]
DEFAULT_PROTOCOL_VERSION = "2025-06-18"
SUPPORTED_PROTOCOL_VERSIONS = [DEFAULT_PROTOCOL_VERSION, "2025-03-26", "2024-11-05"]
attr_writer :exception_reporter, :instrumentation_callback, :protocol_version, :validate_tool_call_arguments

View file

@ -84,7 +84,7 @@ module MCP
body = JSON.parse(response[2][0])
assert_equal "2.0", body["jsonrpc"]
assert_equal "123", body["id"]
assert_equal "2024-11-05", body["result"]["protocolVersion"]
assert_equal "2025-06-18", body["result"]["protocolVersion"]
end
test "handles GET request with valid session ID" do

View file

@ -114,7 +114,7 @@ module MCP
jsonrpc: "2.0",
id: 1,
result: {
protocolVersion: "2024-11-05",
protocolVersion: "2025-06-18",
capabilities: {
prompts: { listChanged: true },
resources: { listChanged: true },