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" }))