Skip to content

Commit c8116fb

Browse files
committed
Drive the http-standard-headers scenario in the conformance client
## Motivation and Context The 2026-07-28 requirement set scores `http-standard-headers` (SEP-2243) on the client leg, but `conformance/client.rb` had no case for it: the scenario hit the unknown-scenario abort, the client exited 1, and every `Mcp-Method` / `Mcp-Name` check reported SKIPPED ("Client did not send a ... request"), failing the scenario in tier-check. The 2026-08-14 tier audit flagged this as the only scored conformance failure (client leg 49/50). The transport already sends the standard headers on the modern path; what was missing is a driver that exercises each request kind the harness observes. The new case issues `tools/list`, `tools/call` (the `test_headers` fixture tool), `resources/list`, `resources/read` (the first listed resource URI), `prompts/list`, and `prompts/get` (the first listed prompt), letting the harness see the `Mcp-Method` header on every POST and the `Mcp-Name` header on the three name-carrying requests. The `initialize` / `notifications/initialized` rows stay SKIPPED by design: the 2026-07-28 wire is stateless, so those requests are never sent. ## How Has This Been Tested? `conformance client --scenario http-standard-headers --spec-version 2026-07-28` passes 9/9 checks, and the full `--requirements 2026-07-28` client leg exits 0 with every scored scenario passing (435 checks; the only failures are the baselined not-scored DPoP/WIF extensions). RuboCop is clean. ## Breaking Changes None. The change only adds a scenario driver to the conformance client fixture; library code is untouched.
1 parent 0695c43 commit c8116fb

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

conformance/client.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,21 @@ def build_provider_for(scenario, context)
238238
# calling only the valid one shows the invalid definitions did not block it.
239239
client.tools
240240
client.call_tool(name: "valid_tool", arguments: { "message" => "hello" })
241+
when "http-standard-headers"
242+
# SEP-2243: the harness inspects the `Mcp-Method` header on every POST and the `Mcp-Name` header on
243+
# the name-carrying requests, so drive one of each standard request kind.
244+
tools = client.tools
245+
tool = tools.find { |t| t.name == "test_headers" } || tools.first
246+
abort("No tool exposed by conformance server for #{scenario}") unless tool
247+
client.call_tool(tool: tool, arguments: {})
248+
249+
resource = client.resources.first
250+
abort("No resource exposed by conformance server for #{scenario}") unless resource
251+
client.read_resource(uri: resource["uri"])
252+
253+
prompt = client.prompts.first
254+
abort("No prompt exposed by conformance server for #{scenario}") unless prompt
255+
client.get_prompt(name: prompt["name"])
241256
when "json-schema-ref-no-deref"
242257
# SEP-2106: listing tools whose schemas carry `$ref` must not trigger network dereferencing.
243258
client.tools

0 commit comments

Comments
 (0)