FastMCP 让 Python 开发者用装饰器和类型注解,将普通函数变成 LLM 可调用的工具——代码即协议。
引言:当 MCP 遇上 Pythonic 设计
MCP(Model Context Protocol)为 LLM 提供了访问外部资源的标准化接口,但传统开发需处理复杂协议细节。FastMCP 用 Python 装饰器和类型驱动开发重构了这一流程——开发者只需关注函数逻辑,框架自动处理协议封装、路由和类型验证。
开源 4 个月,GitHub 收获 7.8 K 星,已被 Claude Desktop、Cursor 等工具集成。下文将拆解其核心能力,并提供可直接投产的部署方案。
正文:极简协议开发实战
1. 核心概念:三行代码暴露一个工具
FastMCP 通过装饰器将三类功能暴露给 LLM:
工具(Tools):执行带副作用的操作(如 API 调用)
from fastmcp import FastMCPmcp = FastMCP("DataProcessor")@mcp.tool()def query_db(sql: str) -> list[dict]: # 类型注解自动生成参数约束 """执行 SQL 并返回 JSON 结果""" return db.execute(sql).to_dicts()
资源(Resources):提供只读数据(类似 RESTful GET)
@mcp.resource("user://{user_id}/profile") # URI 模板支持动态路由def get_profile(user_id: int) -> dict: return User.get(user_id).serialize()
提示(Prompts):定义可复用的对话模板
@mcp.prompt()def debug_error(error_log: str) -> str: return f"请分析以下错误并给出修复方案:\n{error_log}"
协议优势:函数文档字符串(如 """执行 SQL..."""
)直接成为 LLM 的 tool description,代码即文档。
2. 部署:生产级服务四步启动
# 1. 安装(推荐 uv 管理依赖)brew install uv # macOSpip install uv # Windows/Linuxuv pip install fastmcp uvicorn[standard]# 2. 创建服务文件 server.pyfrom fastmcp import FastMCPmcp = FastMCP("FinanceAgent", dependencies=["pandas"]) # 声明依赖@mcp.tool()def analyze_revenue(data: dict) -> float: """计算季度营收增长率""" df = pd.DataFrame(data) return (df["revenue"].pct_change() * 100).iloc[-1]if __name__ == "__main__": mcp.run(port=8000, reload=True) # 热重载便于调试# 3. 启动服务uvicorn server:app --reload# 4. 连接客户端(如 Claude Desktop)# 在设置中添加 MCP 服务器路径:http://localhost:8000
关键配置项:
dependencies
声明环境依赖,部署时自动检查mcp.run(transport='http')
支持 SSE/Stdio 等协议3. 进阶:解决真实场景问题
组合多个服务:统一入口调用分散工具
from fastmcp.compose import MCPComposercomposer = MCPComposer()composer.add_server("http://finance-server:8000")composer.add_server("http://hr-server:8001")composer.run() # 聚合为单一 MCP 端点
图像处理:直接返回图片内容
from fastmcp import imageContent@mcp.tool()def generate_plot() -> bytes: plt.plot([1, 2, 3]) return imageContent(plt) # 自动转 base64
错误溯源:抛出 UserError 让 LLM 理解异常
if not db.connected: from fastmcp import UserError raise UserError("数据库未连接,请检查网络")
4. 调试:内置 MCP Inspector
启动实时测试控制台:
fastmcp dev server.py # 交互式验证工具调用
支持发送模拟请求、查看日志流、跟踪会话状态。
为什么选择 FastMCP?技术决策者的 checklist
- 效率碾压:比直接使用 MCP SDK 减少 80% 样板代码协议兼容:完整支持资源模板、工具流、提示链生产就绪:内置认证、CORS、SSE 通知、OpenAPI 导出生态集成:一键接入 Claude/Cursor,无需额外适配
当 LLM 成为新“操作系统”,MCP 即是它的系统调用层。FastMCP 用 Python 的优雅抽象,让开发者专注业务逻辑而非协议胶水代码。项目地址:FastMcp
往期回顾:
🚀 【下载工具新势力】高中生开发 Ai Ghost Downloader 3,实测速度超 IDM