一、簡介
-
? FastAPI-MCP是一個基于python FastAPI框架開發的開源項目,可以自動識別并暴露FastAPI接口為MCP工具
-
? 擁有FastAPI框架的所有優點,如異步高并發、獨立遠程部署、OpenAPI文檔
-
? 提供SSE、mcp-remote接入方式,支持設置授權訪問,適配各種支持MCP協議客戶端
-
? FastAPI-MCP開源地址:https://github.com/tadata-org/fastapi_mcp,工作原理參考下圖:
二、安裝并啟動示例
1. 安裝fastapi-mcp
-
? 提前準備好python 3.10+、uv/pip軟件環境(此處不做贅述)
-
? 直接一鍵安裝
//安裝方式1: 使用uv命令
uv add fastapi-mcp
//安裝方式2:使用pip命令
pip install fastapi-mcp
2. 編寫示例代碼 fastapi-mcp.py,實現兩個測試工具
-
? 一個獲取當前時間的接口/工具(不需要授權)
-
? 一個模擬獲取用戶信息的/工具(需要授權)
from datetime import datetimeimport uvicorn
from fastapi import FastAPI, Depends, HTTPException, Header
from fastapi_mcp import FastApiMCPapp = FastAPI()# 授權驗證,如果不需要,可以刪除
asyncdefverify_token(authorization: str | None = Header(None)):# 這里替換為實際的驗證邏輯,比如數據庫查詢,JWT驗證等valid_tokens = {"123456", "abcdef"} # 示例有效token集合if authorization notin valid_tokens:raise HTTPException(status_code=403, detail="Invalid Token")returnTrue# 注意:要設置添加明確的 operation_id 參數,這會讓大模型更容易理解工具的作用
# 編寫一個獲取當前時間的接口
@app.get("/getCurrentTime", operation_id="get_current_time")
asyncdefget_current_time():return {"current_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}# 編寫一個模擬獲取用戶信息的接口
@app.get("/users/{user_id}", operation_id="get_user_info")
asyncdefget_user_info(user_id: int, is_auth: bool = Depends(verify_token)): # 驗證請求頭,需要授權訪問# 這里的data可以替換成實際的查詢數據庫,這里只作為示例返回data = {"user_id": user_id,"name": "小狗狗","sex": "男","birthday": "2002-07-06",}return data# 創建 MCP 服務器實例,綁定到 FastAPI app
mcp = FastApiMCP(app)
# 掛載 MCP 服務器,默認路徑是 /mcp(可以修改)
mcp.mount()if __name__ == "__main__":uvicorn.run(app, host="0.0.0.0", port=8000)
3. 啟動運行測試用例
python fastapi-mcp.py
4. 啟動之后,可以直接訪問原本FastAPI提供的在線文檔、接口等
-
? 在線 Swagger 文檔,訪問:http://localhost:8000/docs
-
? 既是MCP工具,也是正常的API接口,如下使用 Postman 訪問示例
三、在Cherry Studio中使用FastAPI-MCP服務
下載并安裝 Cherry Studio 客戶端軟件,下載地址:https://www.cherry-ai.com/
配置使用 FastAPI-MCP 啟動后提供的服務,默認MCP服務運行在:http://localhost:8000/mcp,配置如下:
- ? Cherry Studio提供的非常方便的可視化配置界面
- ? 實際上在其他支持SSE的MCP客戶端,可以使用下面配置
{"mcpServers":{"fastapi-mcp":{"name":"fastapi-mcp","type":"sse","description":"","isActive":true,"baseUrl":"http://localhost:8000/mcp","headers":{"Content-Type":"application/json","Authorization":"123456"}}
}
- ? 配置完成后,MCP客戶端可以自動請求獲取到相關的MCP工具了
在對話中,使用fastapi-mcp工具
- ? 開啟并選擇fastapi-mcp工具
- ? 獲取當前時間示例
- ? 獲取用戶ID為888888的用戶信息
- ? 可以自動鏈式調用多個工具,完成復雜任務:幫我看看用戶ID為888888的用戶多少歲了
四、總結
-
? FastAPI-MCP工具可以讓你開發MCP工具像開發普通接口一樣,靈活擴展、適應性強
-
? 使用FastAPI-MCP,可以快速搭建起自己的私有MCP工具集,獨立部署、遠程訪問