Merge pull request #506 from koic/cover_json_schema_2020_12_preservation_scenario

[Conformance] Cover the JSON Schema 2020-12 preservation scenario
This commit is contained in:
Koichi ITO 2026-08-13 00:02:38 +09:00 • committed by GitHub
commit b195a21410
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 2 deletions

View file

@ -182,6 +182,14 @@ begin
case scenario
when "initialize"
client.tools
when "json-schema-2020-12-preservation"
# SEP-1613/SEP-2106: echo the focal tool's observed inputSchema verbatim so the harness
# can diff what the client preserved. Preservation holds because `Client::Tool#input_schema`
# is the parsed response untouched.
tools = client.tools
focal = tools.find { |t| t.name == "json_schema_2020_12_tool" }
abort("Tool json_schema_2020_12_tool not found") unless focal
client.call_tool(name: "json_schema_echo", arguments: { "schema" => focal.input_schema })
when "tools_call"
tools = client.tools
add_numbers = tools.find { |t| t.name == "add_numbers" }

View file

@ -8,9 +8,9 @@ client:
# are not implemented in `MCP::Client::HTTP` yet.
- http-custom-headers
- http-invalid-tool-headers
# Client-side JSON Schema preservation gaps: `$ref` values must reach the caller unresolved.
# Client-side JSON Schema handling: `$ref` values must reach the caller unresolved,
# and the conformance client does not run the scenario over the modern lifecycle yet.
- json-schema-ref-no-deref
- json-schema-2020-12-preservation
# Unimplemented authorization extensions.
- auth/dpop
- auth/dpop-nonce