From 4dc2a8eb4a69d6a8890be175ab6f94c1e74604e9 Mon Sep 17 00:00:00 2001 From: Koichi ITO Date: Mon, 16 Feb 2026 16:08:16 +0900 Subject: [PATCH] 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. --- lib/mcp/server.rb | 2 ++ test/mcp/server_test.rb | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/mcp/server.rb b/lib/mcp/server.rb index 122cf99..d3cef70 100644 --- a/lib/mcp/server.rb +++ b/lib/mcp/server.rb @@ -362,6 +362,8 @@ def configure_logging_level(request) end @logging_message_notification = logging_message_notification + + {} end def list_tools(request) diff --git a/test/mcp/server_test.rb b/test/mcp/server_test.rb index 37eeb77..3a059f0 100644 --- a/test/mcp/server_test.rb +++ b/test/mcp/server_test.rb @@ -810,6 +810,24 @@ class Example < Tool 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],