项目简介
用于将 FastAPI 应用端点自动转换为 MCP 的开源工具,无需复杂配置,它通过直接集成 FastAPI 应用,自动发现所有端点并保留其请求/响应模型和文档,方便开发者快速部署 MCP 服务
核心功能
-
无缝集成: 将 MCP 服务直接挂载到 FastAPI 应用,或独立部署
-
零配置: 自动识别 FastAPI 端点并转为 MCP 工具
-
保留文档: 端点的 Swagger 文档和模型架构完整保留
-
灵活部署: 支持在同一应用或不同应用中运行 MCP 服务
-
自定义选项: 可通过操作 ID 或标签过滤暴露的端点,调整工具命名和描述
使用场景
-
开发者希望快速将 FastAPI 的 API 端点暴露为 MCP 工具,供支持 MCP 的客户端(如 Cursor、Claude Desktop)使用
-
适用于需要 AI 模型与 API 交互的场景,例如通过 MCP 协议调用 API
进阶功能
-
自定义端点: 可指定暴露或排除特定端点(通过操作 ID 或标签)
-
动态更新: 支持在添加新端点后刷新 MCP 服务
-
独立部署: 可将 MCP 服务与 FastAPI 应用分开运行
-
SSE 支持: 通过 Server-Sent Events (SSE) 与 MCP 客户端(如 Cursor)连接,或使用 mcp-proxy 支持非 SSE 客户端(如 Claude Desktop)
基本用法
使用 FastAPI-MCP 最简单的方法是将 MCP 服务器直接添加到您的 FastAPI 应用程序中:
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
mcp = FastApiMCP(
app,
# Optional parameters
name="My API MCP",
description="My API description",
base_url="http://localhost:8000",
)
# Mount the MCP server directly to your FastAPI app
mcp.mount()
就这样!您自动生成的 MCP 服务器现在可在 https://app.base.url/mcp
处访问。
工具命名
FastAPI-MCP 使用您的 FastAPI 路由中的operation_id 作为 MCP 工具名称。当您没有指定 operation_id
时,FastAPI 会自动生成一个,但这些名称可能难以理解。
比较以下两个端点定义:
# Auto-generated operation_id (something like "read_user_users__user_id__get")
async def read_user(user_id: int):
return {"user_id": user_id}
# Explicit operation_id (tool will be named "get_user_info")
async def read_user(user_id: int):
return {"user_id": user_id}
为了更清晰、更直观的工具名称,我们建议在 FastAPI 路由定义中添加显式的 operation_id
参数。
项目链接
https://github.com/tadata-org/fastapi_mcp
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)