Skip to content

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

Terminal window
npx mcp-stateless --stdio "node dist/server.js" --only MCP012

Suppressing it

If this check does not apply to your server, skip it:

Terminal window
npx mcp-stateless --stdio "node dist/server.js" --skip MCP012

Rule 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.