MCP 课程文档

在 Hugging Face Hub 上构建一个拉取请求代理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

在 Hugging Face Hub 上构建拉取请求代理

欢迎来到 MCP 课程第三单元!

在本单元中,我们将构建一个拉取请求代理,该代理可以根据讨论和评论自动标记 Hugging Face 模型存储库。这个真实世界的应用程序演示了如何将 MCP 与 webhook 监听器和自动化工作流程集成。

本单元展示了一个真实世界的用例,其中 MCP 服务器可以响应 Hugging Face Hub 的实时事件,自动创建拉取请求以改进存储库元数据。

你将学到什么

在本单元中,你将

  • 创建一个与 Hugging Face Hub API 交互的 MCP 服务器
  • 实现 webhook 监听器以响应讨论事件
  • 为模型存储库设置自动化标记工作流程
  • 将一个完整的 webhook 驱动应用程序部署到 Hugging Face Spaces

在本单元结束时,你将拥有一个可运行的 PR 代理,它能够监控讨论并通过拉取请求自动改进存储库元数据。

先决条件

在继续本单元之前,请确保你已具备以下条件:

  • 已完成第一单元和第二单元,或对 MCP 概念有经验
  • 熟悉 Python、FastAPI 和 webhook 概念
  • 对 Hugging Face Hub 工作流程和拉取请求有基本了解
  • 拥有一个开发环境,包含
    • Python 3.11+
    • 具有 API 访问权限的 Hugging Face 帐户

我们的拉取请求代理项目

我们将构建一个标记代理,它由四个主要组件组成:MCP 服务器、webhook 监听器、代理逻辑和部署基础设施。该代理将能够根据讨论和评论标记模型存储库。这应该能为模型作者节省时间,因为他们将收到可立即使用的 PR,而无需手动标记其存储库。

PR Agent Architecture

上图中,我们有一个可以读取和更新模型标签的 MCP 服务器。我们有一个可以从 Hugging Face Hub 接收 webhook 的 webhook 监听器。我们有一个可以分析讨论和评论并创建 PR 以更新模型标签的代理。我们有一个可以将 MCP 服务器部署到 Hugging Face Spaces 的部署基础设施。

项目概览

为了构建此应用程序,我们将需要以下文件

文件 目的 描述
mcp_server.py 核心 MCP 服务器 基于 FastMCP 的服务器,带有用于读取和更新模型标签的工具
app.py Webhook 监听器和代理 FastAPI 应用程序,接收 webhook,处理讨论并创建 PR
requirements.txt 依赖项 Python 包,包括 FastMCP、FastAPI 和 huggingface-hub
pyproject.toml 项目配置 使用 uv 依赖管理的现代 Python 打包
Dockerfile 部署 Hugging Face Spaces 的容器配置
env.example 配置模板 必需的环境变量和密钥
cleanup.py 实用工具 用于开发和测试清理的辅助脚本

让我们逐一了解这些文件及其用途。

MCP 服务器 ( mcp_server.py )

我们应用程序的核心 - 一个 FastMCP 服务器,提供以下工具:

  • 从模型存储库读取当前标签
  • 通过向 Hub 发送拉取请求添加新标签
  • 错误处理和验证

这是你将实现 MCP 服务器并完成大部分项目工作的地方。Gradio 应用程序和 FastAPI 应用程序将用于测试 MCP 服务器和 webhook 监听器,它们已准备好使用。

Webhook 集成

遵循Hugging Face Webhooks 指南,我们的代理

  • 监听讨论评论事件
  • 验证 webhook 签名以确保安全
  • 处理提及和标签建议
  • 自动创建拉取请求

代理功能

代理分析讨论内容以

  • 提取明确的标签提及(tag: pytorch, #transformers
  • 识别自然语言中的隐含标签
  • 根据已知的 ML/AI 类别验证标签
  • 生成适当的拉取请求描述

部署与生产

  • 容器化部署到 Hugging Face Spaces
  • 秘密的环境变量管理
  • Webhook 响应的后台任务处理
  • 用于测试和监控的 Gradio 界面

Webhook 集成概览

我们的 PR 代理利用了 Hugging Face 讨论机器人使用的相同 webhook 基础设施。以下是 webhook 如何实现实时响应:

Webhook Flow

Webhook 流程如下:

  1. 事件触发:用户在模型存储库讨论中创建评论
  2. Webhook 交付:Hugging Face 向我们的端点发送 POST 请求
  3. 身份验证:我们验证 webhook 密钥以确保安全
  4. 处理:我们的代理分析评论以获取标签建议
  5. 操作:如果找到相关标签,我们创建拉取请求
  6. 响应:Webhook 立即返回,而 PR 创建在后台进行

让我们开始吧!

准备好构建一个可自动改进 Hugging Face 存储库的生产级 PR 代理了吗?让我们从设置项目结构和理解 MCP 服务器实现开始吧。

< > 在 GitHub 上更新