One markdown file per breaking (or deprecated) change in the 2026-07-28 spec revision. This is the cheapest way to contribute to this project: no Python, no tests, no fixture files -- just a worked before/after example and the gotchas you hit doing it for real.
mcp-migrate check and mcp-migrate fix tell you that something broke and,
for nineteen rules, fix the mechanical part automatically. The cookbook is where
the rest of the migration lives -- the part a regex can't do because it
requires a judgment call (what do you name the new handle argument? where
does the durable store live? what does your server/discover response say
about your own server's identity?).
Every recipe follows _TEMPLATE.md:
- Rule / Fixer -- which
RNNNthis corresponds to (if any), and whether a fixer exists for it. Not every recipe needs a rule; a recipe can exist for a change that's real but too fuzzy to detect mechanically. - What broke -- the actual failure mode, not just "it's different now".
- Before / After -- complete, runnable-looking Python, not a fragment.
- Gotchas -- what a mechanical fix gets wrong, or the edge cases that look done but aren't.
- Spec link -- the exact section or SEP, not just the changelog root.
All eighteen are written. There are no stubs left.
The recipes with no fixer are the ones where the migration is a judgment call rather than an edit -- see each recipe's Gotchas for why a mechanical fix would get it wrong.
The eighteen above cover every breaking and deprecated change in the 2026-07-28 revision that we know of. A nineteenth means either the spec moved or we missed something -- both worth a PR.
cp cookbook/_TEMPLATE.md cookbook/NN-your-slug.mdFill it in, add a row to the table above, open a PR. See CONTRIBUTING.md -- reviewed within 48 hours, and a recipe that follows the template merges without back-and-forth.