FastAPI-MCP:让AI轻松“对话”你的后端服务
FastAPI-MCP让AI轻松“对话”你的后端服务大家好今天我们来聊聊一个能让AI智能体比如Claude、GPTs直接调用你现有FastAPI接口的神奇工具——FastAPI-MCP。如果你想让AI帮你操作自己的应用数据但又不想写一堆适配代码那这篇文章就是为你准备的 什么是MCP为什么需要FastAPI-MCP想象一下你开发了一个功能完善的FastAPI应用里面有用户管理、订单处理等各种接口。现在你想让Claude等AI助手能根据你的指令比如“帮我查一下用户张三的订单”直接去调用你的后端接口。这中间的“翻译”工作就可以交给MCP。MCPModel Context Protocol是Anthropic提出的一种新兴开放协议它就像一套标准的“对话规则”让不同的AI助手能够以统一的方式理解和使用外部工具比如你的API。而FastAPI-MCP本质上是一个超级适配器。它不用你修改现有的业务逻辑代码就能自动将你熟悉的FastAPI路由转换成AI能理解并调用的MCP工具。简单比喻你的FastAPI应用好比一个只会说中文的专家AI助手是个只会说英文的经理。FastAPI-MCP就是中间那位专业翻译官让两人沟通无障碍。⚡️ 核心魅力三行代码的魔法看了官方文档最震撼的一点就是它的简洁。从零到拥有一个带认证的MCP服务器真的只需要三行核心代码fromfastapiimportFastAPIfromfastapi_mcpimportFastApiMCP# 1. 导入翻译官appFastAPI()# 2. 这是你原本的FastAPI应用mcpFastApiMCP(app)# 3. 把应用交给翻译官mcp.mount_http()# 翻译官开始工作挂载MCP路由执行上述代码后你的MCP服务器就会在https://你的应用地址/mcp自动生成并待命。AI助手通过这个入口就能发现和使用你暴露的所有接口工具。️ 主要特性详解为什么它很棒内置身份验证无缝安全过渡这是最大的亮点之一你的FastAPI应用可能已经用Depends()设置了复杂的权限验证如OAuth2、JWT。FastAPI-MCP会直接继承这些安全规则。AI在调用你的接口时也必须满足同样的登录或权限要求安全零妥协。纯正FastAPI血统非简单转换器它并非一个将OpenAPI文档硬转成MCP格式的外部工具而是深度集成在FastAPI ASGI框架内部。这意味着更高效的内部通信和更原生的行为表现。真正的“零配置”你不需要为每个接口写描述、定义输入输出模型给AI看。FastAPI-MCP会自动读取你已有的Pydantic请求/响应模型、接口文档字符串并原样保留其结构和约束直接转化为MCP工具的定义。你在Swagger UI里看到什么样AI拿到的工具说明就是什么样。灵活的部署方式方式A同应用挂载如上面的例子将MCP服务器挂载到你主应用的/mcp路径下部署简单。方式B独立部署你也可以将MCP服务器作为一个独立的ASGI应用启动实现与主服务的物理分离灵活性更高。 从零开始使用指南小白友好让我们写一个完整的例子假设我们有一个管理图书的简单API。第1步安装pipinstallfastapi-mcp第2步创建你的FastAPI应用并集成MCP# main.pyfromfastapiimportFastAPI,Depends,HTTPExceptionfrompydanticimportBaseModelfromtypingimportListfromfastapi_mcpimportFastApiMCP# --- 以下是你的常规FastAPI代码 ---appFastAPI(title图书管理系统)# 1. 定义数据模型classBook(BaseModel):id:inttitle:strauthor:strclassBookCreate(BaseModel):title:strauthor:str# 一个简易的“数据库”fake_books_db[]# --- 你的常规代码结束 ---# --- 核心集成仅需额外增加这3行 ---mcpFastApiMCP(app)# 你可以选择只暴露特定的路由例如下面只暴露查询全部图书的接口# mcp FastApiMCP(app, include_routes[get_books])mcp.mount_http()# --- 集成完毕 ---# --- 定义你的路由 ---app.get(/books,response_modelList[Book],summary获取所有图书,tags[图书])asyncdefget_books():这个接口可以返回系统中所有的图书列表。returnfake_books_dbapp.post(/books,response_modelBook,summary创建新图书,tags[图书])asyncdefcreate_book(book:BookCreate):传入标题和作者创建一本新图书。new_idlen(fake_books_db)1new_bookBook(idnew_id,**book.dict())fake_books_db.append(new_book)returnnew_book# 假设这个接口需要认证我们不希望AI随意调用defverify_token(token:strDepends(...)):# 复杂的认证逻辑...passapp.delete(/books/{book_id},dependencies[Depends(verify_token)])asyncdefdelete_book(book_id:int):# 删除逻辑...pass第3步运行你的应用uvicorn main:app--reload现在访问http://127.0.0.1:8000/docs可以看到你的Swagger API文档。同时你的MCP服务器已在http://127.0.0.1:8000/mcp就绪。第4步在AI平台配置以Claude Desktop为例编辑其配置文件claude_desktop_config.json{mcpServers:{my_book_app:{command:npx,args:[-y,modelcontextprotocol/serve-fasthttp,http://127.0.0.1:8000/mcp]}}}重启Claude后AI就能看到并使用get_books和create_book这两个工具了你可以直接说“请调用我的图书API帮我创建一本名为《FastAPI-MCP指南》的书作者是我。” 总结与最佳实践什么时候该用FastAPI-MCP你已有成熟的FastAPI项目想快速赋予AI调用能力。你重视API的安全性希望AI调用也遵循既有的严格认证。你不想维护两套定义一套OpenAPI一套给AI的工具定义。最佳实践提示精心设计工具名虽然工具名默认由路由函数名生成但你可以在装饰器中使用summary参数让AI更清楚工具用途。善用“包含”与“排除”通过include_routes或exclude_routes参数严格控制哪些接口对AI可见。像delete_book这种高危操作通常不建议暴露。写好文档字符串你在端点下写的文档会成为AI理解工具功能的主要依据请清晰描述。FastAPI-MCP极大地降低了AI Agent与后端服务集成的门槛。它尊重你现有的代码和架构以最小侵入的方式为你的应用打开了通向AI世界的大门。现在就去试试让你的API和AI开始对话吧本文基于FastAPI-MCP官方文档日期2026年2月。具体使用请以项目最新文档为准。