From 4c13f6dc0896f67c3169f48648966d99542c6371 Mon Sep 17 00:00:00 2001 From: ramos <50461210+dr03ramos@users.noreply.github.com> Date: Wed, 10 Sep 2025 13:57:55 -0300 Subject: [PATCH] Update metaschema URI format in input_schema.rb and output_schema.rb for cross-compatibility across different OS --- lib/mcp/tool/input_schema.rb | 5 ++++- lib/mcp/tool/output_schema.rb | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/mcp/tool/input_schema.rb b/lib/mcp/tool/input_schema.rb index b542801b..d6885e06 100644 --- a/lib/mcp/tool/input_schema.rb +++ b/lib/mcp/tool/input_schema.rb @@ -50,7 +50,10 @@ def validate_schema! accept_uri: false, accept_file: ->(path) { path.to_s.start_with?(Gem.loaded_specs["json-schema"].full_gem_path) }, ) - metaschema = JSON::Validator.validator_for_name("draft4").metaschema + metaschema_path = Pathname.new(JSON::Validator.validator_for_name("draft4").metaschema) + # Converts metaschema to a file URI for cross-platform compatibility + metaschema_uri = JSON::Util::URI.file_uri(metaschema_path.expand_path.cleanpath.to_s.tr("\\", "/")) + metaschema = metaschema_uri.to_s errors = JSON::Validator.fully_validate(metaschema, schema, schema_reader: schema_reader) if errors.any? raise ArgumentError, "Invalid JSON Schema: #{errors.join(", ")}" diff --git a/lib/mcp/tool/output_schema.rb b/lib/mcp/tool/output_schema.rb index 614e59db..af5405c6 100644 --- a/lib/mcp/tool/output_schema.rb +++ b/lib/mcp/tool/output_schema.rb @@ -55,7 +55,10 @@ def validate_schema! accept_uri: false, accept_file: ->(path) { path.to_s.start_with?(Gem.loaded_specs["json-schema"].full_gem_path) }, ) - metaschema = JSON::Validator.validator_for_name("draft4").metaschema + metaschema_path = Pathname.new(JSON::Validator.validator_for_name("draft4").metaschema) + # Converts metaschema to a file URI for cross-platform compatibility + metaschema_uri = JSON::Util::URI.file_uri(metaschema_path.expand_path.cleanpath.to_s.tr("\\", "/")) + metaschema = metaschema_uri.to_s errors = JSON::Validator.fully_validate(metaschema, schema, schema_reader: schema_reader) if errors.any? raise ArgumentError, "Invalid JSON Schema: #{errors.join(", ")}"