FastMCP Pythonic 模型上下文协议框架
简化 MCP 服务器和客户端开发的高性能 Python 框架,通过"快速"、"简洁"和"Pythonic"的设计理念,显著提升 AI 接口开发效率
开发效率提升
比官方 SDK 快 3 倍,部署时间从两周缩短到 48 小时,产品迭代周期从 2 周缩短到 3 天
核心特性
支持工具、资源、提示三大核心功能,提供服务器组合、远程代理、OpenAPI 集成等高级特性
FastMCP 概览
核心概念与设计哲学
FastMCP 是一个专为构建 MCP (Model Context Protocol) 服务器和客户端而设计的 Python 框架 [^69^] [^71^]。 其核心设计哲学围绕着"快速 (Fast)"、"简洁 (Simple)"、"Pythonic"以及"完整 (Complete)"这四个关键词展开 [^69^] [^80^]。
FastMCP 旨在显著降低开发者构建 MCP 服务的门槛,通过提供高级抽象和符合 Python 语言习惯的接口,使得开发者能够专注于工具和资源的业务逻辑实现,而非底层的协议细节和服务器管理 [^63^] [^78^]。 这种设计理念使得开发者仅需通过简单的装饰器即可定义功能,极大地减少了样板代码的编写 [^69^] [^75^]。
核心组件
工具 (Tools)
允许 LLM 通过执行 Python 函数来执行特定操作
资源 (Resources)
向 LLM 暴露只读数据,类似于 GET 请求
提示 (Prompts)
定义可重用的 LLM 交互模板
主要功能与特性
核心功能
工具 (Tools)
通过
@mcp.tool() 装饰器,开发者可以轻松地将一个同步或异步函数注册为一个 MCP 工具
[^2^]
[^6^]。
FastMCP 会自动根据函数的类型提示和文档字符串生成必要的 MCP 模式。
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
@mcp.tool()
async def get_stock_price(symbol: str) -> float:
"""Get current stock price"""
return await fetch_price(symbol)
资源 (Resources)
通过
@mcp.resource() 装饰器向 LLM 暴露只读数据,支持静态和动态资源定义
[^93^]。
@mcp.resource("greeting://{name}")
def greeting_resource(name: str) -> str:
"""Generate personalized greeting"""
return f"Hello, {name}! Welcome to FastMCP."
@mcp.resource("config://server")
def server_config() -> dict:
"""Get server configuration"""
return {"version": "2.0", "status": "running"}
提示 (Prompts)
定义可重用的 LLM 交互模板,标准化与 LLM 的交互过程。在 FastMCP 2.2.5+ 中,提示函数可通过
Context 对象访问额外的 MCP 信息
[^40^]。
性能与效率
简洁性与 Pythonic 风格
Pythonic 设计原则
极简的装饰器语法
一个函数加一个装饰器即可定义 MCP 工具
自动化模式生成
根据类型提示和文档字符串自动生成 MCP Schema
原生异步支持
完美支持 async/await 语法,提升并发性能
可扩展性与灵活性
服务组合
支持将多个 MCP 服务器模块化整合
多传输协议
支持 Stdio、SSE、内存传输等多种模式
FastAPI 集成
深度集成 FastAPI 和 OpenAPI
实际应用与开发
构建 MCP 服务器与客户端
创建 MCP 服务器
from fastmcp import FastMCP
# 创建 MCP 服务器实例
mcp = FastMCP("Math Tools Server",
description="提供基础数学计算功能的 MCP 服务")
# 定义工具
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers together"""
return a + b
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Multiply two numbers"""
return a * b
# 定义资源
@mcp.resource("info://version")
def version_info() -> dict:
"""Get server version information"""
return {"version": "1.0.0", "status": "active"}
# 启动服务器
if __name__ == "__main__":
mcp.run()
通过
fastmcp dev server.py 启动开发服务器,自动打开 MCP 检查器
[^92^]。
创建 MCP 客户端
from fastmcp import Client
# 创建客户端实例
client = Client("http://localhost:8080/mcp")
# 获取服务器信息
server_info = client.get_server_information()
print(f"Server: {server_info.name}")
# 列出可用工具
tools = client.list_tools()
print(f"Available tools: {[t.name for t in tools]}")
# 调用工具
result = client.call_tool("add", {"a": 5, "b": 3})
print(f"5 + 3 = {result}")
与 FastAPI 的集成
通过
fastapi-mcp 库,可以方便地将现有的 FastAPI 应用转换为 MCP 服务
[^67^]
[^68^]。
这种集成方式能够自动将 FastAPI 应用的路由暴露为 MCP 工具。
FastAPI 集成示例
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from pydantic import BaseModel
app = FastAPI()
# 创建 FastApiMCP 实例
fastapi_mcp = FastApiMCP(app)
# 定义 Pydantic 模型
class User(BaseModel):
name: str
age: int
# 定义 FastAPI 路由
@app.post("/calculate/bmi")
async def calculate_bmi(weight: float, height: float) -> float:
"""Calculate BMI (Body Mass Index)"""
return weight / (height ** 2)
@app.get("/user/{user_id}")
async def get_user(user_id: int) -> User:
"""Get user information"""
return User(name="John Doe", age=30)
# FastApiMCP 会自动将这些路由暴露为 MCP 工具
# 访问 /mcp 端点获取 MCP 描述
# 访问 /docs 查看 OpenAPI 文档
在 AI 智能体中的应用案例
数学计算 AI 智能体
使用 FastMCP、LangChain 和 LangGraph 构建能够执行复杂数学计算的 AI 智能体 [^61^]:
构建数学工具服务器
使用 FastMCP 创建提供基础数学运算的 MCP 服务
创建 LangChain 智能体
使用 LangChain 构建 ReAct 风格的 AI 智能体
集成 MCP 工具
将 MCP 服务器提供的数学工具集成到智能体中
复杂工作流
使用 LangGraph 构建多步骤的数学问题解决工作流
'What is 4*4?'"] --> B["LangChain 智能体"] B --> C["分析问题"] C --> D["选择工具"] D --> E["调用 MCP 服务
multiply 4, 4"] E --> F["FastMCP 服务器"] F --> G["执行计算
4 * 4 = 16"] G --> H["返回结果"] H --> I["生成回答"] I --> J["返回用户
'4 multiplied by 4 is 16'"] style A fill:#ffffff,stroke:#0f766e,stroke-width:2px,color:#1f2937 style B fill:#f0fdfa,stroke:#0f766e,stroke-width:2px,color:#1f2937 style C fill:#f0fdfa,stroke:#0f766e,stroke-width:2px,color:#1f2937 style D fill:#f0fdfa,stroke:#0f766e,stroke-width:2px,color:#1f2937 style E fill:#fef3c7,stroke:#0f766e,stroke-width:2px,color:#1f2937 style F fill:#fef3c7,stroke:#0f766e,stroke-width:2px,color:#1f2937 style G fill:#fef3c7,stroke:#0f766e,stroke-width:2px,color:#1f2937 style H fill:#f0fdfa,stroke:#0f766e,stroke-width:2px,color:#1f2937 style I fill:#f0fdfa,stroke:#0f766e,stroke-width:2px,color:#1f2937 style J fill:#ffffff,stroke:#0f766e,stroke-width:2px,color:#1f2937
高级特性与集成
FastMCP 2.0 的新特性
与 LangChain 和 LangGraph 的集成
FastMCP 与 LangChain 和 LangGraph 的集成为构建复杂 AI 智能体提供了强大支持 [^61^]。 在这种模式下,FastMCP 负责提供标准化、可被发现的外部工具,LangChain 和 LangGraph 负责高层次的智能体逻辑编排。
集成架构
远程服务器代理与组合
服务组合架构
代理配置示例
# 通过代理连接远程 MCP 服务
mcp-proxy --remote http://remote-server:8000/mcp
# 客户端配置
client = Client("http://localhost:8080/mcp")
# 实际调用会转发到远程服务器
result = client.call_tool("remote_tool", {...})
优势与对比
相较于官方 MCP Python SDK 的优势
更高的开发效率
FastMCP 通过简洁的装饰器语法和自动化处理,显著减少了样板代码的编写。开发者反馈称其比官方 SDK 快 3 倍,部署时间从两周缩短到 48 小时 [^75^]。
未来展望
持续发展与新功能规划
安全性增强
认证授权机制
集成 OAuth、API 令牌等标准认证方案
细粒度权限控制
支持 RBAC、ABAC 等访问控制模型
性能优化
高并发处理
优化异步处理和并发能力
集群部署支持
支持大规模集群部署和自动化运维
框架集成扩展
LangChain 深度集成
提供更便捷的智能体开发体验
LlamaIndex 等支持
扩展更多 AI 框架集成
在 MCP 生态系统中的角色
核心价值贡献
协议推广者
通过简洁 API 降低 MCP 使用门槛
桥梁构建者
连接 LLM 与外部世界的工具和数据
生态丰富者
促进多样化 MCP 服务的开发
技术融合者
推动 MCP 与传统系统的融合
未来发展趋势
随着 MCP 协议的不断成熟和 AI 技术的持续进步,FastMCP 将继续作为构建 MCP 服务的首选框架之一, 赋能开发者构建更智能、更强大的 AI 应用,并推动 MCP 生态向更标准化、更安全、更易用的方向发展 [^83^]。