MCP 課程文件
第三單元解決方案演練:使用 MCP 構建拉取請求代理
並獲得增強的文件體驗
開始使用
第三單元解決方案演練:使用 MCP 構建拉取請求代理
概述
本演練將指導您完成第三單元拉取請求代理的完整解決方案——一個 MCP 伺服器,它透過分析程式碼更改、監控 CI/CD 流水線和自動化團隊通訊來幫助開發人員建立更好的拉取請求。該解決方案展示了所有三種 MCP 原語(工具、資源和提示)在實際工作流中協同工作。
架構概述
PR 代理由相互連線的模組組成,這些模組逐步構建了一個完整的自動化系統
- 構建 MCP 伺服器 - 帶有用於 PR 模板建議工具的基本伺服器
- 智慧檔案分析 - 使用資源增強分析以獲取專案上下文
- GitHub Actions 整合 - 使用標準化提示進行 CI/CD 監控
- Hugging Face Hub 整合 - 模型部署和資料集 PR 工作流
- 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 如何使用這些工具
- Claude 呼叫
analyze_file_changes
來理解更改了什麼 - 使用
get_pr_templates
檢視可用選項 - 使用分析資料呼叫
suggest_template
- 接收帶有推理的建議
- 可以根據特定更改自定義模板
學習成果
- 理解工具註冊和模式
- 讓 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 如何使用資源
- 讀取
team://guidelines/review-process.md
以瞭解 PR 要求 - 訪問
file://project-context/coding-standards.md
獲取樣式指南 - 分析
git://recent-changes/
以匹配團隊模式 - 將此上下文與檔案分析結合起來以獲得更好的建議
增強決策
有了資源,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. 事件處理流水線
- 從 GitHub 接收 webhook
- 解析事件資料並提取相關資訊
- 根據事件型別使用適當的提示
- 生成標準化響應
- 儲存以供團隊通知
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 檔案時
- 工具:
analyze_model_changes
檢測模型架構更改 - 資源:讀取
hub://model-cards/llm-template.md
- 提示:“生成基準摘要”建立評估部分
- 工具:
generate_model_card
更新文件 - 資源:檢查
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 上失敗時
- 工具:
get_team_members
識別 PR 作者和審閱者 - 資源:
team://members/{user}/preferences
檢查通知設定 - 提示:“格式化團隊更新”建立適當的訊息
- 工具:
send_slack_message
傳送到正確的頻道 - 資源:
notification://templates/ci-failure
確保格式一致 - 提示:“如果關鍵則升級”確定是否需要額外警報
智慧路由
系統考慮
- 團隊成員可用性(來自日曆資源)
- 通知偏好(電子郵件 vs Slack)
- 訊息緊急性(基於 PR 標籤)
- 時區和工作時間
學習成果
- 原始整合模式
- 複雜工作流編排
- 自動化與人類需求的平衡
- 生產就緒錯誤處理
完整工作流示例
以下是所有元件如何協同工作以處理典型 PR 的示例
開發人員建立 PR
- GitHub webhook 觸發伺服器
- 工具:
analyze_file_changes
檢查差異 - 資源:讀取團隊指南和專案上下文
- 提示:建議最佳 PR 模板
CI/CD 流水線執行
- Webhook 接收工作流事件
- 提示:“分析 CI 結果”處理結果
- 資源:檢查團隊升級策略
- 工具:更新 GitHub 中的 PR 狀態
Hugging Face Hub 整合
- 工具:檢測 LLM/資料集更改
- 資源:讀取 Hub 指南
- 提示:生成模型卡更新
- 工具:根據 Hub 標準進行驗證
團隊通知
- 工具:識別相關團隊成員
- 資源:讀取通知偏好設定
- 提示:格式化適當的訊息
- 工具:透過 Slack 頻道傳送
後續操作
- 提示:“建立後續任務”生成下一步措施
- 工具:如果需要,建立 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
執行解決方案
本地開發設定
- 啟動 MCP 伺服器:
python server.py
- 配置 Claude Code:將伺服器新增到 MCP 設定中
- 設定 Cloudflare Tunnel:
cloudflared tunnel --url https://:3000
- 配置 webhook:將隧道 URL 新增到 GitHub 倉庫
- 測試工作流:建立 PR 並觀察自動化
配置
簡單的基於檔案的配置,易於設定
.env
檔案中的 GitHub 令牌- 配置中的 Slack webhook
templates/
中的模板自定義- 所有設定集中在一處
常見模式和最佳實踐
工具設計
- 保持工具專注且單一用途
- 返回結構化資料以供 AI 解釋
- 包含全面的錯誤訊息
- 版本化工具模式
資源組織
- 使用清晰的 URI 層級結構
- 實現資源發現
- 快取常用資源
- 版本控制所有資源
提示工程
- 使提示具體但靈活
- 包含上下文和示例
- 用各種輸入進行測試
- 維護提示庫
整合模式
- 使用事件進行鬆散耦合
- 實現斷路器
- 新增帶有回退的重試
- 監控所有外部呼叫
故障排除指南
常見問題
Webhook 未接收到事件
- 檢查 Cloudflare Tunnel 是否正在執行
- 驗證 GitHub Webhook 配置
- 確認金鑰匹配
工具未在 Claude 中顯示
- 驗證工具模式
- 檢查伺服器註冊
- 檢查 MCP 連線
資源無法訪問
- 驗證檔案許可權
- 檢查 URI 格式
- 確認資源註冊
提示產生不一致的結果
- 檢查提示模板
- 檢查提供的上下文
- 驗證輸入格式
下一步和擴充套件
潛在增強功能
- 新增更多程式碼分析工具(複雜性、安全性)
- 與更多通訊平臺整合
- 新增自定義工作流定義
- 實現 PR 自動合併功能
學習路徑
- 下一步:單元 4 - 遠端部署此伺服器
- 高階:自定義 MCP 協議擴充套件
- 專家:多伺服器編排
結論
這個 PR 代理展示了 MCP 三種原語協同工作的強大功能。工具提供功能,資源提供上下文,提示確保一致性。它們結合起來建立了一個智慧自動化系統,提高了開發人員的生產力,同時保持了團隊標準。
模組化架構確保每個元件都可以獨立理解、測試和擴充套件,而整合則展示了您在生產 MCP 伺服器中將使用的實際模式。
< > 在 GitHub 上更新