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