使用 Gradio 建立 MCP 伺服器
Gradio 現在讓開發者能將他們的應用程式以 Model Context Protocol(MCP)伺服器的形式啟動,讓大型語言模型(LLM)能將 Gradio 應用程式當作工具呼叫。此整合將 Gradio 應用程式中的任何 Python 函式轉換為標準化工具,MCP 相容的客戶端(如 Cursor、Cline 或 Claude Desktop)即可利用這些工具執行特定計算、產生媒體或處理資料。
在 Gradio 中部署 MCP 伺服器
開發者可以透過在 .launch() 方法中設定 mcp_server=True,或設定環境變數 GRADIO_MCP_SERVER=True,將 Gradio 應用程式轉換為 MCP 伺服器。
啟動後,應用程式會同時啟動標準的 Gradio 網頁介面與 MCP 伺服器,並公開一個 URL 端點(通常為 http://your-server:port/gradio_api/mcp/sse),可將其加入 MCP 客戶端的設定中。Gradio 會自動使用函式的 docstring 產生工具的說明與參數結構,供 LLM 使用。
對於不支援 Server-Sent Events(SSE)的客戶端,例如 Claude Desktop,可使用 mcp-remote Node.js 工具作為橋接。
進階 MCP 功能
除了基本的工具轉換外,Gradio 還提供專門的裝飾器,以實作完整的 MCP 功能:
- MCP 工具:雖然函式預設會被註冊為工具,但也可以明確使用
@gr.mcp.tool()裝飾器。 - MCP 資源:
@gr.mcp.resource()裝飾器允許開發者向 LLM 暴露特定資料來源。 - MCP 提示:
@gr.mcp.prompt()裝飾器可定義可重複使用的提示模板。 - 僅限 MCP 的函式:使用
gr.api(),開發者可以建立僅供 MCP 伺服器使用、但在 Gradio 使用者介面中隱藏的函式。
主要整合功能
自動工具轉換與結構管理
Gradio 應用程式中的每個 API 端點都會自動轉換為 MCP 工具。產生的名稱、說明與輸入結構可透過 /gradio_api/mcp/schema 端點或應用程式頁腳的「View API」連結取得。
檔案與資料處理
此整合包含檔案資料轉換的自動處理,包含以下項目:
- 將 base64 編碼的字串轉換為檔案資料。
- 處理並以正確格式回傳影像檔案。
- 管理暫存檔案儲存。
- 支援自動檔案上傳的 MCP 伺服器,以存取本機檔案。
效能分析
Gradio 內建對 MCP 工具與 API 端點的追蹤功能。「View API」頁面會顯示成功率、延遲分位數與請求次數,並以顏色指示(成功率 100% 為綠色,0% 為紅色)協助開發者優化工具的可靠性。
在 Hugging Face Spaces 上的託管與驗證
開發者可以透過將 Gradio 應用程式發布至 Hugging Face Spaces,免費託管其 MCP 伺服器。
對於私有 Spaces,可透過在 MCP 客戶端設定中加入 Bearer token 來支援驗證:
{
"mcpServers": {
"gradio": {
"url": "https://your-private-space.hf.space/gradio_api/mcp/sse",
"headers": {
"Authorization": "Bearer <YOUR-HUGGING-FACE-TOKEN>"
}
}
}
}