feat: deprecate roots sampling and logging
Warn when Roots, Sampling, or Logging APIs are used with MCP protocol version 2026-07-28 or newer. Add a shared protocol deprecation helper, YARD deprecation notes, and regression tests covering warnings at and after the deprecation threshold and no warnings for older or never-established protocol versions. Closes https://github.com/modelcontextprotocol/ruby-sdk/issues/390 Co-authored-by: Qlaw <noreply@qlaw.quick.shopify.io>
This commit is contained in:
parent
f4d939d349
commit
6a43d3d6fb
1 changed files with 508 additions and 3 deletions
|
|
@ -5,6 +5,7 @@ require "test_helper"
|
|||
module MCP
|
||||
class ServerSamplingTest < ActiveSupport::TestCase
|
||||
include InstrumentationTestHelper
|
||||
include DeprecationWarningTestHelper
|
||||
|
||||
class MockTransport < Transport
|
||||
attr_reader :requests
|
||||
|
|
@ -63,6 +64,30 @@ module MCP
|
|||
assert_equal "Response from LLM", result[:content][:text]
|
||||
end
|
||||
|
||||
test "create_sampling_message warns when session negotiated protocol version is 2026-07-28" do
|
||||
@session.mark_initialized!(protocol_version: "2026-07-28")
|
||||
|
||||
assert_deprecation_warning(/MCP Sampling .*2026-07-28/) do
|
||||
@session.create_sampling_message(
|
||||
related_request_id: "req-1",
|
||||
messages: [{ role: "user", content: { type: "text", text: "Hello" } }],
|
||||
max_tokens: 100,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
test "create_sampling_message does not warn when session negotiated protocol version is older" do
|
||||
@session.mark_initialized!(protocol_version: "2025-11-25")
|
||||
|
||||
assert_no_deprecation_warning do
|
||||
@session.create_sampling_message(
|
||||
related_request_id: "req-1",
|
||||
messages: [{ role: "user", content: { type: "text", text: "Hello" } }],
|
||||
max_tokens: 100,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
test "create_sampling_message sends all optional params" do
|
||||
@session.create_sampling_message(
|
||||
related_request_id: "req-1",
|
||||
|
|
@ -101,6 +126,24 @@ module MCP
|
|||
assert_equal("Client does not support sampling.", error.message)
|
||||
end
|
||||
|
||||
test "create_sampling_message warns when negotiated protocol version is 2026-07-28 and client lacks sampling" do
|
||||
@session.store_client_info(client: { name: "test-client" }, capabilities: {})
|
||||
@session.mark_initialized!(protocol_version: "2026-07-28")
|
||||
|
||||
error = nil
|
||||
assert_deprecation_warning(/MCP Sampling .*2026-07-28/) do
|
||||
error = assert_raises(RuntimeError) do
|
||||
@session.create_sampling_message(
|
||||
related_request_id: "req-1",
|
||||
messages: [{ role: "user", content: { type: "text", text: "Hello" } }],
|
||||
max_tokens: 100,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
assert_equal("Client does not support sampling.", error.message)
|
||||
end
|
||||
|
||||
test "create_sampling_message raises error when tools used but client lacks sampling.tools" do
|
||||
error = assert_raises(RuntimeError) do
|
||||
@session.create_sampling_message(
|
||||
|
|
|
|||
Loading…
Reference in a new issue