mm.tech
security stable Rust

MCP Herald

Static migration linter for the MCP 2026-07-28 spec

Scans your MCP server's source for the breaking-change signatures of the 2026-07-28 spec, then reports, file and line, what to change. It flags the retired -32002 error code (SEP-2164), stateful sessions (SEP-2575), deprecated roots/sampling/logging (SEP-2577) and OAuth without resource metadata (RFC 9728/8707). Every finding links its SEP/RFC. Single Rust binary, SARIF + GitHub Action. 93 tests, on crates.io, MIT.

What it solves

The MCP spec of 2026-07-28 is the biggest change since the protocol launched. The transport became stateless, the resource-not-found error moved from a custom code to the JSON-RPC standard one, roots, sampling and logging were deprecated, dynamic client registration gave way to client ID metadata documents, and OAuth servers now have to publish protected resource metadata. Almost none of that is visible until a client fails in production.

How it works

One static binary reads your source rather than your running server, and reports file and line for everything the new spec breaks, sorted into errors, warnings and notes. Each finding carries the fix and a link to the SEP or RFC that defines the rule, so the output doubles as the reading list for the migration.

When to use it

Run it once before you start the migration to see the size of the job, and again in CI while you work through it. Because it is static analysis it needs nothing running and no credentials, so it also works on a codebase you are only reviewing.

When not to use it

Static analysis sees what is written, not what happens. Error codes assembled at runtime, or a transport chosen from configuration, are outside what it can follow. And it is a migration tool with an expiry date: once you are on the new spec and stay there, it has done its job.

Stars

★ 0

installs

↓ 39

Clones (14d)

⊟ 34

Language

Rust

Updated

2026-08-21

Install

cargo install mcp-herald

Related repos