使用 Gradio 构建 MCP 服务器
Gradio 现在使开发者能够将他们的应用程序作为模型上下文协议(MCP)服务器启动,允许大型语言模型(LLM)将 Gradio 应用作为工具调用。此集成将 Gradio 应用中的任何 Python 函数转换为标准化工具,MCP 兼容的客户端——例如 Cursor、Cline 或 Claude Desktop——可以利用这些工具执行特定计算、生成媒体或处理数据。
在 Gradio 中部署 MCP 服务器
开发者可以通过在 .launch() 方法中设置 mcp_server=True 或设置环境变量 GRADIO_MCP_SERVER=True 将 Gradio 应用转换为 MCP 服务器。
启动后,应用会同时启动标准的 Gradio Web 界面和 MCP 服务器,公开一个 URL 端点(通常为 http://your-server:port/gradio_api/mcp/sse),可将其添加到 MCP 客户端的配置中。Gradio 会自动使用函数的文档字符串生成工具的描述和参数模式供 LLM 使用。
对于不支持服务器发送事件(SSE)的客户端,例如 Claude Desktop,可使用 mcp-remote Node.js 工具作为桥梁。
高级 MCP 功能
除了基本的工具转换,Gradio 还提供专门的装饰器来实现完整的 MCP 功能:
- MCP Tools:虽然函数默认会注册为工具,但也可以显式使用
@gr.mcp.tool()装饰器。 - MCP Resources:
@gr.mcp.resource()装饰器允许开发者向 LLM 暴露特定的数据源。 - MCP Prompts:
@gr.mcp.prompt()装饰器用于定义可复用的提示模板。 - MCP-Only Functions:使用
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 令牌来实现认证:
{
"mcpServers": {
"gradio": {
"url": "https://your-private-space.hf.space/gradio_api/mcp/sse",
"headers": {
"Authorization": "Bearer <YOUR-HUGGING-FACE-TOKEN>"
}
}
}
}