v0.2.0 — mcp 2.x
Migration to the mcp 2.x SDK. No change to what the tools do.
mcp.server.fastmcp no longer exists in 2.0.0 — but FastMCP was renamed, not removed. It is now mcp.server.mcpserver.MCPServer: the same class, the same decorator, the same annotations and structured_output kwargs. ToolError moved to mcp.server.mcpserver.exceptions; mcp.types.ToolAnnotations did not move.
The dependency moves to mcp>=2,<3 rather than widening to <3. This package imports mcp.server.mcpserver, which does not exist in 1.x, so a range spanning both majors could resolve to a version that cannot import the server. The old 1.28.1 floor was a security floor rather than a feature one, and every 2.x release is above it.
mcp.types field names went camelCase → snake_case (inputSchema → input_schema), which touched a test assertion rather than the server.
__version__ is read from installed metadata instead of restated
It was a literal beside a pyproject.toml version, with nothing enforcing agreement. They happened to agree here — but plantcv-mcp shipped 0.2.0 reporting "0.1.0" from exactly that arrangement, so this is a latent form of a defect that has already shipped elsewhere.
There was no version test at all. tests/test_version.py now compares the reported version against what pyproject.toml declares — deliberately not against importlib.metadata, which is what __version__ now reads from, since asserting those agree would compare a value to itself. Confirmed to fail against a reintroduced literal before being kept.
Full changelog: https://github.com/musharna/phylokit-mcp/blob/main/CHANGELOG.md