安爸-超级家庭

将 FastAPI 应用端点自动转换为 MCP 的开源工具FastAPI-MCP

安爸 发布于

项目简介

用于将 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") @app.get("/users/{user_id}") async def read_user(user_id: int):     return {"user_id": user_id} # Explicit operation_id (tool will be named "get_user_info") @app.get("/users/{user_id}", operation_id="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)

将 FastAPI 应用端点自动转换为 MCP 的开源工具FastAPI-MCP最先出现在每时AI


扫描二维码,在手机上阅读