MCP 課程文件

第三單元解決方案演練:使用 MCP 構建拉取請求代理

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

第三單元解決方案演練:使用 MCP 構建拉取請求代理

概述

本演練將指導您完成第三單元拉取請求代理的完整解決方案——一個 MCP 伺服器,它透過分析程式碼更改、監控 CI/CD 流水線和自動化團隊通訊來幫助開發人員建立更好的拉取請求。該解決方案展示了所有三種 MCP 原語(工具、資源和提示)在實際工作流中協同工作。

架構概述

PR 代理由相互連線的模組組成,這些模組逐步構建了一個完整的自動化系統

  1. 構建 MCP 伺服器 - 帶有用於 PR 模板建議工具的基本伺服器
  2. 智慧檔案分析 - 使用資源增強分析以獲取專案上下文
  3. GitHub Actions 整合 - 使用標準化提示進行 CI/CD 監控
  4. Hugging Face Hub 整合 - 模型部署和資料集 PR 工作流
  5. Slack 通知 - 整合所有 MCP 原語的團隊通訊

模組 1:構建 MCP 伺服器

我們要構建什麼

一個最小的 MCP 伺服器,它分析檔案更改並使用 MCP 工具建議適當的 PR 模板。

關鍵元件

1. 伺服器初始化 ( server.py )

# The server registers three essential tools:
# - analyze_file_changes: Returns structured data about changed files
# - get_pr_templates: Lists available templates with metadata
# - suggest_template: Provides intelligent template recommendations

伺服器使用 MCP SDK 將這些工具暴露給 Claude Code,使其能夠收集資訊並就使用哪個 PR 模板做出智慧決策。

2. 檔案分析工具

analyze_file_changes 工具檢查 git diff 以識別

  • 檔案型別和副檔名
  • 更改的檔案數量
  • 新增/刪除的行數
  • 常見模式(測試、配置、文件)

這種結構化資料使 Claude 能夠理解更改的性質,而無需硬編碼決策邏輯。

3. 模板管理

模板以 Markdown 檔案的形式儲存在 templates/ 目錄中

  • bug.md - 用於錯誤修復
  • feature.md - 用於新功能
  • docs.md - 用於文件更新
  • refactor.md - 用於程式碼重構

每個模板都包含 Claude 可以根據分析填充的佔位符。

Claude 如何使用這些工具

  1. Claude 呼叫 analyze_file_changes 來理解更改了什麼
  2. 使用 get_pr_templates 檢視可用選項
  3. 使用分析資料呼叫 suggest_template
  4. 接收帶有推理的建議
  5. 可以根據特定更改自定義模板

學習成果

  • 理解工具註冊和模式
  • 讓 Claude 使用結構化資料做出決策
  • 資料收集與決策邏輯的分離

模組 2:智慧檔案分析

我們要構建什麼

使用 MCP 資源增強檔案分析,以提供專案上下文和團隊指南。

關鍵元件

1. 資源註冊

伺服器暴露四種資源

# Resources provide read-only access to:
# - file://templates/ - PR template files
# - file://project-context/ - Coding standards, conventions
# - git://recent-changes/ - Commit history and patterns
# - team://guidelines/ - Review processes and standards

2. 專案上下文資源

project-context/ 目錄包含

  • coding-standards.md - 特定語言的約定
  • review-guidelines.md - 審閱者關注的內容
  • architecture.md - 系統設計模式
  • dependencies.md - 第三方庫策略

Claude 可以閱讀這些檔案以瞭解專案特定要求。

3. Git 歷史分析

git://recent-changes/ 資源提供

  • 最近提交訊息和模式
  • 常見的 PR 標題和描述
  • 團隊成員貢獻模式
  • 歷史模板使用情況

這有助於 Claude 建議符合團隊實踐的模板。

Claude 如何使用資源

  1. 讀取 team://guidelines/review-process.md 以瞭解 PR 要求
  2. 訪問 file://project-context/coding-standards.md 獲取樣式指南
  3. 分析 git://recent-changes/ 以匹配團隊模式
  4. 將此上下文與檔案分析結合起來以獲得更好的建議

增強決策

有了資源,Claude 現在可以

  • 建議符合團隊約定的模板
  • 在 PR 中包含專案特定要求
  • 在描述中引用編碼標準
  • 與歷史團隊實踐保持一致

學習成果

  • 資源 URI 設計和模式
  • 使專案知識可供 AI 訪問
  • 上下文感知決策
  • 自動化與團隊標準的平衡

模組 3:GitHub Actions 整合

我們要構建什麼

使用 webhook 和標準化提示進行即時 CI/CD 監控,以實現一致的團隊通訊。

關鍵元件

1. Webhook 伺服器

使用 Cloudflare Tunnel 接收 GitHub Actions 事件

# Webhook endpoint handles:
# - workflow_run events
# - check_run events  
# - pull_request status updates
# - deployment notifications

2. 提示模板

四個標準化提示確保一致性

  • “分析 CI 結果” - 處理測試失敗和構建錯誤
  • “生成狀態摘要” - 建立可讀的狀態更新
  • “建立後續任務” - 根據結果建議下一步措施
  • “草擬團隊通知” - 為不同受眾格式化更新

3. 事件處理流水線

  1. 從 GitHub 接收 webhook
  2. 解析事件資料並提取相關資訊
  3. 根據事件型別使用適當的提示
  4. 生成標準化響應
  5. 儲存以供團隊通知

Claude 如何使用提示

提示使用示例

# When tests fail, Claude uses the "Analyze CI Results" prompt:
prompt_data = {
    "event_type": "workflow_run",
    "status": "failure",
    "failed_jobs": ["unit-tests", "lint"],
    "error_logs": "...",
    "pr_context": {...}
}

# Claude generates:
# - Root cause analysis
# - Suggested fixes
# - Impact assessment
# - Next steps

標準化工作流

提示確保無論誰在工作

  • CI 失敗得到一致的分析
  • 狀態更新遵循團隊格式
  • 後續操作與流程保持一致
  • 通知包含所需資訊

學習成果

  • Webhook 整合模式
  • 提示工程以確保一致性
  • 事件驅動架構
  • 標準化團隊工作流

模組 4:Hugging Face Hub 整合

我們要構建什麼

與 Hugging Face Hub 整合,用於 LLM 和資料集 PR,為使用語言模型的團隊新增專業工作流。

關鍵元件

1. 特定於 Hub 的工具

# Tools for Hugging Face workflows:
# - analyze_model_changes: Detect LLM file modifications
# - validate_dataset_format: Check training data compliance
# - generate_model_card: Create/update model documentation
# - suggest_hub_template: PR templates for LLMs/datasets

2. Hub 資源

# Resources for Hub context:
# - hub://model-cards/ - LLM card templates and examples
# - hub://dataset-formats/ - Training data specifications
# - hub://community-standards/ - Hub community guidelines
# - hub://license-info/ - License compatibility checks

3. LLM 特定提示

# Prompts for LLM workflows:
# - "Analyze Model Changes" - Understand LLM updates
# - "Generate Benchmark Summary" - Create evaluation metrics
# - "Check Dataset Quality" - Validate training data
# - "Draft Model Card Update" - Update documentation

特定於 Hub 的工作流

當 PR 修改 LLM 檔案時

  1. 工具analyze_model_changes 檢測模型架構更改
  2. 資源:讀取 hub://model-cards/llm-template.md
  3. 提示:“生成基準摘要”建立評估部分
  4. 工具generate_model_card 更新文件
  5. 資源:檢查 hub://license-info/ 的相容性

資料集 PR 處理

用於訓練資料更新

  • 驗證格式一致性
  • 檢查資料質量指標
  • 更新資料集卡片
  • 建議合適的審閱者

學習成果

  • Hugging Face Hub API 整合
  • LLM 特定 PR 工作流
  • 模型和資料集文件
  • 社群標準合規性

模組 5:Slack 通知

我們要構建什麼

結合工具、資源和提示的自動化團隊通知,以實現完整的工作流自動化。

關鍵元件

1. 通訊工具

# Three tools for team updates:
# - send_slack_message: Post to team channels
# - get_team_members: Identify who to notify
# - track_notification_status: Monitor delivery

2. 團隊資源

# Resources for team data:
# - team://members/ - Developer profiles and preferences
# - slack://channels/ - Channel configurations
# - notification://templates/ - Message formats

3. 通知提示

# Prompts for communication:
# - "Format Team Update" - Style messages appropriately
# - "Choose Communication Channel" - Select right audience
# - "Escalate if Critical" - Handle urgent issues

整合示例

當 CI 在關鍵 PR 上失敗時

  1. 工具get_team_members 識別 PR 作者和審閱者
  2. 資源team://members/{user}/preferences 檢查通知設定
  3. 提示:“格式化團隊更新”建立適當的訊息
  4. 工具send_slack_message 傳送到正確的頻道
  5. 資源notification://templates/ci-failure 確保格式一致
  6. 提示:“如果關鍵則升級”確定是否需要額外警報

智慧路由

系統考慮

  • 團隊成員可用性(來自日曆資源)
  • 通知偏好(電子郵件 vs Slack)
  • 訊息緊急性(基於 PR 標籤)
  • 時區和工作時間

學習成果

  • 原始整合模式
  • 複雜工作流編排
  • 自動化與人類需求的平衡
  • 生產就緒錯誤處理

完整工作流示例

以下是所有元件如何協同工作以處理典型 PR 的示例

  1. 開發人員建立 PR

    • GitHub webhook 觸發伺服器
    • 工具:analyze_file_changes 檢查差異
    • 資源:讀取團隊指南和專案上下文
    • 提示:建議最佳 PR 模板
  2. CI/CD 流水線執行

    • Webhook 接收工作流事件
    • 提示:“分析 CI 結果”處理結果
    • 資源:檢查團隊升級策略
    • 工具:更新 GitHub 中的 PR 狀態
  3. Hugging Face Hub 整合

    • 工具:檢測 LLM/資料集更改
    • 資源:讀取 Hub 指南
    • 提示:生成模型卡更新
    • 工具:根據 Hub 標準進行驗證
  4. 團隊通知

    • 工具:識別相關團隊成員
    • 資源:讀取通知偏好設定
    • 提示:格式化適當的訊息
    • 工具:透過 Slack 頻道傳送
  5. 後續操作

    • 提示:“建立後續任務”生成下一步措施
    • 工具:如果需要,建立 GitHub 問題
    • 資源:連結到文件
    • 所有原語無縫協同工作

測試策略

單元測試

每個模組都包含全面的單元測試

  • 工具模式驗證
  • 資源 URI 解析
  • 提示模板渲染
  • 整合場景

整合測試

端到端測試覆蓋

  • 完整的 PR 工作流
  • 錯誤恢復場景
  • 負載下的效能
  • 安全驗證

測試結構

tests/
├── unit/
│   ├── test_tools.py
│   ├── test_resources.py
│   ├── test_prompts.py
│   └── test_integration.py
├── integration/
│   ├── test_workflow.py
│   ├── test_webhooks.py
│   └── test_notifications.py
└── fixtures/
    ├── sample_events.json
    └── mock_responses.json

執行解決方案

本地開發設定

  1. 啟動 MCP 伺服器python server.py
  2. 配置 Claude Code:將伺服器新增到 MCP 設定中
  3. 設定 Cloudflare Tunnelcloudflared tunnel --url https://:3000
  4. 配置 webhook:將隧道 URL 新增到 GitHub 倉庫
  5. 測試工作流:建立 PR 並觀察自動化

配置

簡單的基於檔案的配置,易於設定

  • .env 檔案中的 GitHub 令牌
  • 配置中的 Slack webhook
  • templates/ 中的模板自定義
  • 所有設定集中在一處

常見模式和最佳實踐

工具設計

  • 保持工具專注且單一用途
  • 返回結構化資料以供 AI 解釋
  • 包含全面的錯誤訊息
  • 版本化工具模式

資源組織

  • 使用清晰的 URI 層級結構
  • 實現資源發現
  • 快取常用資源
  • 版本控制所有資源

提示工程

  • 使提示具體但靈活
  • 包含上下文和示例
  • 用各種輸入進行測試
  • 維護提示庫

整合模式

  • 使用事件進行鬆散耦合
  • 實現斷路器
  • 新增帶有回退的重試
  • 監控所有外部呼叫

故障排除指南

常見問題

  1. Webhook 未接收到事件

    • 檢查 Cloudflare Tunnel 是否正在執行
    • 驗證 GitHub Webhook 配置
    • 確認金鑰匹配
  2. 工具未在 Claude 中顯示

    • 驗證工具模式
    • 檢查伺服器註冊
    • 檢查 MCP 連線
  3. 資源無法訪問

    • 驗證檔案許可權
    • 檢查 URI 格式
    • 確認資源註冊
  4. 提示產生不一致的結果

    • 檢查提示模板
    • 檢查提供的上下文
    • 驗證輸入格式

下一步和擴充套件

潛在增強功能

  1. 新增更多程式碼分析工具(複雜性、安全性)
  2. 與更多通訊平臺整合
  3. 新增自定義工作流定義
  4. 實現 PR 自動合併功能

學習路徑

  • 下一步:單元 4 - 遠端部署此伺服器
  • 高階:自定義 MCP 協議擴充套件
  • 專家:多伺服器編排

結論

這個 PR 代理展示了 MCP 三種原語協同工作的強大功能。工具提供功能,資源提供上下文,提示確保一致性。它們結合起來建立了一個智慧自動化系統,提高了開發人員的生產力,同時保持了團隊標準。

模組化架構確保每個元件都可以獨立理解、測試和擴充套件,而整合則展示了您在生產 MCP 伺服器中將使用的實際模式。

< > 在 GitHub 上更新

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