From 271ccb43d0e369e4da6a150292ed096ba9ed87c8 Mon Sep 17 00:00:00 2001 From: Jens Kraemer Date: Fri, 11 Jul 2025 11:27:59 +0200 Subject: [PATCH] fixes input schema validation for schemas without required fields --- lib/mcp/tool/input_schema.rb | 4 +++- test/mcp/tool/input_schema_test.rb | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/mcp/tool/input_schema.rb b/lib/mcp/tool/input_schema.rb index b56b640e..b0c7cdff 100644 --- a/lib/mcp/tool/input_schema.rb +++ b/lib/mcp/tool/input_schema.rb @@ -16,7 +16,9 @@ def initialize(properties: {}, required: []) end def to_h - { type: "object", properties:, required: } + { type: "object", properties: }.tap do |hsh| + hsh[:required] = required if required.any? + end end def missing_required_arguments?(arguments) diff --git a/test/mcp/tool/input_schema_test.rb b/test/mcp/tool/input_schema_test.rb index 791f955e..5aad8951 100644 --- a/test/mcp/tool/input_schema_test.rb +++ b/test/mcp/tool/input_schema_test.rb @@ -40,6 +40,12 @@ class InputSchemaTest < ActiveSupport::TestCase end end + test "schema without required arguments is valid" do + assert_nothing_raised do + InputSchema.new(properties: { foo: { type: "string" } }) + end + end + test "validate arguments with valid data" do schema = InputSchema.new(properties: { foo: { type: "string" } }, required: [:foo]) assert_nil(schema.validate_arguments({ foo: "bar" }))