If you run any AI tooling that uses MCP, the last couple of weeks might have been rough. The pattern kept showing up in GitHub issues: somebody does a routine update, and suddenly their MCP servers "just stop working." No error, or a cryptic one. The gateway reports healthy, the server says enabled, the tools never show up.
It hit across a lot of different tools around the same time. AutoGen's MCP extensions, LlamaIndex's MCP tools, Copilot CLI, Claude Desktop configs, a few agent frameworks I won't single out...... all broke roughly the same way. That's not random bad luck.
The common thread: the mcp Python SDK jumped to 2.0.0 near the end of July, and 2.0.0 ships breaking changes. A bunch of wrapper libraries pinned mcp>=1.x with no upper bound, so the next update pulled 2.0.0 and everything built against the old API fell over.
What actually changed
A handful of concrete, mechanical breaks:
-
streamable_http_client()used to hand back a 3-tuple. It's 2 now. Old code that unpacks three values throwsValueErroron startup. - Names moved.
streamablehttp_clientbecamestreamable_http_client. Code that only checks for the old name quietly loses HTTP transport. - Types flipped from camelCase to snake_case.
.inputSchemais nowinput_schema,.isErroris nowis_error. - The client only accepts JSON Schema draft 2020-12 now, not draft-07. A server that declares the old
$schemagets rejected outright. - The protocol handshake changed (a modern
server/discoverover a legacyinitialize), which is what tripped up Copilot CLI.
None of that is malicious. It's a major version, majors break things. The infuriating part is that a lot of the ecosystem didn't cap the dependency, so the breakage stayed quiet until you updated.
How to confirm it's this
Check what version you're on:
pip show mcp
# or
uv pip show mcp
If it's 2.0.0 and your tool was built against 1.x, that's almost certainly the culprit. No repro needed, no config archaeology.
The fix, by tool
Most of the time, pin back to what your tool was built against:
pip install "mcp<2"
# or restore the exact pin your tool declares, eg
pip install "mcp==1.28.1"
For the specific cases worth knowing:
-
AutoGen (
autogen-ext[mcp]): pinmcp<2. Upstream caps it at>=1.11,<2. -
LlamaIndex (
llama-index-tools-mcp): pin to 0.4.x, or patchclient.pyto unpack the 2-tuple(read, write)instead of three values. Sessions work again right away. -
Copilot CLI: pin to
1.0.81-0. The 81-1 build is the regression. -
Hermes: restore the pinned
mcpandstarlette, restart the gateway, then runmcp testto confirm the tools reconnect.
One case has no clean pin: if your MCP server is getting rejected on its schema dialect (that draft-07 error in Claude Desktop), the client only speaks 2020-12 now. The verified workaround there is a thin stdio proxy that rewrites the outputSchema $schema to 2020-12. Ugly, but it works.
The actual lesson
I could go on about specifics, but the honest takeaway is boring: pin your dependencies. If a tool's updater pulls an unpinned major version over a declared minor pin, that's a bug in the updater, but you can protect yourself by not letting chain-updates run loose.
When you update AI tooling, glance at the mcp version after. If MCP servers go quiet and there's no obvious error, check that package first before you start tearing down configs.
I could be wrong, but I've now seen this exact failure across five separate vendors in a week, same root cause, same class of fix. If your MCP setup broke after an update and nothing else explains it, your mcp package version is worth a look. Give it a shot before you nuke your config.
Top comments (0)