Fix wire-validation attribution bugs and extend the schema erratum to 2025-06-18 (#421)
Follow-ups from the #399 review: - Stateless mock: validate error replies with a placeholder id so the JSON-RPC-mandated id:null is not recorded as a harness violation, and skip inbound validation when express left the body unparsed (wrong or missing Content-Type) — both were false positives blamed on the wrong party. Same unparsed-body guard in the stateful mock. - Stateful mock: validate client traffic against the protocol version the client declares via MCP-Protocol-Version, falling back to 2025-03-26 when the header is absent (it only exists from 2025-06-18, whose spec says to assume 2025-03-26), instead of always using the run version. - sdk-client: validate batches once as a whole array instead of also per element, which double-recorded every violation. - Make specVersion required on connectToServer/connectStateful/ createServerStateful; add isSpecVersion to types.ts. - Extend the NumberSchema erratum to 2025-06-18 (same generator bug on minimum/maximum, modelcontextprotocol#3139) and add a tripwire test that forces erratum deletion once the schemas are re-vendored. - Document the wire-schema-valid / wire-schema-harness-error check IDs in the README.
This commit is contained in:
parent
89c2c0452e
commit
5cc567c399
1 changed files with 201 additions and 39 deletions
18
README.md
18
README.md
|
|
@ -98,6 +98,24 @@ npx @modelcontextprotocol/conformance server --url <url> [--scenario <scenario>]
|
|||
|
||||
- `checks.json` - Array of conformance check results with pass/fail status
|
||||
|
||||
### Wire-schema checks
|
||||
|
||||
Every scenario also validates each JSON-RPC message on the wire against the
|
||||
spec's JSON schema for the negotiated spec version, and emits up to two
|
||||
synthetic checks alongside the scenario's own:
|
||||
|
||||
- `wire-schema-valid` - fails when a message _the implementation under test
|
||||
sent_ violates the spec JSON schema. The failure details include every
|
||||
violating message and its schema errors.
|
||||
- `wire-schema-harness-error` - fails when the _harness itself_ sent an
|
||||
invalid message. This indicates a bug in the conformance suite (or a
|
||||
deliberately nonconformant fixture), not in the implementation under test;
|
||||
please report it.
|
||||
|
||||
Scenarios that exchange no instrumented wire traffic (see issue #418) emit
|
||||
neither check. Like any other check, `wire-schema-valid` can be baselined via
|
||||
the expected-failures file.
|
||||
|
||||
## Expected Failures
|
||||
|
||||
SDKs that don't yet pass all conformance tests can specify a baseline of known failures. This allows running conformance tests in CI without failing, while still catching regressions.
|
||||
|
|
|
|||
Loading…
Reference in a new issue