使用 Gradio 在 Python 中實作 MCP 伺服器

Gradio 現在讓 Python 開發者能夠透過自動將 Python 函式轉換為 LLM 工具,實作 Model Context Protocol(MCP)伺服器。此整合使大型語言模型(LLM)能存取託管於 Hugging Face Hub 的專門 AI 模型與 Spaces,將其能力從僅文字回答擴展至主動解決問題。

自動工具轉換與 MCP 功能

Gradio 透過自動化 Python 程式碼與 LLM 相容工具之間的橋接,簡化 MCP 伺服器的建立。主要技術特點包括:

  • Automatic Function-to-Tool Conversion: 每個 Gradio 應用程式中的 API 端點都會自動轉換為 MCP 工具。Gradio 會使用函式的 docstring 產生工具的名稱、說明與輸入結構。
  • Real-time Progress Notifications: Gradio 直接將狀態更新串流至 MCP 客戶端,免除開發者手動實作進度追蹤的需求。
  • Automatic File Handling: 系統支援自動檔案上傳,包含各種檔案類型與公開 URL 的處理。

案例研究:具虛擬試穿功能的 AI 購物助理

為了展示這些功能,Hugging Face 說明了結合網頁瀏覽與虛擬試穿模型的 AI 購物助理的建立方式。此助理由三個主要元件構成:

  1. IDM-VTON Diffusion Model: 用於虛擬試穿功能的專門模型,能編輯照片以顯示人物穿著特定服裝。實作使用了 Hugging Face Space 中的 IDM-VTON。
  2. Gradio: 作為 MCP 伺服器的橋樑,讓 LLM 能呼叫 IDM-VTON 模型及其他必要工具。
  3. VS Code AI Chat: 作為使用者介面,因其支援加入任意 MCP 伺服器以發送指令與檢視結果。

技術實作

助理的核心是一個 Gradio MCP 伺服器,公開 vton_generation 工具。此函式接受人體模型圖像與服裝圖像作為輸入,並透過 IDM-VTON 模型返回生成的圖像。伺服器透過在 Gradio 介面的 launch() 方法中設定 mcp_server=True 來啟動。

由於原始的 IDM-VTON Space 是使用 Gradio 4.x(在自動 MCP 功能之前)建置的,示範實作使用一個 Gradio 介面,透過 Gradio API 客戶端查詢原始 Space。

整合與設定

要將 Gradio MCP 伺服器連接至如 VS Code 等客戶端,必須更新 mcp.json 設定檔。在提供的範例中,助理使用了兩個伺服器:

  • VTON Server: 透過本機 URL 連接(例如 http://127.0.0.1:7860/gradio_api/mcp/)。
  • Playwright MCP Server: 透過 npx 整合,使 AI 助理能瀏覽網路以取得服裝項目。

設定完成後,LLM 即可執行複雜的多步驟任務,例如在零售網站上搜尋特定服裝,並使用虛擬試穿工具將使用者的照片套用於這些服裝上。

Sources