MCP 课程文档
在 Hugging Face Hub 上构建一个拉取请求代理
并获得增强的文档体验
开始使用
在 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,而无需手动标记其存储库。
上图中,我们有一个可以读取和更新模型标签的 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 流程如下:
- 事件触发:用户在模型存储库讨论中创建评论
- Webhook 交付:Hugging Face 向我们的端点发送 POST 请求
- 身份验证:我们验证 webhook 密钥以确保安全
- 处理:我们的代理分析评论以获取标签建议
- 操作:如果找到相关标签,我们创建拉取请求
- 响应:Webhook 立即返回,而 PR 创建在后台进行
让我们开始吧!
准备好构建一个可自动改进 Hugging Face 存储库的生产级 PR 代理了吗?让我们从设置项目结构和理解 MCP 服务器实现开始吧。
< > 在 GitHub 上更新