FastAPI + Python 3.10++ uv+ ASGI transport+ FastAPI-MCP+ Model Context Protocol (MCP)

将FastAPI接口原生暴露为带认证的MCP工具

FastAPI承载原有接口,FastAPI-MCP将其转换为MCP工具,并复用FastAPI依赖完成认证。

✓ 零/最少配置✓ 保留请求响应模型

方案简介

FastAPI-MCP是一套面向FastAPI应用的MCP扩展方案,用于把现有FastAPI endpoints暴露为Model Context Protocol(MCP)tools,并提供认证能力。它不是单纯读取OpenAPI后生成工具的转换器,而是直接以FastAPI为基础工作,适合已经拥有FastAPI服务、希望增加MCP访问能力的团队和开发者。\n\n该方案强调最少配置:将FastAPI应用传给FastApiMCP,再调用mount(),即可把自动生成的MCP服务器挂载到原应用上。它还支持保留请求模型、响应模型及Swagger中的接口文档,并允许将MCP服务器与原FastAPI应用合并部署或分开部署。

亮点与能力

  • 内置认证:使用现有FastAPI依赖,为MCP endpoints提供认证与授权能力。\n- FastAPI原生集成:方案定位为FastAPI的原生扩展,而不是普通的OpenAPI到MCP转换器。\n- 低配置接入:只需指向FastAPI应用即可工作。\n- Schema保留:保留请求模型和响应模型的schema。\n- 文档保留:保留接口在Swagger中的原有文档。\n- 灵活部署:可以把MCP服务器挂载到同一个应用,也可以独立部署。\n- ASGI传输:直接使用FastAPI的ASGI接口进行通信,避免MCP到API的额外HTTP调用。

组成与分工

  • FastAPI:承载原有HTTP endpoints、请求响应模型、接口文档以及依赖注入逻辑,是整个方案的宿主应用。\n- FastAPI-MCP:通过FastApiMCP(app)连接FastAPI应用,并根据应用内容生成MCP服务器;通过mount()挂载到应用。\n- Model Context Protocol (MCP):作为工具暴露所遵循的协议,使FastAPI endpoints能够以MCP tools形式提供。\n- FastAPI Depends():复用既有依赖实现MCP端点的认证和授权。\n- ASGI transport:直接通过FastAPI的ASGI接口通信,不需要MCP再通过HTTP调用API。\n- Python与uv:Python是运行环境,项目推荐使用uv安装fastapi-mcp依赖。

前置要求

运行环境需要满足以下要求:\n\n- Python 3.10或更高版本,项目推荐Python 3.12。\n- 安装uv;项目将其作为推荐的Python包安装器。\n- 准备一个可运行的FastAPI应用,并能够在其中添加Python代码。\n\n推荐使用uv安装依赖:\n\n``bash\nuv add fastapi-mcp\n`\n\n也可以使用pip安装:\n\n`bash\npip install fastapi-mcp\n``

实施步骤

1. 准备FastAPI应用\n\n在已有FastAPI项目中确认存在应用对象。最小示例使用FastAPI()创建应用;实际项目也可以直接使用现有的FastAPI实例。\n\n### 2. 安装FastAPI-MCP\n\n在项目环境中执行项目提供的安装命令:\n\n``bash\nuv add fastapi-mcp\n`\n\n如果项目使用pip,则执行:\n\n`bash\npip install fastapi-mcp\n`\n\n### 3. 创建MCP服务器并挂载\n\n在FastAPI应用代码中导入FastApiMCP,将应用传入构造函数,然后调用mount():\n\n`python\nfrom fastapi import FastAPI\nfrom fastapi_mcp import FastApiMCP\n\napp = FastAPI()\n\nmcp = FastApiMCP(app)\n\n# Mount the MCP server directly to your FastAPI app\nmcp.mount()\n`\n\n### 4. 保留并复用现有能力\n\n将挂载逻辑加入现有应用后,原有FastAPI endpoints仍由同一个应用承载。需要认证时,继续使用已有的FastAPI依赖;请求模型、响应模型和接口文档由方案保留。\n\n### 5. 启动并访问\n\n按照原FastAPI应用的启动方式运行服务。完成挂载后,自动生成的MCP服务器位于应用基础地址下的/mcp`路径。

使用与配置要点

接入成功后,重点使用和验证以下内容:\n\n- 访问路径:MCP服务器默认可通过https://app.base.url/mcp访问,其中基础地址替换为实际应用地址。\n- 接口工具化:应用中的FastAPI endpoints会作为MCP tools对外提供。\n- 认证配置:如果原接口已有FastAPI Depends()依赖,可利用熟悉的依赖机制保护MCP endpoints。\n- 模型与文档检查:验证请求模型、响应模型以及Swagger中的接口文档是否在生成的MCP能力中保留。\n- 部署选择:默认可以将MCP挂在同一个FastAPI应用;如果基础设施需要,也可以采用独立部署。\n- 通信验证:方案直接使用FastAPI的ASGI接口通信,验证时无需为MCP额外设计一套到API的HTTP调用链。

注意事项与常见问题

  • 不是独立的OpenAPI转换器:项目明确采用FastAPI-first方式,重点是作为FastAPI的原生扩展工作。\n- 认证依赖现有FastAPI机制:认证和授权应围绕已有的FastAPI依赖实现,尤其是Depends()。\n- 部署方式可选:同应用挂载是最简单的方式,但项目也支持与原FastAPI应用分开部署。\n- 通信方式不同于额外HTTP代理:ASGI传输直接使用FastAPI应用接口,项目说明其可避免MCP到API的HTTP调用。\n- 环境版本:Python最低要求为3.10,推荐3.12;安装工具方面项目推荐uv。\n- 进一步参考:仓库提供完整文档链接和examples目录,可用于查看高级用法与代码样例。

优缺点

  • ✓ 零/最少配置
  • ✓ 保留请求响应模型

出处

本方案挖掘自开源项目 tadata-org/fastapi_mcp,方案内容与实施命令均来自其 README 原文。

方案出处
tadata-org/fastapi_mcp:Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!
12002 star Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。