哎呀,各位算法界的小伙伴們!今天咱們要聊聊一個超酷的話題——MCP 協議!你可能已經聽說了,Anthropic 推出了這個新玩意兒,目的是讓 AI 代理和你的應用程序之間的對話變得更順暢、更清晰。不過別擔心,為你的 Python 應用程序搭建一個這樣的服務器并不復雜,甚至可以說簡單到讓你懷疑人生!
為什么需要它?
-
允許 AI 代理與您的應用程序集成
想象一下,AI 就像你的私人助理,而 MCP 就是它和你家大門之間的鑰匙。 -
將復雜性從人類開發者轉移到 AI 代理
讓 AI 去操心那些繁瑣的邏輯吧,咱就負責躺平享受成果。 -
簡化將 AI 連接到眾多工具和數據源的過程
不管你是想連數據庫還是接 API,MCP 都能幫你搞定。
如果 MCP 成為下一個行業標準(已經火起來了,看起來可能性非常之大),那你只能選擇跟上潮流。畢竟,別人家的 AI 都在忙著自動集成,你總不能還手動敲代碼吧?更何況,等你看到實現它所需的代碼量時,你會覺得自己簡直是個天才!
如何做?
創建具有所需功能的 FastAPI 服務器
(如果你已經有了一個,請直接跳過此步驟)
FastAPI 的入門教程肯定比我的講解更專業,但我會盡量用接地氣的方式給你講清楚:
安裝依賴項:
pip install uvicorn, fastapi
創建一個 FastAPI 服務器:
from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "MCP 超級酷"} # 返回一條消息,告訴世界 MCP 很棒
對于應用的每個功能,編寫一個“路徑操作”——也就是分配給特定路徑的函數(比如這里的根函數位于路徑 /
下),執行 HTTP 操作(GET、POST、PUT、DELETE…)。然后用 uvicorn
運行你的應用:
uvicorn main:app --reload
搞定!你的 FastAPI 應用現在可以在 http://127.0.0.1:8000
上訪問啦。接下來,讓我們把它升級成一個真正的 MCP 服務器!
從 FastAPI 到 MCP 服務器
安裝開源工具 fastapi-mcp:
pip install fastapi-mcp ## 這行代碼價值一個億
特性
- 直接集成 - 將 MCP 服務器直接掛載到您的 FastAPI 應用中
- 零配置要求 - 只需將其指向您的 FastAPI 應用即可正常運行
- 自動發現所有 FastAPI 端點并轉換為 MCP 工具
- 保留請求模型和響應模型的架構
- 保留所有端點的文檔,就像在 Swagger 中一樣
- 可擴展性 - 在自動生成的工具之外添加自定義 MCP 工具
基礎用法
添加到你的 FastAPI 代碼:
from fastapi import FastAPI
from fastapi_mcp import add_mcp_server# 您的 FastAPI 應用
app = FastAPI()# 把 MCP 服務器掛載到你的應用上,就像給舞臺裝上聚光燈
add_mcp_server(app, # 您的 FastAPI 應用mount_path="/mcp", # 在哪里掛載 MCP 服務器name="我的 API MCP", # MCP 服務器的名稱
)
高級玩法
FastAPI - MCP 還有很多隱藏技能,能讓你隨心所欲地定制和控制 MCP 服務器的創建和配置,就像玩一場超級酷炫的游戲:
from fastapi import FastAPI
from fastapi_mcp import add_mcp_serverapp = FastAPI()mcp_server = add_mcp_server(app, # 你的 FastAPI 應用mount_path="/mcp", # MCP 服務器掛載的位置name="My API MCP", # MCP 服務器的名字describe_all_responses=True, # 默認是 False。就像打開一個百寶箱,把所有可能的響應模式都包含在工具描述里,而不只是成功的響應。describe_full_response_schema=True # 默認是 False。把完整的 JSON 模式包含在工具描述里,而不只是一個對大語言模型友好的響應示例。
)# 你還可以像變魔術一樣,在現有 API 的基礎上添加自定義工具。
@mcp_server.tool()
async def get_server_time() -> str:"""獲取當前服務器時間。就像從時間老人那里偷來一點時間信息"""from datetime import datetimereturn datetime.now().isoformat()
就這樣!MCP 服務器自動生成并可在 http://127.0.0.1:8000/mcp
上訪問。這是一個可以在 Cursor(或者任何支持 SSE 的 AI 代理,據說 Cline 對 MCP 的支持也快來了)中配置的地址。
使用 MCP
通過 SSE 連接 MCP 服務器
當你的集成了 MCP 的 FastAPI 應用運行起來后,你可以用任何支持 SSE 的 MCP 客戶端連接它,比如 Cursor,就像用一把神奇的鑰匙打開寶藏大門:
- 啟動你的應用,就像啟動一輛超級跑車。
- 在 Cursor -> 設置 -> MCP 里,把你的 MCP 服務器端點的 URL(比如
http://localhost:8000/mcp
)作為 SSE 地址,就像給跑車設置目的地。 - Cursor 會像一個聰明的小偵探,自動發現所有可用的工具和資源。
通過 mcp - proxy stdio 連接 MCP 服務器
要是你的 MCP 客戶端不支持 SSE,比如 Claude Desktop,也別擔心,我們有辦法:
- 啟動你的應用,讓它像個活力滿滿的小機器人一樣跑起來。
- 安裝 mcp - proxy,比如:
uv tool install mcp-proxy
,就像給小機器人裝上一個新的配件。 - 在 Claude Desktop 的 MCP 配置文件 (
claude_desktop_config.json
) 里添加以下內容:
Windows 系統
{"mcpServers": {"my-api-mcp-proxy": {"command": "mcp-proxy","args": ["http://127.0.0.1:8000/mcp"]}}
}
MacOS 系統
{"mcpServers": {"my-api-mcp-proxy": {"command": "/Full/Path/To/Your/Executable/mcp-proxy","args": ["http://127.0.0.1:8000/mcp"]}}
}
在終端里運行 which mcp - proxy
就能找到 mcp - proxy 的路徑,就像在迷宮里找到正確的路。
接下來是什么?
一旦設置完成,AI 代理現在可以通過標準化協議與你的應用程序交互了!你可以通過添加更多端點來擴展你的 MCP 服務器,暴露應用程序的不同功能。
記住,MCP 的目標是讓集成變得簡單——所以千萬別搞得太復雜!從基本功能開始,根據需要逐步擴展。
使用 FastAPI 和 fastapi-mcp
庫的好處在于,你保留了 FastAPI 的所有優勢(比如自動文檔和類型驗證),同時通過最少的額外代碼添加了 MCP 功能。
如果你嘗試了,請告訴我,并別忘了給 fastapi-mcp倉庫加星哦!🌟
好了,今天的任務完成啦!希望這篇幽默風趣的翻譯能讓你輕松掌握如何用 FastAPI 構建 MCP 服務器。要是你覺得有用,記得給我點個贊哈!否則……嗯,你的工作可能就像氣球一樣飛走咯,說不定連你的家人都得跟著緊張一下下呢!😄