mcpcost

mcp 2.x · python sdk

Errors after mcp 2.0

mcp 2.0.0, the Python SDK, came to PyPI on 28 July 2026. It renamed FastMCP to MCPServer and removed names that servers import. A package that asks for mcp with no upper bound gets 2.x from a plain install and stops at start-up.

The errors 2026-11-14

932 PyPI package servers in the official MCP registry stopped with one of these errors in the newest daily probe. 694 servers start and list their tools when the probe installs them with mcp<2.

Error textServers
ModuleNotFoundError: No module named 'mcp.server.fastmcp'
mcp 2.0 renamed FastMCP to MCPServer and moved it from mcp.server.fastmcp to mcp.server.mcpserver. An import of mcp.server.fastmcp, or of a name below it, stops with ModuleNotFoundError.
787
AttributeError: 'Server' object has no attribute 'list_tools'
In mcp 2.0 the lowlevel Server class has no decorator methods. You give each handler to the constructor as an on_* argument.
131
ImportError: cannot import name 'FastMCP' from 'mcp.server'
mcp 2.0 renamed FastMCP to MCPServer, so mcp.server has no name FastMCP. It is the same change that stops an import of mcp.server.fastmcp.
10
ImportError: cannot import name 'streamablehttp_client' from 'mcp.client.streamable_http'
mcp 2.0 removed the function streamablehttp_client, which mcp 1.x had marked as deprecated. The function to use is streamable_http_client, with an underscore after streamable.
1
ImportError: cannot import name 'McpError' from 'mcp.shared.exceptions'
mcp 2.0 renamed the exception class McpError to MCPError.
3

The fix for all of them

To start a server that stops with one of these errors, install it with the SDK below 2:

uvx --with "mcp<2" <package>

A publisher adds an upper bound to the dependencies and publishes a new version, or moves the code to mcp 2.x:

dependencies = ["mcp>=1.2,<2"]

Each page has the code before and after, from the SDK's migration guide, and the list of servers. The numbers come from the daily probe: how it works, all results.