Urgent.News

What's breaking now, across thousands of outlets.

Tech

I built a Skill and checker for MCP's breaking change 2026-08-26. Then the checker was wrong about it.

If you are migrating an MCP server right now, here is the thing that will cost you an afternoon, before anything else in this post: @modelcontextprotocol/sdk has no 2.x. It never will. It stops at 1.30.0 . If you go looking for @modelcontextprotocol/sdk@^2 you will find nothing and conclude that v2 has not shipped yet. It has — on 2026-07-27, under different names: @modelcontextprotocol/server…

Abstract editorial illustration

On 2026-08-26, a reporter discovered an error in a tool they had built to check for breaking changes in the Model Context Protocol (MCP). The problem stemmed from a rule that advised developers to upgrade the <code>@modelcontextprotocol/sdk</code> package to a version starting with <code>v2</code>, and then run a codemod to rename code accordingly. However, the reporter found that this rule was flawed in two ways.

Firstly, there was no <code>v2</code> release of the <code>@modelcontextprotocol/sdk</code> package. The latest stable version was 1.30.0, and there were no indications of a <code>v2</code> version anywhere in the package's version history. The reporter confirmed this by checking npm and reading the SDK announcement, which revealed that the <code>v2</code> release had indeed occurred on 2026-07-27, but under different names such as <code>@modelcontextprotocol/server 2.0.0</code>, <code>@modelcontextprotocol/client 2.0.0</code>, and others.

Secondly, even if a <code>v2</code> version did exist, the rule would not have been effective because the removal of a mandatory header (<code>Mcp-Session-Id</code>) and the introduction of new features such as multi-round-trip requests would have rendered such an upgrade unnecessary. The reporter corrected the rule, removing the recommendation for upgrading to a non-existent <code>v2</code> version, and added a comment to the README, skill, and remediation guide explaining the situation.

The mistake was easy to make because the reporter had been checking the package that the erroneous rule named. In that package, the absence of <code>v2</code> could be mistaken for the existence of <code>v2</code> under a different name, leading to a false conclusion. The true solution lay in checking for the presence of the <code>v1</code> package name rather than relying on a version number threshold.

This revelation was only uncovered when the reporter specifically searched for a codemod that was supposed to migrate code from <code>v1</code> to <code>v2</</code> - a codemod that did not exist, as it had been published under different names, not as a <code>v2</code> release.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

More from Sunday 2 August →