diff --git a/lib/mcp/tool/input_schema.rb b/lib/mcp/tool/input_schema.rb index b56b640..b0c7cdf 100644 --- a/lib/mcp/tool/input_schema.rb +++ b/lib/mcp/tool/input_schema.rb @@ -16,7 +16,9 @@ module MCP 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 791f955..5aad895 100644 --- a/test/mcp/tool/input_schema_test.rb +++ b/test/mcp/tool/input_schema_test.rb @@ -40,6 +40,12 @@ module MCP 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" }))