You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ported to the mcp 2.x server API. 2.0.0 renamed mcp.server.fastmcp to mcp.server.mcpserver and the FastMCP class to MCPServer, with no compatibility alias. The tool contract is unchanged: every tool keeps its name, description, and input and output schemas.
Every dependency is pinned to an exact version instead of a lower bound: mcp 2.0.0, anyio 4.14.2, python-dotenv 1.2.2, pydantic 2.13.4 and tzlocal 5.4.4, and for development pytest 9.1.1, pytest-asyncio 1.4.0 and ruff 0.16.1.
Fixed
A fresh install no longer breaks on import. The mcp spec was >=1.6.0 with no upper bound, so once 2.0.0 was published the resolver picked it and the server failed to start.
Strict tool-argument validation is now pinned by a test that invokes a registered tool with an unknown kwarg, rather than only asserting the setting the patch writes. The strictness comes from patching a private mcp internal; if that internal stops being what argument models are built on, the patch still applies cleanly to an object nothing reads and typo'd kwargs silently fall through to their defaults again - which the previous checks could not distinguish from working.
Packaging
The build toolchain is pinned alongside the dependencies: setuptools to an exact version, the python:3.13-slim base image by digest, and every GitHub Action to a full commit SHA rather than a moving major tag. The uv binary image, previously referenced as :latest, is pinned to 0.12.1 by digest. A floating tag can change what a build produces with nobody deciding, which is the same failure the dependency pins address.