fastmcp
Python 装饰器驱动的 MCP 服务器开发框架,3 行代码将 Python 函数变成 AI 可调
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 装饰器驱动的 MCP 服务器开发框架,3 行代码将 Python 函数变成 AI 可调
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:FastMCP 品牌标识(深色主题)
想象一下这个场景:你在和一个 AI 助手聊天,让它"帮我查一下北京今天的天气",然后——它说"好的",就没然后了。不是 AI 不想帮你,而是它根本没有能力获取外部工具和数据。
这就是 AI 应用的长期痛点:模型聪明,但和现实世界脱节。大语言模型(LLM)训练数据有截止日期,不能实时查天气、搜文件、调 API。2024 年 11 月,Anthropic 推出了 Model Context Protocol(MCP)——一套让 AI 助手安全调用外部工具的标准协议,就像 USB 接口让电脑连接各种外设一样。
但问题是:用原生 MCP SDK 写一个服务器,要处理协议握手、传输层协商、认证鉴权、JSON-RPC 消息格式化……还没开始写业务逻辑,光基础设施就让人头大。
Prefect——一家做工作流编排平台的公司——敏锐地发现了这个痛点。他们用 2024 年一整年的打磨,推出了 FastMCP,把这个过程变成了三行 Python 代码。
Prefect 是 Python 工作流编排领域的老牌玩家(GitHub 3.8 万星),他们深谙"让复杂的事情变简单"的工程哲学。2024 年底,当 MCP 协议刚发布时,Prefect 团队意识到:MCP 服务器的开发体验实在太糟糕了,而他们恰好最懂如何在 Python 中优雅地封装复杂性。
FastMCP v1.0 在 2024 年发布后迅速走红,以至于 Anthropic 直接将 FastMCP 的设计理念整合进了官方 MCP Python SDK。这是对 FastMCP 架构的官方背书。但 FastMCP 并没有停下脚步——他们继续独立演进,推出了功能更完整的 v2/v3 版本,如今每天下载量突破 100 万次,据官方数据,全球 70% 的 MCP 服务器在某种程度上使用了 FastMCP 的代码或理念。
这是一个"青出于蓝"的典型案例:被官方认可后,反而加速了自己的生态扩张。
FastMCP 不是单一工具,而是一套完整的 MCP 开发工具链,服务三个核心场景:
开发者只需要写一个带 @mcp.tool 装饰器的 Python 函数,FastMCP 自动生成 MCP 协议层的一切:
from fastmcp import FastMCP
mcp = FastMCP("我的工具集")
@mcp.tool
def calculate_bmi(weight_kg: float, height_m: float) -> dict:
"""计算BMI指数"""
bmi = weight_kg / (height_m ** 2)
return {"bmi": round(bmi, 2), "status": "正常" if 18.5 <= bmi < 24 else "异常"}
if __name__ == "__main__":
mcp.run()
自动完成的工作:参数 JSON Schema 生成、类型验证、Pydantic 序列化、工具描述文档、错误处理。这些在原生 SDK 中都需要手动编写。
除了工具(Tools),FastMCP 还支持资源(Resources)和提示模板(Prompts),覆盖 MCP 协议的全部三类对象。
FastMCP 的客户端可以连接到本地或远程任何 MCP 服务器,自动处理传输协议(SSE/Streamable HTTP/Stdio)和认证逻辑:
from fastmcp import Client
async with Client("http://example.com/mcp") as client:
result = await client.call_tool("calculate_bmi", {"weight_kg": 70, "height_m": 1.75})
这是 FastMCP 最具差异化的功能——FastMCP Apps。传统的 MCP 工具调用后只能返回纯文本,但 Apps 允许工具返回 Rich UI 组件(表单、卡片、图表),直接渲染在 AI 助手的对话界面里。
想象一下:用户让 AI 调一个"股票查询"工具,结果直接弹出一个小界面让你输入股票代码,而不是让你在聊天框里敲参数。这就是 Apps 的价值——让 AI 工具的交互体验从命令行时代升级到 GUI 时代。
FastMCP 采用标准的 monorepo 结构(基于 uv workspace),核心代码在 fastmcp_slim/ 子包中:
| 目录 | 职责 |
|---|---|
server/ | MCP 服务器实现,含 auth/(认证提供者)和 middleware/(错误处理/日志/限流) |
client/ | MCP 客户端 SDK |
tools/ | 工具定义与注册机制 |
resources/ | 资源和资源模板 |
prompts/ | 提示模板 |
cli/ | 命令行工具(fastmcp CLI) |
关键设计理念:
安装(1分钟):
uv pip install fastmcp
# 或
pip install fastmcp
门槛评估:
对于 AI 爱好者来说,如果你只是想使用某个基于 FastMCP 构建的工具,门槛几乎为零;如果你想开发自己的 MCP 服务器,需要有基本的 Python 编程能力(理解装饰器、async/await)。
FastMCP 并非完美,以下几点值得注意:
不是独立服务,是开发框架:FastMCP 不像某些 MCP 服务器那样开箱即用,它本质上是一个 SDK。你需要用 Python 代码调用它来构建自己的服务,部署时需要配合 FastAPI/Uvicorn 等 Web 服务器。
Apps 功能相对新,生态尚在成熟:FastMCP Apps 的 UI 组件化方案很有前景,但目前支持组件种类有限,文档也相对较少。
Prefect 商业化的野心:Prefect 推出了 Horizon(企业级 MCP 网关),这是 FastMCP 的商业化版本。虽然开源版不受影响,但企业用户在选择时需要考虑长期商业支持策略。
版本迁移的阵痛:FastMCP 经历了从 v1(被整合进官方 SDK)到 v2/v3 的演进,官方提供了迁移指南,但对于已经在 v1 上投入的开发者来说,升级有一定成本。
FastMCP 的价值远超一个框架本身,它在 MCP 生态中扮演了基础设施层的角色:
从增长曲线看,FastMCP 在 GitHub 上 25,000+ 星、每天 100 万次下载、活跃的 Discord 社区(100+ 订阅者),都表明它已经跨越了"概念验证"阶段,进入主流采纳期。
对于 AI 开发者:FastMCP 是目前构建 MCP 服务器的首选框架,学习曲线平缓,功能完整,社区活跃。 对于 AI 爱好者:如果你的 AI 助手支持 MCP,关注哪些工具是基于 FastMCP 构建的——它们往往更稳定、功能更丰富。