無需重構,將現有 FastAPI 應用程式以 MCP 形式公開
何時使用: 你已經有一個 FastAPI API 在運行,想讓代理程式使用它,同時不想維護兩份平行的程式碼庫。
前置條件
- 運作中的 FastAPI 應用程式,且請求/回應有 Pydantic 模型 — 若你的路由回傳
dict,請先重構為 Pydantic BaseModel — 否則工具結構描述將會是object
步驟
-
安裝並掛載將
fastapi-mcp加入我的專案。在我的 main.py 中,於app = FastAPI()之後加上FastApiMCP(app).mount()。顯示差異。✓ 已複製→ 差異極小;伺服器仍可正常運行 -
確認工具出現啟動伺服器。使用
npx -y mcp-remote http://localhost:8000/mcp連線。列出工具——我所有的 GET/POST 路由都有出現嗎?✓ 已複製→ 工具已列出,名稱與路由的 operation_id 相符 -
篩選公開的路由我不想公開 /admin/* 路由。使用
include_operations或依標籤排除來重新設定。✓ 已複製→ 管理路由不再出現於工具清單中
結果: 你現有的 API 現在可透過 MCP 存取,且不需重複任何結構描述或邏輯。
注意事項
- 每個路由都會成為工具——包含你不打算公開的內部路由 — 正式上線前明確設定
include_tags=['public']或exclude_operations=[...] - 沒有 operation_id 的路由會產生像
read_item_items__item_id__get這樣難看的名稱 — 路由上永遠明確設定operation_id:@app.get('/items/{id}', operation_id='get_item')