今天,我们来深入了解一款极其实用的工具——FastAPI MCP。如果你正在使用FastAPI构建API,并希望你的端点能够直接被AI模型(如GPT、Claude等)访问,那么本指南正是为你准备的。
FastAPI MCP是什么?
简而言之,FastAPI MCP 是一个零配置解决方案,它能自动将您的 FastAPI 端点作为 模型上下文协议 (MCP) 工具暴露出来。通过 MCP 兼容性,AI 模型可以以无缝、标准化的方式直接与您的 API 进行交互。
本质上,FastAPI MCP 充当了一座桥梁:它让您的 API 能够被各种 AI 模型发现和调用。想象一下,只需通过 Cursor 或 Claude Desktop 等工具,就能让 Claude 或 GPT 调用您的 API 端点来获取数据、处理信息或触发业务逻辑。这不仅强大,而且充满乐趣!
为什么选择 FastAPI MCP?
在开发AI驱动的应用程序时,越来越常见的一种场景是需要让大语言模型(LLM)与外部服务进行交互,例如:
-
查询您的数据库
-
调用计算服务
-
访问内部工具
-
……以及更多内容
传统上,这需要为每个AI集成构建自定义端点或编写专用适配器。而通过FastAPI MCP,只需几行代码就能让现有API直接对接AI模型——大幅节省开发时间和精力。
逐步指南:本地快速上手FastAPI MCP
第一步:准备Python环境
首先,确保已安装Python(推荐使用3.10及以上版本)。可通过以下命令检查Python版本:
python --version
# or
python3 --version
如果看到正确的版本号(例如 Python 3.10.x),说明你的环境已准备就绪。
第二步:安装所需依赖包
安装 FastAPI、Uvicorn 和 FastAPI MCP:
pip install fastapi uvicorn fastapi-mcp
第三步:创建一个简单的FastAPI应用
为确保兼容性并减少配置,从一个基础示例开始。新建一个名为 main.py 的文件,并添加以下内容:
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI(title="Simple API")
@app.get("/hello", operation_id="say_hello")
async def hello():
"""A simple greeting endpoint"""
return {"message": "Hello World"}
# Expose MCP server
mcp = FastApiMCP(app, name="Simple MCP Service")
mcp.mount()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
此示例包含一个返回问候语的单一 /hello 端点。
步骤4:运行并测试您的应用
现在启动你的服务器:
python main.py
或
uvicorn main:app --reload
您应该能看到FastAPI应用已在http://127.0.0.1:8000上运行。
步骤5:探索MCP端点
在浏览器中打开 http://127.0.0.1:8000/mcp。
注意:与标准REST API不同,MCP端点采用服务器发送事件(SSE)技术,因此您将看到如下输出:
event: endpoint
data: /mcp/messages/?session_id=a543519a5f3848febfd4f40b5ad3b5c7
这意味着MCP服务器已启动并准备好接受AI客户端的连接。
将FastAPI MCP连接到AI客户端
假设你想将FastAPI MCP连接到像Cursor这样的客户端。方法如下:
方法一:SSE(服务器发送事件)连接
大多数现代MCP客户端(Claude Desktop、Cursor、Windsurf等)都支持SSE。在客户端设置中,请使用类似以下配置:
{
"mcpServers": {
"fastapi-mcp": {
"url": "http://localhost:8000/mcp"
}
}
}
例如,在Cursor中,进入设置 → “MCP” → “添加新的全局MCP服务器”,并将上述配置添加到您的mcp.json文件中。
当您的FastAPI MCP服务器运行后,AI集成开发环境将自动检测并启用新功能。
方法二:使用mcp-remote作为桥梁
如需认证支持或您的 MCP 客户端不支持 SSE,可以使用 mcp-remote 作为桥梁:
{
"mcpServers": {
"fastapi-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/mcp",
"8080"
]
}
}
}
实践应用:FastAPI MCP实战演示
当你配置好AI客户端与FastAPI MCP服务器通信后,只需简单询问——例如在Cursor的Agent标签页中输入:
“帮我调用/hello接口”。
AI就会像人类开发者一样运行MCP工具并返回接口结果。
高级使用技巧
当你掌握了基础知识后,FastAPI MCP 为生产环境提供了强大的功能:
选择性公开端点
您可能不希望所有端点都向AI开放。FastAPI MCP允许您精确控制哪些端点可被访问:
# Only expose specific operations
mcp = FastApiMCP(app, include_operations=["say_hello", "get_user_info"])
# Exclude certain operations
mcp = FastApiMCP(app, exclude_operations=["delete_user", "update_settings"])
# Expose only endpoints with specific tags
mcp = FastApiMCP(app, include_tags=["public", "read_only"])
# Exclude endpoints with specific tags
mcp = FastApiMCP(app, exclude_tags=["admin", "sensitive"])
添加身份验证
为确保您的MCP端点安全,可利用FastAPI依赖项:
from fastapi import FastAPI, Depends, Security
from fastapi.security import APIKeyHeader
api_key_header = APIKeyHeader(name="X-API-Key")
async def verify_api_key(api_key: str = Security(api_key_header)):
if api_key != "your-secret-key":
raise HTTPException(status_code=403, detail="Invalid API key")
return api_key
mcp = FastApiMCP(app, mcp_dependencies=[Depends(verify_api_key)])
mcp.mount()
现在,每次MCP调用都需要在请求头中包含有效的API密钥。
自定义响应处理
您可能希望包含元数据或自定义发送给AI的响应:
async def response_processor(request, response, response_data):
response_data["processed_by"] = "custom_processor"
response_data["timestamp"] = datetime.now().isoformat()
return response_data
mcp = FastApiMCP(app, response_processor=response_processor)
mcp.mount()
独立部署
对于复杂配置,您可能希望将 MCP 服务器与主 API 分开托管:
# api_app.py
from fastapi import FastAPI
api_app = FastAPI()
# mcp_app.py
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from api_app import api_app
mcp_app = FastAPI()
mcp = FastApiMCP(api_app)
mcp.mount(mcp_app)
根据需要独立部署 api_app 和 mcp_app。
安全最佳实践
在使用FastAPI MCP时:
-
仅暴露安全、只读的端点——避免危险操作如 DELETE 和 PUT。
-
在适当情况下要求身份验证。
-
使用 Pydantic 模型进行严格的参数验证。
-
考虑对响应中的敏感数据进行过滤或屏蔽处理。
结语
开始使用FastAPI MCP非常简单。只需极少的工作量,您就能将现有API转化为AI可访问的接口,无需重写代码或花费时间定制适配器。
核心步骤如下:
-
安装Python
-
安装依赖项(fastapi、uvicorn 和 fastapi-mcp)
-
创建一个 FastAPI 应用
-
只需几行代码即可添加 MCP 支持
-
从您喜欢的AI集成开发环境或工具连接并测试
如需了解更多功能及最新特性,请参阅 GitHub 上的 FastAPI MCP 官方文档。
其他推荐的MCP服务器
Apidog MCP 服务 可让您将 Apidog 的 API 文档提供给 Cursor 等 AI 驱动的集成开发环境,以及其他支持 MCP 协议的工具。该服务支持多种应用场景:既可以连接您 Apidog 项目中已记录的 API,也能访问公开发布的 API 文档,甚至支持使用 OpenAPI/Swagger 规范文件。
🎬 视频内容
点击跳转视频
安装过程极其简单——只需确保已安装Node.js(18或更高版本)。根据您的使用场景选择合适的配置方式。对于私有化部署,您还可以添加自定义API基础URL。通过Apidog MCP Server,开发者能利用AI助手从API文档生成代码、修改代码、搜索API文档等,这些功能都将显著提升开发效率。
实际使用时,您只需告知AI助手想对API文档执行什么操作(例如:“根据API文档为/users端点生成所有MVC代码”),AI就能理解并完成任务。这在团队协作环境中尤为宝贵,能确保所有开发者都基于统一规范的API文档源进行工作。
.com/watch?v=lw046MO5POY)
安装过程极其简单——只需确保已安装Node.js(18或更高版本)。根据您的使用场景选择合适的配置方式。对于私有化部署,您还可以添加自定义API基础URL。通过Apidog MCP Server,开发者能利用AI助手从API文档生成代码、修改代码、搜索API文档等,这些功能都将显著提升开发效率。
实际使用时,您只需告知AI助手想对API文档执行什么操作(例如:“根据API文档为/users端点生成所有MVC代码”),AI就能理解并完成任务。这在团队协作环境中尤为宝贵,能确保所有开发者都基于统一规范的API文档源进行工作。