如何用 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 添加许多不同类型的自定义功能。
延伸阅读
如果您想深入了解,这里有一些我们推荐的文章