使用 Gradio 在 Python 中实现 MCP 服务器

Gradio 现在使 Python 开发者能够通过自动将 Python 函数转换为 LLM 工具来实现 Model Context Protocol (MCP) 服务器。此集成让大型语言模型(LLMs)能够访问托管在 Hugging Face Hub 上的专用 AI 模型和 Spaces,将其能力从基于文本的回答扩展到主动的问题解决。

自动化工具转换与 MCP 功能

Gradio 通过自动化 Python 代码与兼容 LLM 的工具之间的桥梁,简化了 MCP 服务器的创建。关键技术特性包括:

  • 自动函数转工具转换: Gradio 应用中的每个 API 端点都会自动转换为 MCP 工具。Gradio 使用函数的文档字符串生成工具的名称、描述和输入模式。
  • 实时进度通知: Gradio 将状态更新直接流式传输到 MCP 客户端,免去开发者手动实现进度跟踪的需求。
  • 自动文件处理: 系统支持自动文件上传,包括对各种文件类型和公共 URL 的处理。

案例研究:具备虚拟试穿功能的 AI 购物助理

为了展示这些能力,Hugging Face 概述了一个将网页浏览与虚拟试穿模型相结合的 AI 购物助理的创建。该助理由以下三个主要组件构建:

  1. IDM-VTON Diffusion Model: 用于虚拟试穿功能的专用模型,可编辑照片以展示人物穿着特定服装。实现使用了 IDM-VTON 的 Hugging Face Space。
  2. Gradio: 充当 MCP 服务器桥梁,使 LLM 能调用 IDM-VTON 模型及其他必要工具。
  3. VS Code AI Chat: 作为用户界面,因为它支持添加任意 MCP 服务器以发出指令并查看结果。

技术实现

助理的核心是一个 Gradio MCP 服务器,公开了 vton_generation 工具。该函数接受人物模型图像和服装图像作为输入,并通过 IDM-VTON 模型返回生成的图像。服务器通过在 Gradio 界面的 launch() 方法中设置 mcp_server=True 来激活。

由于原始的 IDM-VTON Space 是使用 Gradio 4.x(在自动 MCP 功能出现之前)构建的,演示实现使用了一个通过 Gradio API 客户端查询原始 Space 的 Gradio 界面。

集成与配置

要将 Gradio MCP 服务器连接到如 VS Code 之类的客户端,需要更新 mcp.json 配置文件。在提供的示例中,助理使用了两个服务器:

  • VTON 服务器: 通过本地 URL 进行连接(例如 http://127.0.0.1:7860/gradio_api/mcp/)。
  • Playwright MCP 服务器: 通过 npx 集成,使 AI 助理能够在网络上浏览服装商品。

配置完成后,LLM 可以执行复杂的多步骤任务,例如在零售网站上浏览特定服装,并使用虚拟试穿工具将用户的照片应用到这些服装上。

Sources