> 📌 **项目地址**:[PrefectHQ/fastmcp](https://github.com/PrefectHQ/fastmcp) | ⭐ 26,457 颗星 | 🔧 Python | 📜 未标注
## MCP开发有两个坑,FastMCP帮你一起躲了
MCP(Model Context Protocol)让大语言模型能调用外部工具。但自己撸一个MCP服务端,你得处理JSON-RPC的格式,折腾传输层(SSE还是stdio),写错误恢复,还要确保Schema跟函数签名一致。
FastMCP把这些全打包了。我试了下它的核心用法:
“`python
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()
“`
这段代码跑的服务器,任何MCP客户端都能调用`add`。类型注解自动生成工具Schema,`docstring`变成工具描述。传输层协商和JSON-RPC格式转换,框架替你做了。你只写业务逻辑。
FastMCP不是纯粹的开源玩具。Prefect团队维护它。项目GitHub上26457个星,日下载量百万次。跨语言70%的MCP服务器跑的某种版本FastMCP——这个数字是项目方自己报的。2024年,FastMCP 1.0被官方MCP Python SDK吸收,但独立版还活着,迭代更快。社区认为独立版更灵活,不受官方SDK版本节奏限制。
## 它解决了MCP开发中三个实际问题
FastMCP把自己拆成三块:Servers、Apps、Clients。
**Servers**:把你的Python函数包装成MCP的工具(tool)、资源(resource)和提示(prompt)。服务器能本地跑,也能挂远程。传输层是SSE还是stdio,框架自动选。这不是一堆样板代码——你定义资源、暴露数据、声明提示,框架生成协议定义。官方文档在[Servers章节](https://gofastmcp.com/servers/server)有完整说明。
**Apps**:给工具加交互UI。不是纯文本返回,是能点击操作的组件。举个例子,你可以让用户在LLM对话里配置参数后才调用工具。这对参数复杂或者需要用户确认的场景很实用。
**Clients**:连接任何MCP服务器。有Python编程接口,也有命令行。认证、超时、重连内置。如果你需要从代码里调用其他MCP服务,或者用CLI测试,这个模块直接上手。
这三块组合起来,从定义工具到让LLM消费,一条线走通。
## 生产环境直接用的
很多MCP项目是Demo级别。连接断了不管,协议版本变了不通知,错误处理就是抛异常。FastMCP内建了连接管理、错误恢复、认证协商。你不需要先读MCP协议规范就能跑起来。
项目当前是1.x稳定版,MIT许可证,Python 3.8+。如果你跑企业级的东西,Prefect团队做了商业产品叫[Horizon](https://www.prefect.io/horizon)。它加了SSO登录、工具级别权限控制、审计日志、GitHub部署带分支预览和回滚。开源版适合单机或小团队,需要这些管理功能就付费。
## 如果你现在就要试
对MCP协议完全陌生,先读官方[Quickstart](https://gofastmcp.com/getting-started/quickstart),十分钟看完。然后直接抄上面的代码跑起来。比读文档管用。
项目还在加功能,建议关注GitHub Releases。当前是稳定版,但新版本不会打乱现有用法。想让LLM调你的Python代码,FastMCP是目前最直接的路。