MCP013 — Server rejects requests carrying the meta protocol envelope
| Severity | error |
| Fixed by | A change in your own server code |
| Transports | stdio, http |
| Specification | 2026-07-28 |
| Changelog entry | Major change 2 (SEP-2575) |
Why this changed
With the handshake gone, every request carries its protocol version and
client capabilities in params._meta. Servers with strict schema validation
— particularly those that set additionalProperties: false on params —
reject these requests outright, which breaks every 2026-07-28 client while
leaving older ones working.
The tell is asymmetric: the request fails with _meta and succeeds
without it.
Running just this check
npx mcp-stateless --stdio "node dist/server.js" --only MCP013Suppressing it
If this check does not apply to your server, skip it:
npx mcp-stateless --stdio "node dist/server.js" --skip MCP013Rule ids are permanent and are never reissued, so a suppression cannot start silently matching a different check later.
Generated from src/rules/MCP013.ts by
scripts/gen-rule-docs.mjs. Edit the rule source, not this page.