你是否曾经想把自己的FastAPI应用变成一个MCP服务器,让AI可以直接调用你的API端点?却不想手动编写MCP工具的样板代码?今天要介绍的开源项目FastAPI MCP工具,正是为了解决这个问题而设计的。它是一个零配置工具,可以自动将FastAPI端点作为MCP工具暴露出来,并支持认证。

项目基本信息

信息项详情
项目名称FastAPI MCP工具
GitHub地址https://github.com/tadata-org/fastapi-mcp
项目描述一款零配置工具,可自动将FastAPI作为MCP工具。
作者tadata-org
开源协议MIT License
开源状态公开状态
LanguagesPython
支持平台Windows / macOS / Linux
最后更新2026-04-23

一、项目介绍

FastAPI MCP工具是一个Python库,它可以将你的FastAPI应用自动转换为MCP服务器。与传统的“OpenAPI转MCP”工具不同,它采用FastAPI优先的方法,直接使用FastAPI的原生依赖项和ASGI接口。

这个工具的核心特性包括:

  • 内置认证:使用现有的FastAPI依赖项进行认证
  • 零配置:只需指向你的FastAPI应用即可工作
  • 保留模式:保留请求模型和响应模型的模式
  • 保留文档:保留所有端点的文档,就像Swagger中的一样
  • 灵活部署:将MCP服务器挂载到同一个应用上,或单独部署
  • ASGI传输:直接使用FastAPI的ASGI接口进行高效通信

二、核心优势

零配置自动转换

只需几行代码,就能将现有的FastAPI应用自动转换为MCP服务器,无需手动编写MCP工具定义。

原生FastAPI集成

不是简单的OpenAPI转换器,而是FastAPI的原生扩展:

  • 使用熟悉的FastAPI Depends()进行认证和授权
  • 直接使用ASGI接口,消除额外的HTTP调用
  • 保留所有端点文档

统一或分离部署

可以选择将MCP服务器挂载到同一个FastAPI应用上,也可以单独部署,灵活性高。

保留数据模型

自动保留Pydantic请求模型和响应模型的模式,确保数据类型安全。

开源免费

MIT许可证,代码完全公开,可自由使用和修改。

三、适用场景

为现有API添加MCP支持

如果你已经有一个FastAPI应用,想让它支持MCP协议,FastAPI-MCP是最快的方案。

AI后端服务开发

开发AI应用的后端时,可以直接用FastAPI-MCP暴露业务接口,让AI直接调用。

快速原型验证

快速将API原型转换为MCP工具,测试AI与后端服务的交互。

微服务集成

将多个FastAPI微服务分别转换为MCP服务器,通过MCP客户端统一调用。

四、安装教程

系统要求

工具用途下载/安装方式
Python运行环境[https://python.org/] (版本要求:3.10 或以上,推荐3.12)
uvPython包管理器(推荐)`curl -LsSf https://astral.sh/uv/install.shsh`
FastAPI项目需要转换的应用已有或新建

安装步骤

第一步:安装fastapi-mcp

使用uv(推荐):

uv add fastapi-mcp

或使用pip:

pip install fastapi-mcp

第二步:添加到FastAPI应用

from fastapi import FastAPI
from fastapi_mcp import FastApiMCP

app = FastAPI()

# 创建MCP实例
mcp = FastApiMCP(app)

# 将MCP服务器挂载到FastAPI应用
mcp.mount()

第三步:启动应用

uv run uvicorn main:app --reload

现在,你的MCP服务器可以在https://app.base.url/mcp访问。

第四步:配置MCP客户端

在Claude Desktop或Cursor的MCP配置中,添加:

{
  "mcpServers": {
    "my-fastapi-mcp": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

五、使用示例

示例1:基本FastAPI应用

from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from pydantic import BaseModel

app = FastAPI()
mcp = FastApiMCP(app)

class Item(BaseModel):
    name: str
    price: float

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

@app.post("/items/")
def create_item(item: Item):
    return {"name": item.name, "price": item.price}

mcp.mount()

启动后,所有端点会自动转换为MCP工具。

示例2:带认证的MCP

from fastapi import FastAPI, Depends, HTTPException
from fastapi_mcp import FastApiMCP
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials

app = FastAPI()
mcp = FastApiMCP(app)
security = HTTPBearer()

def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)):
    if credentials.credentials != "secret-token":
        raise HTTPException(status_code=401)
    return credentials.credentials

@app.get("/secure-data")
def get_secure_data(token: str = Depends(verify_token)):
    return {"data": "sensitive information"}

mcp.mount()

MCP服务器会自动使用相同的认证依赖项。

示例3:单独部署MCP服务器

如果你不想将MCP服务器挂载到同一个应用上,可以单独创建:

from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from myapp import app as my_fastapi_app  # 原有的FastAPI应用

mcp = FastApiMCP(my_fastapi_app)

# 创建新的FastAPI应用用于MCP
mcp_app = FastAPI()
mcp_app.mount("/mcp", mcp.as_asgi())

示例4:自定义MCP路径

mcp = FastApiMCP(app)
mcp.mount(path="/custom-mcp-path")

示例5:仅暴露特定端点

目前FastAPI-MCP会暴露所有端点。如果需要过滤,可以通过FastAPI的路由分组或使用前缀来实现。

六、常见问题

问题1:Python版本要求

解决方案:FastAPI-MCP需要Python 3.10或以上版本,推荐3.12。使用python --version检查版本。

问题2:MCP端点无法访问

解决方案:

  • 确认已调用mcp.mount()
  • 检查端口是否正确(默认8000)
  • 访问http://localhost:8000/mcp验证

问题3:认证如何工作?

解决方案:FastAPI-MCP会复用FastAPI端点中的Depends()认证依赖项。MCP客户端调用时,需要在请求中包含正确的认证信息。

问题4:是否支持流式响应?

解决方案:FastAPI-MCP使用ASGI传输,支持流式响应。但具体取决于你的端点实现。

问题5:与OpenAPI转换器有什么区别?

解决方案:FastAPI-MCP不是解析OpenAPI文档,而是直接使用FastAPI应用的ASGI接口,因此更高效、更准确,且保留认证逻辑。

七、总结

FastAPI MCP工具是MCP生态中一个极具创新性的项目。它让FastAPI开发者可以用最少的代码,将现有API转换为MCP服务器,实现“零配置”的MCP集成。

这个项目的最大价值在于:

  1. 零配置:几行代码就能让FastAPI应用支持MCP
  2. FastAPI原生:不是笨重的转换器,而是原生的扩展
  3. 保留认证:复用现有的FastAPI依赖项
  4. 灵活部署:可挂载到同一应用或单独部署
  5. MIT许可证:可自由使用和修改

如果你是一个FastAPI开发者,希望让AI能够调用你的API,FastAPI MCP工具是最高效的解决方案。

标签: 开发者工具

已有 33 条评论

    1. AdamAI AdamAI

      零配置太强了,几行代码就把FastAPI变成MCP服务器。

    2. BellaCarlosCode BellaCarlosCode

      2K查看量,这个项目在Python圈很受欢迎。

    3. DaisyDev DaisyDev

      保留认证依赖项,安全又方便。

    4. EthanEasy EthanEasy

      ASGI传输效率高,没有额外的HTTP调用。

    5. FionaFind FionaFind

      可以和现有FastAPI应用无缝集成。