Fix logging/setLevel to return empty hash per MCP specification

This PR fixes `logging/setLevel` to return empty hash per MCP specification.
The MCP specification requires `logging/setLevel` to return an empty result
on success, not nil or the `LoggingMessageNotification` object.

Specification reference:
https://modelcontextprotocol.io/specification/2025-11-25/server/utilities/logging

Fixes #229.
This commit is contained in:
Koichi ITO 2026-02-16 16:08:16 +09:00
commit 4dc2a8eb4a
2 changed files with 20 additions and 0 deletions

View file

@ -362,6 +362,8 @@ module MCP
end
@logging_message_notification = logging_message_notification
{}
end
def list_tools(request)

View file

@ -810,6 +810,24 @@ module MCP
assert_instrumentation_data({ method: "resources/templates/list" })
end
test "#configure_logging_level returns empty hash on success" do
response = @server.handle(
{
jsonrpc: "2.0",
id: 1,
method: "logging/setLevel",
params: {
level: "info",
},
},
)
assert_equal "2.0", response[:jsonrpc]
assert_equal 1, response[:id]
assert_empty(response[:result])
refute response.key?(:error)
end
test "#configure_logging_level returns an error object when invalid log level is provided" do
server = Server.new(
tools: [TestTool],