使用 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>"
      }
    }
  }
}

Sources