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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.