fastmcp 2.0 是什么

fastmcp 2.0 是一个用来构建 MCP(Model Context Protocol) 服务器与客户端的 Python 框架。它把 MCP 的复杂协议细节(工具/资源/提示模板、传输、错误处理等)都“框起来”,你只需用装饰器写函数,就能把能力以 MCP Server 的方式暴露给各种 LLM 应用(如 Claude Desktop、你自己的 Agent Runtime)。2.0 相比早期版本,除了造 Server,更提供 Client、代理/组合、从 OpenAPI/FastAPI 一键生成 MCP 服务、内存级测试、认证 等面向生产的能力。

背景:MCP 是把“工具/数据源”用统一接口暴露给 LLM 的开放标准(常被比喻为 “AI 的 USB-C”)。可以把它理解为“专为 LLM 交互设计的 API 标准”。

fastmcp 2.0 亮点(实用向)
• 用 @mcp.tool / @mcp.resource / @mcp.prompt 快速声明工具、只读资源、提示模板;自动从类型标注/Docstring 产出 schema。
• 同时提供 Client,支持 STDIO / HTTP / SSE / In-Memory 传输,便于程序内测与集成。 
• 组合 & 代理:把多个 MCP Server 拼在一起,或代理远端 Server;还能从 OpenAPI/FastAPI 直接生成 MCP Server。
• 内存级测试与更完善的文档/站点(gofastmcp.com)。
• 2.0 是活跃版本;1.0 已并入官方 MCP Python SDK,2.0 在其上扩展为完整生态。

想系统了解 MCP 本身,可参考 modelcontextprotocol.io 的 Quickstart。

最小可跑示例

  1. 一个 20 行的 MCP Server

server.py

from fastmcp import FastMCP, Context

mcp = FastMCP("demo-server")

@mcp.tool
def add(a: int, b: int) -> int:
    """两数相加"""
    return a + b

@mcp.resource("config://version")
def version():
    return "2.0.0-demo"

@mcp.prompt
def summarize(text: str) -> str:
    """生成一个“请总结”的提示"""
    return f"请用要点总结:\n\n{text}"

if __name__ == "__main__":
    mcp.run()  # 默认 stdio;也可 mcp.run(transport="http", host="127.0.0.1", port=8000, path="/mcp")

安装 & 运行:

pip install fastmcp
python server.py

或直接:fastmcp run server.py

(官方 README 与文档给出了相同的运行方式与多传输支持。) 

  1. 用 fastmcp Client 调这个 Server

client.py

import asyncio
from fastmcp import Client

async def main():
    # 方式 A:本地脚本(STDIO 传输)
    async with Client("server.py") as c:
        tools = await c.list_tools()
        print("tools:", [t.name for t in tools])
        res = await c.call_tool("add", {"a": 5, "b": 7})
        print("add =", res.text)  # 12

    # 方式 B:若 server 以 HTTP/SSE 暴露,则用 URL 连接
    # async with Client("http://127.0.0.1:8000/mcp") as c: ...

asyncio.run(main())

(Client(…) 支持 stdio/HTTP/SSE/内存直连等多种传输,接口在 fastmcp 2.0 的 README 里有完整范例。)

进阶:更贴近生产的用法
• 从 OpenAPI/FastAPI 生成 MCP:已有 REST 服务?可 FastMCP.from_openapi() 或 from_fastapi() 直接生成 MCP,免重写。
• 组合多个 Server:把“搜索”“数据库”“知识库”各自做成 Server,再在顶层 mcp.mount() 组装成一个大服务。
• 代理远端:用 as_proxy() 桥接远端 SSE/HTTP 到本地,或对第三方 Server 加一层鉴权/审计。
• 内存测试:Client(FastMCP(…)) 直接与内存中的 Server 对接,单测无需起进程与网络。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐