Merge pull request #190 from koic/avoid_draft_protocol_version
Default to the latest stable protocol version
This commit is contained in:
commit
baeb75c8d8
5 changed files with 13 additions and 13 deletions
|
|
@ -349,7 +349,8 @@ configuration = MCP::Configuration.new(protocol_version: "2024-11-05")
|
||||||
MCP::Server.new(name: "test_server", configuration: configuration)
|
MCP::Server.new(name: "test_server", configuration: configuration)
|
||||||
```
|
```
|
||||||
|
|
||||||
If no protocol version is specified, the [Draft version](https://modelcontextprotocol.io/specification/draft) will be applied by default.
|
If no protocol version is specified, the latest stable version will be applied by default.
|
||||||
|
The latest stable version includes new features from the [draft version](https://modelcontextprotocol.io/specification/draft).
|
||||||
|
|
||||||
This will make all new server instances use the specified protocol version instead of the default version. The protocol version can be reset to the default by setting it to `nil`:
|
This will make all new server instances use the specified protocol version instead of the default version. The protocol version can be reset to the default by setting it to `nil`:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,8 @@
|
||||||
|
|
||||||
module MCP
|
module MCP
|
||||||
class Configuration
|
class Configuration
|
||||||
# DRAFT-2025-v3 is the latest draft protocol version:
|
LATEST_STABLE_PROTOCOL_VERSION = "2025-06-18"
|
||||||
# https://github.com/modelcontextprotocol/modelcontextprotocol/blob/14ec41c/schema/draft/schema.ts#L15
|
SUPPORTED_STABLE_PROTOCOL_VERSIONS = [LATEST_STABLE_PROTOCOL_VERSION, "2025-03-26", "2024-11-05"]
|
||||||
DRAFT_PROTOCOL_VERSION = "DRAFT-2025-v3"
|
|
||||||
SUPPORTED_STABLE_PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"]
|
|
||||||
|
|
||||||
attr_writer :exception_reporter, :instrumentation_callback
|
attr_writer :exception_reporter, :instrumentation_callback
|
||||||
|
|
||||||
|
|
@ -35,7 +33,7 @@ module MCP
|
||||||
end
|
end
|
||||||
|
|
||||||
def protocol_version
|
def protocol_version
|
||||||
@protocol_version || DRAFT_PROTOCOL_VERSION
|
@protocol_version || LATEST_STABLE_PROTOCOL_VERSION
|
||||||
end
|
end
|
||||||
|
|
||||||
def protocol_version?
|
def protocol_version?
|
||||||
|
|
|
||||||
|
|
@ -38,18 +38,19 @@ module MCP
|
||||||
# https://github.com/modelcontextprotocol/modelcontextprotocol/blob/14ec41c/schema/draft/schema.ts#L15
|
# https://github.com/modelcontextprotocol/modelcontextprotocol/blob/14ec41c/schema/draft/schema.ts#L15
|
||||||
test "initializes with default protocol version" do
|
test "initializes with default protocol version" do
|
||||||
config = Configuration.new
|
config = Configuration.new
|
||||||
assert_equal Configuration::DRAFT_PROTOCOL_VERSION, config.protocol_version
|
assert_equal Configuration::LATEST_STABLE_PROTOCOL_VERSION, config.protocol_version
|
||||||
end
|
end
|
||||||
|
|
||||||
test "uses the draft protocol version when protocol_version is set to nil" do
|
test "uses the draft protocol version when protocol_version is set to nil" do
|
||||||
config = Configuration.new(protocol_version: nil)
|
config = Configuration.new(protocol_version: nil)
|
||||||
assert_equal Configuration::DRAFT_PROTOCOL_VERSION, config.protocol_version
|
assert_equal Configuration::LATEST_STABLE_PROTOCOL_VERSION, config.protocol_version
|
||||||
end
|
end
|
||||||
|
|
||||||
test "raises ArgumentError when setting the draft protocol version" do
|
test "raises ArgumentError when setting the draft protocol version" do
|
||||||
exception = assert_raises(ArgumentError) do
|
exception = assert_raises(ArgumentError) do
|
||||||
# To use the draft version externally, either omit `protocol_version` or set it to nil.
|
# DRAFT-2025-v3 is the latest draft protocol version:
|
||||||
Configuration.new(protocol_version: Configuration::DRAFT_PROTOCOL_VERSION)
|
# https://github.com/modelcontextprotocol/modelcontextprotocol/blob/14ec41c/schema/draft/schema.ts#L15
|
||||||
|
Configuration.new(protocol_version: "DRAFT-2025-v3")
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_equal("protocol_version must be 2025-06-18, 2025-03-26, or 2024-11-05", exception.message)
|
assert_equal("protocol_version must be 2025-06-18, 2025-03-26, or 2024-11-05", exception.message)
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ module MCP
|
||||||
body = JSON.parse(response[2][0])
|
body = JSON.parse(response[2][0])
|
||||||
assert_equal "2.0", body["jsonrpc"]
|
assert_equal "2.0", body["jsonrpc"]
|
||||||
assert_equal "123", body["id"]
|
assert_equal "123", body["id"]
|
||||||
assert_equal Configuration::DRAFT_PROTOCOL_VERSION, body["result"]["protocolVersion"]
|
assert_equal Configuration::LATEST_STABLE_PROTOCOL_VERSION, body["result"]["protocolVersion"]
|
||||||
end
|
end
|
||||||
|
|
||||||
test "handles GET request with valid session ID" do
|
test "handles GET request with valid session ID" do
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ module MCP
|
||||||
jsonrpc: "2.0",
|
jsonrpc: "2.0",
|
||||||
id: 1,
|
id: 1,
|
||||||
result: {
|
result: {
|
||||||
protocolVersion: Configuration::DRAFT_PROTOCOL_VERSION,
|
protocolVersion: Configuration::LATEST_STABLE_PROTOCOL_VERSION,
|
||||||
capabilities: {
|
capabilities: {
|
||||||
prompts: { listChanged: true },
|
prompts: { listChanged: true },
|
||||||
resources: { listChanged: true },
|
resources: { listChanged: true },
|
||||||
|
|
@ -776,7 +776,7 @@ module MCP
|
||||||
}
|
}
|
||||||
|
|
||||||
response = @server.handle(request)
|
response = @server.handle(request)
|
||||||
assert_equal Configuration::DRAFT_PROTOCOL_VERSION, response[:result][:protocolVersion]
|
assert_equal Configuration::LATEST_STABLE_PROTOCOL_VERSION, response[:result][:protocolVersion]
|
||||||
end
|
end
|
||||||
|
|
||||||
test "server response does not include title when not configured" do
|
test "server response does not include title when not configured" do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue