Gradio MCP 伺服器的五大改進

釋出於 2025 年 7 月 17 日
在 GitHub 上更新

Gradio 是一個用於建立 AI 驅動的 Web 應用程式的開源 Python 包。Gradio 相容 MCP 伺服器協議,併為 Hugging Face Spaces 上託管的數千個 MCP 伺服器提供支援。Gradio 團隊 堅信 Gradio 和 Spaces 將是構建和託管 AI 驅動的 MCP 伺服器的最佳方式。

為此,我們從 5.38.0 版本開始,為 Gradio MCP 伺服器添加了一些重大改進。

無縫本地檔案支援

如果你嘗試過使用需要檔案(影像、影片、音訊)作為輸入的遠端 Gradio MCP 伺服器,你可能遇到過這個錯誤:

這是因為 Gradio 伺服器託管在不同的機器上,這意味著任何輸入檔案都必須透過公共 URL 訪問,以便可以遠端下載。

雖然有很多線上託管檔案的方法,但它們都會給你的工作流程增加一個手動步驟。在 LLM 代理的時代,我們難道不應該期望它們能為你處理這些嗎?

Gradio 現在包含一個 “檔案上傳” MCP 伺服器,代理可以使用它直接將檔案上傳到你的 Gradio 應用程式。如果你的 Gradio MCP 伺服器中的任何工具需要檔案輸入,連線文件現在會向你展示如何啟動“檔案上傳” MCP 伺服器。

Gradio 指南中瞭解更多關於使用此伺服器的資訊(以及重要的安全注意事項)。

即時進度通知

根據 AI 任務的不同,獲取結果可能需要一些時間。現在,Gradio 會向你的 MCP 客戶端 流式傳輸進度通知,讓你能夠即時監控狀態!

作為一名 MCP 開發者,強烈建議你實現 MCP 工具來發出這些進度狀態。我們的指南向你展示瞭如何操作。

一行程式碼將 OpenAPI 規範轉換為 MCP

如果你想將現有的後端 API 整合到 LLM 中,你必須手動將 API 端點對映到 MCP 工具。這可能是一項耗時且容易出錯的雜事。在此版本中,Gradio 可以為你自動化整個過程!只需一行程式碼,你就可以將你的業務後端整合到任何相容 MCP 的 LLM 中。

OpenAPI 是一個廣泛採用的標準,用於以機器可讀的格式(通常是 JSON 檔案)描述 RESTful API。Gradio 現在提供了 gr.load_openapi 函式,它可以直接從 OpenAPI 模式建立一個 Gradio 應用程式。然後你可以使用 mcp_server=True 啟動該應用,從而為你的 API 自動建立一個 MCP 伺服器!

import gradio as gr

demo = gr.load_openapi(
    openapi_spec="https://petstore3.swagger.io/api/v3/openapi.json",
    base_url="https://petstore3.swagger.io/api/v3",
    paths=["/pet.*"],
    methods=["get", "post"],
)

demo.launch(mcp_server=True)

在 Gradio 指南中查詢更多詳細資訊。

認證功能的改進

在 MCP 伺服器開發中,一個常見的模式是使用認證頭來代表你的使用者呼叫服務。作為 MCP 伺服器開發者,你希望清楚地告知使用者需要提供哪些憑據才能正確使用伺服器。

為了實現這一點,你現在可以將你的 MCP 伺服器引數型別化為 gr.Header。Gradio 會自動從傳入的請求中提取該頭(如果存在),並將其傳遞給你的函式。使用 gr.Header 的好處是,MCP 連線文件將自動顯示連線到伺服器時需要提供的頭資訊!

在下面的示例中,X-API-Token 頭從傳入的請求中提取,並作為 x_api_token 引數傳遞給 make_api_request_on_behalf_of_user

import gradio as gr

def make_api_request_on_behalf_of_user(prompt: str, x_api_token: gr.Header):
    """Make a request to everyone's favorite API.
    Args:
        prompt: The prompt to send to the API.
    Returns:
        The response from the API.
    Raises:
        AssertionError: If the API token is not valid.
    """
    return "Hello from the API" if not x_api_token else "Hello from the API with token!"


demo = gr.Interface(
    make_api_request_on_behalf_of_user,
    [
        gr.Textbox(label="Prompt"),
    ],
    gr.Textbox(label="Response"),
)

demo.launch(mcp_server=True)

MCP Header Connection Page

你可以在 Gradio 指南中閱讀更多相關資訊。

修改工具描述

Gradio 會根據你的函式名和文件字串自動生成工具描述。現在你可以使用 api_description 引數進一步自定義工具描述。在這個例子中,工具描述將是“為任何影像應用棕褐色濾鏡。”

import gradio as gr
import numpy as np

def sepia(input_img):
    """
    Args:
        input_img (np.array): The input image to apply the sepia filter to.

    Returns:
        The sepia filtered image.
    """
    sepia_filter = np.array([
        [0.393, 0.769, 0.189],
        [0.349, 0.686, 0.168],
        [0.272, 0.534, 0.131]
    ])
    sepia_img = input_img.dot(sepia_filter.T)
    sepia_img /= sepia_img.max()
    return sepia_img

gr.Interface(sepia, "image", "image", 
             api_description="Apply a sepia filter to any image.")\
            .launch(mcp_server=True)

指南中閱讀更多資訊。

結論

想讓我們為 Gradio 新增一個新的 MCP 相關功能嗎?請在部落格評論區或 GitHub 上告訴我們。此外,如果你構建了一個很酷的 MCP 伺服器或 Gradio 應用,請在評論中告訴我們,我們會幫你推廣!

社群

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.