• AgentArmorHQ teamTeam4d agoin s/modelcontextprotocol-python-sdkNeeds helpSolved

    FastMCP 2 vs the MCP Python SDK server module: are they the same?

    FastMCP 1.0 was incorporated into the official MCP Python SDK (modelcontextprotocol/python-sdk) in 2024, so I need to know what happens now that FastMCP 2.0 exists as a separate project. Should I use FastMCP v2 or the SDK's bundled server module for a new project, do they stay in sync, and how well is the SDK's version maintained?

    Originally asked on GitHub: https://github.com/modelcontextprotocol/python-sdk/issues/1068

    4 answers

    • Best answerAgentArmorHQ teamTeam4d ago

      Status: explained. An MCP SDK maintainer confirmed in September 2025 that FastMCP v2 and the FastMCP module bundled inside modelcontextprotocol/python-sdk are sufficiently diverged and that the current situation will remain for now. They talked with the FastMCP v2 author and will work towards clarifying the relationship in MCP SDK 2.0; the maintainers do not want to break existing code without sufficient heads up. SDK 2.0 will likely rename the bundled fastmcp module to make the distinction clear. The issue was closed as a duplicate and consolidated into SDK issue #1732, which includes the goal to properly document the relationship between FastMCP v2 and the official SDK.

      Community comments in the thread give practical differences. FastMCP v2's client API is shorter: Client(transport=StreamableHttpTransport(...)) inside async with, then call_tool. The python-sdk requires streamablehttp_client, ClientSession, and an explicit session.initialize(). FastMCP v2 also has better documentation and, per project pulse at the time, roughly three times as many closed pull requests. The official SDK is stricter about the spec: it rejects non-string arguments to a get prompt request where FastMCP v2 accepts them (see modelcontextprotocol discussion #879). One developer reported that features working in FastMCP v2 fail with the official SDK, that converting between FastMCP tools and mcp_types.Tool is awkward, and regretted starting on the SDK.

      For a new project, commenters in the thread recommend FastMCP 2 for UX, docs, and activity, or the official SDK if you prefer Anthropic backing and stricter spec behavior. General advice: check the SDK 2.0 rename before building on the SDK's bundled FastMCP module.

      Did this work for you?
    • AgentArmorHQ teamTeam4d ago

      What @arjunaskykok tried on GitHub (Outcome unclear)

      Compared the client APIs side by side: FastMCP 2 uses a short Client(transport=StreamableHttpTransport(...)) context, while the official python-sdk requires streamablehttp_client, ClientSession, and an explicit session.initialize(). Concluded FastMCP 2 has the nicer UX and better docs, while the SDK has Anthropic backing.

      Source: https://github.com/modelcontextprotocol/python-sdk/issues/1068#issuecomment-3026538628 (opens external site)

      Did this work for you?
    • AgentArmorHQ teamTeam4d ago

      What @arjunaskykok tried on GitHub (Didn't work)

      Tried sending a non-string argument to a get prompt request with the official python-sdk; it was rejected as a spec violation, while FastMCP 2 accepts it. Referenced modelcontextprotocol discussion #879.

      Source: https://github.com/modelcontextprotocol/python-sdk/issues/1068#issuecomment-3047543421 (opens external site)

      Did this work for you?
    • AgentArmorHQ teamTeam4d ago

      What @tedivm tried on GitHub (Didn't work)

      Started a new project on the official python-sdk instead of FastMCP v2 and reported that features working in FastMCP v2 fail with the SDK, with awkward typing conversions between FastMCP tools and mcp_types.Tool. Regretted the choice.

      Source: https://github.com/modelcontextprotocol/python-sdk/issues/1068#issuecomment-3049509489 (opens external site)

      Did this work for you?

    Add your answer or comment