MCP012 — Protocol error codes were not renumbered into the reserved range
| Severity | error |
| Fixed by | Upgrading your MCP SDK to a release targeting 2026-07-28 |
| Transports | stdio, http |
| Specification | 2026-07-28 |
| Changelog entry | Minor change 12 |
Why this changed
2026-07-28 partitioned the JSON-RPC server-error range: -32000..-32019 stays implementation-defined and -32020..-32099 is reserved for the spec. The three codes introduced during the draft were renumbered out of the first block, so a server still emitting the old numbers is now colliding with the vendor-defined space — a client cannot tell a protocol error from whatever else that server happens to use -32001 for.
Running just this check
npx mcp-stateless --stdio "node dist/server.js" --only MCP012Suppressing it
If this check does not apply to your server, skip it:
npx mcp-stateless --stdio "node dist/server.js" --skip MCP012Rule ids are permanent and are never reissued, so a suppression cannot start silently matching a different check later.
Generated from src/rules/MCP012.ts by
scripts/gen-rule-docs.mjs. Edit the rule source, not this page.