Skip to content

antd-mcp fails to start on a fresh install: pyproject allows mcp 2.x, which removed mcp.server.fastmcp #249

Description

@JimCollinson

Problem

A fresh install of antd-mcp following the README crashes on start:

$ git clone https://github.com/WithAutonomi/ant-sdk
$ pip install -e "./ant-sdk/antd-py[rest]" -e ./ant-sdk/antd-mcp
$ antd-mcp
Traceback (most recent call last):
  File ".../bin/antd-mcp", line 5, in <module>
    from antd_mcp.server import main
  File ".../antd-mcp/src/antd_mcp/server.py", line 11, in <module>
    from mcp.server.fastmcp import FastMCP
ModuleNotFoundError: No module named 'mcp.server.fastmcp'. This is mcp 2.x, where FastMCP was renamed to MCPServer (from mcp.server.mcpserver import MCPServer) and other APIs changed; see the migration guide at https://py.sdk.modelcontextprotocol.io/v2/migration/#fastmcp-renamed-to-mcpserver or pin 'mcp<2' to keep running v1 code.

antd-mcp/pyproject.toml declares mcp>=1.2.0 with no upper bound. pip now resolves that to mcp 2.1.1, and server.py imports FastMCP from the v1 API (mcp.server.fastmcp, line 11; FastMCP(...) at line 43).

Reproduced 5 Sept 2026 at f9cd5c5 (v0.12.1) on Linux, Python 3.11, in a clean venv and via uv tool install.

Expected

antd-mcp starts after the documented install.

Suggested fix

Either pin the dependency in antd-mcp/pyproject.toml:

dependencies = [
    "mcp>=1.2.0,<2",
    "antd>=0.1.0",
]

or migrate server.py to the mcp 2.x API (MCPServer). The pin is a one-line fix and unblocks users now; the migration can follow.

Verified workaround

Adding "mcp<2" to the install makes everything work — with mcp 1.29.1 the server initialises over stdio, lists 19 tools, auto-discovers antd via the port file, and claude mcp add antd-autonomi -- antd-mcp shows ✓ Connected in Claude Code:

$ uv tool install ./ant-sdk/antd-mcp --with "./ant-sdk/antd-py[rest]" --with "mcp<2"

Impact

Every new user of the MCP server hits this today; the developers.autonomi.com agent tools page has to carry the mcp<2 workaround until it's fixed. Related, while touching the README: the health tool is documented as check_balance but the code registers check_health, and the root README says 14 tools where the code has 19.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions