Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Wire-schema validation does not see raw-HTTP / inline-mock scenario traffic

Open
#418 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
testing-qa

Research direction

Start with the listed client scenarios in src/scenarios/client/ and server scenarios in src/scenarios/server/, then run the core client suite against the TypeScript SDK everything-client to reproduce the missing wire-schema checks. Trace the shared version-aware mock server and the raw fetch or Client paths, including the inline mocks in request-metadata.ts, mrtr-client.ts, json-schema-ref-deref.ts, and http-base.ts. Done means bypass traffic is validated, intentional violations can opt out, and the draft server/discover mocks use the current _meta serverInfo shape.

Written by the indexing model from the issue text.

Description

#399 validates every JSON-RPC message that flows through the shared choke points (the SDK transport hooks and the version-aware mock server). Traffic that bypasses those choke points is never schema-checked, and the bypass surface is wider than the note in the PR body (which only mentions the client-auth express mock).

Known uninstrumented paths:

Client scenarios with hand-rolled inline HTTP mocks (requests from the client under test are not validated):

  • src/scenarios/client/initialize.ts — the client's initialize request is never schema-checked
  • src/scenarios/client/sse-retry.ts
  • src/scenarios/client/elicitation-defaults.ts
  • src/scenarios/client/http-base.ts and its subclasses (request-metadata.ts, mrtr-client.ts, json-schema-ref-deref.ts)
  • the client-auth scenarios' express mock (already disclosed in #399)

Server scenarios using raw fetch or their own SDK Client (messages to/from the server under test are not validated):

  • src/scenarios/server/sse-polling.ts and sse-multiple-streams.ts — both build their own uninstrumented Client
  • src/scenarios/server/http-standard-headers.ts, lifecycle.ts, stateless.ts — raw fetch calls

Observable at the CLI: running the core client suite against the typescript-sdk everything-client, only tools_call reports a wire-schema-valid check; initialize, sse-retry, and every auth scenario record no wire traffic at all.

Related cleanup while touching these files: four client-scenario inline mocks still emit the pre-#3002 top-level serverInfo on draft server/discover responses instead of _meta['io.modelcontextprotocol/serverInfo'] (request-metadata.ts, mrtr-client.ts, json-schema-ref-deref.ts, http-base.tssrc/mock-server/stateless.ts was already fixed in #403).

Suggested direction: route inline client-scenario mocks through the shared version-aware mock server where feasible, and add a small validated-fetch helper for the raw-HTTP server scenarios so intentional protocol violations can opt out explicitly.

Dominant language
TypeScript
Stars
127
Forks
101
Avg merge
4d 7h
Merged PRs (30d)
6

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from modelcontextprotocol/conformance

All issues in modelcontextprotocol/conformance

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.