FastMCP:AI 工具开发的 Python 标准框架
2026 年 7 月,FastMCP 在 GitHub 上已经积累了 26,845 颗星,每日下载量超过 100 万次。它是 Prefect 团队开发的 Model Context Protocol(MCP)框架,目前全球约 70% 的 MCP 服务器都基于 FastMCP 或其衍生版本构建。
MCP 是 Anthropic 提出的开放协议,定义了 AI 模型与外部工具之间的标准交互方式。FastMCP 是这个协议在 Python 生态中的事实标准实现。简单来说,写一个 Python 函数,加一个 @mcp.tool 装饰器,这个函数就变成了 AI 模型可以调用的工具。
三个支柱:Server、Client、App
FastMCP 的核心架构围绕三个概念展开。
Server 是最核心的能力。开发者用 Python 函数声明工具,FastMCP 自动生成 JSON Schema、处理参数校验、管理协议生命周期。以下代码是一个完整的 MCP Server:
from fastmcp import FastMCP
mcp = FastMCP("Demo")
@mcp.tool
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
if __name__ == "__main__":
mcp.run()
这个 Server 启动后,任何 MCP Client(Claude Desktop、Cursor、自定义 Agent)都可以发现并调用 add 工具。类型注解自动转换成 Schema,docstring 变成工具描述,不需要额外的配置或声明文件。
Client 提供了连接远程 MCP Server 的能力。FastMCP 的 Client 层处理了传输协商、认证、协议版本管理——开发者只需要提供一个 URL。这意味着可以将工具分布到不同的服务器上,通过 MCP 统一接入。
App 是 FastMCP 的一个创新:允许工具返回交互式 UI 组件,渲染在对话中。开发者可以构建表单、数据表格、图表等界面,让 AI Agent 的操作结果以可视化方式呈现,而不是纯文本输出。
为什么 FastMCP 能成为标准
在此之前,构建 MCP 工具需要手动处理 JSON Schema 生成、输入校验、错误处理、生命周期管理——这些都是重复性工作。FastMCP 把这些全部自动化了。开发者写工具函数,框架处理 MCP 部分。
FastMCP 之所以能拿下 70% 的市占率,有几个关键原因:
无侵入的 API 设计。 工具函数就是普通的 Python 函数。参数类型注解就是 Schema 定义。docstring 就是工具描述。没有任何框架相关的侵入式代码污染业务逻辑。
内置的生产化能力。 FastMCP 不只是玩具。它支持工具级别的认证、速率限制、错误重试、日志追踪。从原型到生产不需要换框架。
完整的生态整合。 通过 uv 安装,和 Python 项目的标准依赖管理流程一致。同时支持 llms.txt 格式的文档输出,AI 模型可以直接阅读理解 FastMCP Server 的接口。
白物集项目中的实际使用
FastMCP 在白物集管线中扮演了基础设施角色。Hermes Agent 的 MCP 工具链使用 FastMCP 构建,直接支撑了以下几个核心场景:
内容采集工具的自动发现。 白物集的新闻采集流程需要调用多个外部源(RSS、API、网页爬虫)。每个数据源都是一个独立的 FastMCP Server,Agent 运行时自动发现可用工具,按需调用。新增一个数据源只需要写一个 Python 函数加 @mcp.tool,不需要修改 Agent 的调用逻辑。
内容管线的质量门控。 文章质量检查(排除词检测、标题长度校验、格式检查)被封装成 FastMCP 工具。每次写稿完成后,管线自动调用这些工具完成质量检查。因为 FastMCP 的参数校验是自动的,新增检查规则只需加一个新函数,不会破坏已有的检查流程。
构建单表迭代验证。 开发过程中,每个新的 MCP 工具写好之后,直接用 mcp.run() 启动,用 Claude Desktop 或 Codex 连接测试。不需要写测试客户端、不需要 mock 数据——AI 模型直接作为测试驱动。这种「写函数 → 加装饰器 → 让 AI 测」的循环,把工具开发的验证周期从小时级压缩到分钟级。
适合与不适合的场景
FastMCP 最适合以下场景:
AI Agent 的工具层开发。 Agent 需要访问文件系统、数据库、外部 API 或任何自定义服务时,FastMCP 是封装这些能力的最便捷方式。
多工具组合的微服务架构。 不同团队负责不同数据源时,各自独立部署 FastMCP Server,通过统一的 MCP Client 发现和调用,避免单体工具 API 的耦合。
需要快速验证的 AI 原型。 从想法到可运行的 MCP Server,FastMCP 只需要 3 行代码。
不适合的场景:
高并发低延迟的实时系统。 FastMCP 的设计目标是工具集成而非高性能 RPC。单机百万级 QPS 的场景应该用 gRPC 或原生 TCP 方案。
非 Python 的项目。 FastMCP 是 Python 框架。其他语言生态有对应的 MCP SDK(TypeScript、Go、Java 的 MCP SDK 都已可用)。
快速上手
第一步:安装
uv pip install fastmcp
第二步:写一个 Server
创建 server.py,写一个简单的计算工具:
from fastmcp import FastMCP
mcp = FastMCP("Calculator")
@mcp.tool
def multiply(a: float, b: float) -> float:
"""Multiply two numbers"""
return a * b
if __name__ == "__main__":
mcp.run()
第三步:启动
python server.py
FastMCP 会输出一个 mcp.json 文件,其他 MCP Client 可以用这个文件发现并连接 Server。
第四步:用 Client 调用
from fastmcp import FastMCPClient
async with FastMCPClient("mcp.json") as client:
result = await client.call_tool("multiply", {"a": 3, "b": 4})
print(result) # 12
第五步:添加更多工具
在同一个 Server 中声明更多函数:
@mcp.tool
def fibonacci(n: int) -> list[int]:
"""Generate Fibonacci sequence up to n terms"""
seq = [0, 1]
for _ in range(2, n):
seq.append(seq[-1] + seq[-2])
return seq[:n]
FastMCP 不会把这个协议的应用层实现演变成值得花 5-10 分钟评估的依赖项——它本身就是这个生态里最推荐的选择。白物集管线中,FastMCP 已经稳定运行了数月,没有因为框架本身的原因出过一次问题。