如何用 5 行 Python 程式碼構建 MCP 伺服器
Gradio 是一個 Python 庫,每月有超過 100 萬開發者使用它來為機器學習模型構建介面。除了建立 UI,Gradio 還提供了 API 功能,現在 Gradio 應用程式還可以作為 LLM 的模型上下文協議 (MCP) 伺服器啟動。這意味著您的 Gradio 應用程式,無論是影像生成器、稅務計算器還是其他任何東西,都可以被 LLM 呼叫作為工具使用。
本指南將向您展示如何僅用幾行 Python 程式碼,使用 Gradio 構建一個 MCP 伺服器。
先決條件
如果尚未安裝,請安裝 Gradio 並啟用 MCP 附加功能
pip install "gradio[mcp]"
這將安裝必要的依賴項,包括 mcp
包。您還需要一個支援使用 MCP 協議進行工具呼叫的 LLM 應用程式,例如 Claude Desktop、Cursor 或 Cline(這些被稱為“MCP 客戶端”)。
為什麼要構建 MCP 伺服器?
MCP 伺服器是一種標準化方式,用於公開工具,以便 LLM 可以使用它們。MCP 伺服器可以為 LLM 提供各種附加功能,例如生成或編輯影像、合成音訊或執行特定計算(如質數分解數字)的能力。
Gradio 可以輕鬆構建這些 MCP 伺服器,將任何 Python 函式轉換為 LLM 可以使用的工具。
示例:計算單詞中的字母數量
LLM 在計算單詞中的字母數量(例如,“strawberry”中“r”的數量)方面表現不佳。但是,如果我們為它們配備一個工具來幫助呢?讓我們從編寫一個簡單的 Gradio 應用程式開始,它用於計算單詞或短語中的字母數量
import gradio as gr
def letter_counter(word, letter):
"""Count the occurrences of a specific letter in a word.
Args:
word: The word or phrase to analyze
letter: The letter to count occurrences of
Returns:
The number of times the letter appears in the word
"""
return word.lower().count(letter.lower())
demo = gr.Interface(
fn=letter_counter,
inputs=["text", "text"],
outputs="number",
title="Letter Counter",
description="Count how many times a letter appears in a word"
)
demo.launch(mcp_server=True)
請注意,我們在 .launch()
中設定了 mcp_server=True
。這正是您的 Gradio 應用程式作為 MCP 伺服器所需的一切!現在,當您執行此應用程式時,它將:
- 啟動常規的 Gradio Web 介面
- 啟動 MCP 伺服器
- 在控制檯中列印 MCP 伺服器 URL
MCP 伺服器將可透過以下地址訪問
http://your-server:port/gradio_api/mcp/sse
Gradio 會自動將 letter_counter
函式轉換為一個可供 LLM 使用的 MCP 工具。函式的文件字串用於生成工具及其引數的描述。
您所需要做的就是將此 URL 端點新增到您的 MCP 客戶端(例如 Cursor、Cline 或 Tiny Agents),這通常意味著將此配置貼上到設定中
{
"mcpServers": {
"gradio": {
"url": "http://your-server:port/gradio_api/mcp/sse"
}
}
}
一些 MCP 客戶端,特別是 Claude Desktop,尚不支援基於 SSE 的 MCP 伺服器。在這種情況下,您可以使用 mcp-remote 等工具。首先安裝 Node.js。然後,將以下內容新增到您自己的 MCP 客戶端配置中
{
"mcpServers": {
"gradio": {
"command": "npx",
"args": [
"mcp-remote",
"http://your-server:port/gradio_api/mcp/sse"
]
}
}
}
(順便說一句,您可以透過點選 Gradio 應用程式底部的“檢視 API”連結,然後點選“MCP”來找到要複製貼上的確切配置。)
Gradio <> MCP 整合的關鍵功能
工具轉換:Gradio 應用程式中的每個 API 端點都會自動轉換為一個 MCP 工具,並具有相應的名稱、描述和輸入模式。要檢視工具和模式,請訪問
http://your-server:port/gradio_api/mcp/schema
,或點選 Gradio 應用程式頁尾的“檢視 API”連結,然後點選“MCP”。Gradio 允許開發者使用簡單的 Python 程式碼建立複雜的介面,提供動態 UI 操作以實現即時視覺反饋。
環境變數支援。啟用 MCP 伺服器功能有兩種方法
使用
mcp_server
引數,如上所示demo.launch(mcp_server=True)
使用環境變數
export GRADIO_MCP_SERVER=True
檔案處理:伺服器自動處理檔案資料轉換,包括
- 將 base64 編碼字串轉換為檔案資料
- 處理影像檔案並以正確的格式返回
- 管理臨時檔案儲存
最近的 Gradio 更新改進了其影像處理功能,包括 Photoshop 風格的縮放和平移以及完全透明度控制。
強烈建議將輸入影像和檔案作為完整的 URL(“http://...”或“https://...”)傳遞,因為 MCP 客戶端並非總是能正確處理本地檔案。
🤗 Spaces 上的託管 MCP 伺服器:您可以免費將您的 Gradio 應用程式釋出到 Hugging Face Spaces,這將允許您擁有一個免費的託管 MCP 伺服器。Gradio 是一個更廣泛生態系統的一部分,該生態系統包括用於以程式設計方式構建或查詢機器學習應用程式的 Python 和 JavaScript 庫。
這是一個這樣的空間示例:https://huggingface.co/spaces/abidlabs/mcp-tools。請注意,您可以將此配置新增到您的 MCP 客戶端,以立即開始使用此空間中的工具
{
"mcpServers": {
"gradio": {
"url": "https://abidlabs-mcp-tools.hf.space/gradio_api/mcp/sse"
}
}
}
就是這樣!透過使用 Gradio 構建您的 MCP 伺服器,您可以輕鬆地為您的 LLM 新增許多不同型別的自定義功能。
延伸閱讀
如果您想深入瞭解,這裡有一些我們推薦的文章