使用 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>"
      }
    }
  }
}

Sources