MCP 課程文件
模組 3:Slack 通知
並獲得增強的文件體驗
開始使用
模組 3:Slack 通知
溝通差距危機
CodeCraft Studios 的第三週。您的自動化系統已經改變了團隊的工作方式
- PR 代理(模組 1):開發人員正在編寫清晰、有用的拉取請求描述
- CI/CD 監控器(模組 2):團隊立即發現測試失敗,防止 bug 進入生產環境
團隊感到信心十足……直到週一早上出現新的危機。
前端團隊(Emma 和 Jake)整個週末都在除錯一個棘手的 API 整合問題。他們嘗試了所有方法:檢查網路呼叫、驗證請求格式,甚至重寫錯誤處理。最終,在週日凌晨 2 點,他們發現後端團隊已經在週五解決了這個問題並將其部署到預釋出環境——但忘記宣佈。
“我們浪費了 12 個小時來解決一個已經修復的問題!” Emma 沮喪地說。
與此同時,設計團隊上週完成了新使用者入門流程的插圖,但前端團隊不知道它們已經準備好。那些漂亮的素材仍然閒置著,而團隊卻在使用臨時設計。
團隊意識到他們存在資訊孤島問題。每個人都在努力工作,但他們沒有有效地溝通正在發生的事情以及發生的時間。
您的任務:透過智慧 Slack 通知完善自動化系統,自動向整個團隊通報重要進展。
您將構建什麼
這最後一個模組完成了 CodeCraft Studios 的轉型。您將整合工具和提示,建立一個智慧通知系統,傳送關於 CI/CD 事件的格式化 Slack 訊息,演示所有 MCP 原語在實際場景中如何協同工作。
在模組 1 和模組 2 的基礎上,您將新增最後一塊拼圖
- Slack webhook 工具,用於向您的團隊頻道傳送訊息
- 兩個通知提示,智慧地格式化 CI 事件
- 完整整合,展示所有 MCP 原語協同工作
截圖:完整的自動化系統!🎉
最後一塊拼圖:觀看您的完整自動化系統如何防止困擾 Emma 和 Jake 的週一早晨意外!
您將看到:
- Claude 的智慧工作流 - 請注意 Claude 如何分解任務:☐ 檢查事件 → ☐ 傳送通知
- 即時 MCP 工具執行 -
get_recent_actions_events
拉取最新的 CI 資料,然後send_slack_notification
傳送警報 - 並排演示 - Slack 頻道同時開啟,顯示 Claude 傳送時格式化訊息的出現
智慧通知:Claude 不僅僅是向團隊傳送垃圾郵件,它還使用以下內容精心製作專業警報
- 🚨 清晰的緊急指示器和表情符號
- 詳細的故障分解 (test-auth-service ❌, test-api ❌, test-frontend ⏳)
- 可操作的連結到管道執行和拉取請求
- 每個人都需要上下文 - 儲存庫、PR #1 “各項改進”、提交雜湊
為什麼這很重要:還記得溝通差距危機嗎?再也不會了!這個系統確保當 CI 在 demo-bad-pr
分支上失敗時,整個團隊會立即知道。再也沒有為已經修復的問題進行的週末除錯會話了!
完整的旅程:從模組 1 的 PR 混亂到模組 3 的智慧團隊通知——您構建了一個改變 CodeCraft Studios 協作方式的系統。週末的“戰士”變成了知情的隊友!🚀
學習目標
學完本模組後,您將瞭解
- 如何將外部 API 與 MCP 工具整合
- 如何將工具和提示結合起來以完成工作流
- 如何使用 Slack markdown 格式化富訊息
- 所有 MCP 原語在實踐中如何協同工作
先決條件
您需要之前模組的所有內容以及
- 完成模組 1 和 2 - 本模組直接擴充套件您現有的 MCP 伺服器
- 一個 Slack 工作區,您可以在其中建立傳入 Webhook(個人工作區也可以)
- 對 REST API 的基本瞭解 - 您將向 Slack 的 Webhook 端點發出 HTTP 請求
關鍵概念
MCP 整合模式
本模組演示了完整的工作流程
- 事件 → GitHub Actions webhook(來自模組 2)
- 提示 → 將事件格式化為可讀訊息
- 工具 → 將格式化訊息傳送到 Slack
- 結果 → 專業團隊通知
Slack Markdown 格式化
您將使用Slack 的 Markdown 來實現富文字訊息
*粗體文字*
用於強調_斜體文字_
用於詳細資訊`程式碼塊`
用於技術資訊> 引用文字
用於摘要- 表情符號:✅ ❌ 🚀 ⚠️
- 連結:
<https://github.com/user/repo|儲存庫>
專案結構
slack-notification/
├── starter/ # Your starting point
│ ├── server.py # Modules 1+2 code + TODOs
│ ├── webhook_server.py # From Module 2
│ ├── pyproject.toml
│ └── README.md
└── solution/ # Complete implementation
├── server.py # Full Slack integration
├── webhook_server.py
└── README.md
實施步驟
步驟 1:設定 Slack 整合(10 分鐘)
建立 Slack Webhook
- 前往Slack API 應用
- 建立新應用 → “從頭開始”(建立應用指南)
- 應用名稱:“MCP 課程通知”
- 選擇您的工作區
- 前往“功能”→“傳入 Webhook”
- 啟用傳入 Webhook
- 點選“將新 Webhook 新增到工作區”
- 選擇頻道並授權(Webhook 設定指南)
- 複製 Webhook URL
測試 Webhook 是否工作(遵循Webhook 釋出示例)
curl -X POST -H 'Content-type: application/json' \ --data '{"text":"Hello from MCP Course!"}' \ YOUR_WEBHOOK_URL
設定環境變數
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
⚠️ 安全提示:Webhook URL 是一個敏感秘密,它授予向您的 Slack 頻道釋出訊息的許可權。請始終
- 將其儲存為環境變數,切勿在程式碼中硬編碼
- 切勿將 Webhook URL 提交到版本控制(新增到 .gitignore)
- 將其視為密碼——任何擁有此 URL 的人都可以向您的頻道傳送訊息
安全警報:Webhook URL 是敏感憑證!任何擁有您的 Webhook URL 的人都可以向您的 Slack 頻道傳送訊息。始終將它們儲存為環境變數,並且切勿將它們提交到版本控制。
步驟 2:新增 Slack 工具(15 分鐘)
現在您有了可用的 Webhook,您將把一個新的 MCP 工具新增到現有伺服器檔案 server.py 中(來自模組 2)。此工具將透過向 Webhook URL 傳送 HTTP 請求來處理向 Slack 傳送通知。
注意:入門程式碼包含模組 1 和 2 的所有改進(輸出限制、Webhook 處理)。請重點關注新的 Slack 整合!
將此工具新增到您的 server.py 中
send_slack_notification
:
- 接受一個訊息字串引數
- 從環境變數讀取 Webhook URL
- 向 Slack Webhook 傳送 POST 請求
- 返回成功/失敗訊息
- 處理基本錯誤情況
import os
import requests
from mcp.types import TextContent
@mcp.tool()
def send_slack_notification(message: str) -> str:
"""Send a formatted notification to the team Slack channel."""
webhook_url = os.getenv("SLACK_WEBHOOK_URL")
if not webhook_url:
return "Error: SLACK_WEBHOOK_URL environment variable not set"
try:
# TODO: Send POST request to webhook_url
# TODO: Include message in JSON payload with "mrkdwn": true
# TODO: Handle response and return status
pass
except Exception as e:
return f"Error sending message: {str(e)}"
步驟 3:建立格式化提示(15 分鐘)
接下來,您將向伺服器新增 MCP 提示——這是神奇之處!這些提示將與 Claude 協同工作,自動將您的 GitHub Webhook 資料格式化為結構良好的 Slack 訊息。請記住,在模組 1 中,提示提供了 Claude 可以始終如一使用的可重用指令。
實現兩個生成 Slack 格式訊息的提示
format_ci_failure_alert
:@mcp.prompt() def format_ci_failure_alert() -> str: """Create a Slack alert for CI/CD failures.""" return """Format this GitHub Actions failure as a Slack message: Use this template: :rotating_light: *CI Failure Alert* :rotating_light: A CI workflow has failed: *Workflow*: workflow_name *Branch*: branch_name *Status*: Failed *View Details*: <LOGS_LINK|View Logs> Please check the logs and address any issues. Use Slack markdown formatting and keep it concise for quick team scanning."""
format_ci_success_summary
:@mcp.prompt() def format_ci_success_summary() -> str: """Create a Slack message celebrating successful deployments.""" return """Format this successful GitHub Actions run as a Slack message: Use this template: :white_check_mark: *Deployment Successful* :white_check_mark: Deployment completed successfully for [Repository Name] *Changes:* - Key feature or fix 1 - Key feature or fix 2 *Links:* <PR_LINK|View Changes> Keep it celebratory but informative. Use Slack markdown formatting."""
步驟 4:測試完整工作流程(10 分鐘)
現在到了激動人心的部分——測試您的完整 MCP 工作流!您將使所有三個元件協同工作:來自模組 2 的 Webhook 捕獲、本模組的提示格式化以及 Slack 通知。
啟動所有服務(就像模組 2 中一樣,但現在集成了 Slack)
# Terminal 1: Start webhook server python webhook_server.py # Terminal 2: Start MCP server uv run server.py # Terminal 3: Start Cloudflare Tunnel cloudflared tunnel --url https://:8080
使用 Claude Code 測試完整的整合
- 配置 GitHub Webhook,使用隧道 URL(與模組 2 相同)
- 推送更改以觸發 GitHub Actions
- 請求 Claude 檢查最近的事件並使用您的提示對其進行格式化
- 讓 Claude 使用您的 Slack 工具傳送格式化訊息
- 驗證通知是否出現在您的 Slack 頻道中
步驟 5:驗證整合(5 分鐘)
無需設定真實的 GitHub 儲存庫即可測試您的實現!請參閱 manual_test.md
中的 curl 命令,它們模擬 GitHub Webhook 事件。
理解 Webhook 事件流
- 您的 Webhook 伺服器(來自模組 2)捕獲 GitHub 事件並將其儲存在
github_events.json
中 - 您的 MCP 工具從該檔案讀取以獲取最近的 CI/CD 活動
- Claude 使用您的格式化提示建立可讀訊息
- 您的 Slack 工具將格式化後的訊息傳送到您的團隊頻道
- 這將建立一個完整的管道:GitHub → 本地儲存 → Claude 分析 → Slack 通知
快速測試工作流
- 使用 curl 向您的 Webhook 伺服器傳送偽造的 GitHub 事件
- 請 Claude 檢查最近的事件並進行格式化
- 將格式化後的訊息傳送到 Slack
- 驗證所有功能端到端工作
手動測試替代方案: 要在不設定 GitHub 的情況下獲得完整的測試體驗,請按照 manual_test.md
中的分步 curl 命令進行操作。
Claude Code 中的示例工作流
User: "Check recent CI events and notify the team about any failures"
Claude:
1. Uses get_recent_actions_events (from Module 2)
2. Finds a workflow failure
3. Uses format_ci_failure_alert prompt to create message
4. Uses send_slack_notification tool to deliver it
5. Reports back: "Sent failure alert to #dev-team channel"
預期 Slack 訊息輸出
故障警報
🚨 *CI Failure Alert* 🚨
A CI workflow has failed:
*Workflow*: CI (Run #42)
*Branch*: feature/slack-integration
*Status*: Failed
*View Details*: <https://github.com/user/mcp-course/actions/runs/123|View Logs>
Please check the logs and address any issues.
成功摘要
✅ *Deployment Successful* ✅
Deployment completed successfully for mcp-course
*Changes:*
- Added team notification system
- Integrated MCP Tools and Prompts
*Links:*
<https://github.com/user/mcp-course/pull/42|View Changes>
常見問題
Webhook URL 問題
- 驗證環境變數設定是否正確
- 在整合之前直接使用 curl 測試 Webhook
- 確保 Slack 應用具有適當的許可權
訊息格式化
- Slack Markdown 與 GitHub Markdown 不同
- 重要提示:粗體使用
*text*
(而不是**text**
) - 在 Webhook 有效負載中包含
"mrkdwn": true
以進行正確格式化 - 在自動化之前手動測試訊息格式
- 正確處理提交訊息中的特殊字元(格式化參考)
網路錯誤
- 向 Webhook 請求新增基本的超時處理(Webhook 錯誤處理)
- 從工具返回有意義的錯誤訊息
- 如果請求失敗,檢查網際網路連線
主要收穫
您現在已經構建了一個完整的 MCP 工作流,它演示了
- 工具用於外部 API 整合(Slack Webhook)
- 提示用於智慧訊息格式化
- 所有 MCP 原語協同工作的整合
- 團隊可以實際使用的真實世界應用
這展示了 MCP 在構建實用開發自動化工具方面的強大功能!
關鍵學習:您現在已經構建了一個完整的 MCP 工作流,它結合了工具(用於外部 API 呼叫)和提示(用於一致的格式化)。這種“工具 + 提示”模式是高階 MCP 開發的基礎,可以應用於許多其他自動化場景。
後續步驟
恭喜!您已完成單元 3 的最後一個模組,並構建了一個完整的端到端自動化系統。您在所有三個模組中的旅程讓您獲得了以下實踐經驗:
- 模組 1:MCP 工具和智慧資料分析
- 模組 2:即時 Webhook 和 MCP 提示
- 模組 3:外部 API 整合和工作流完成
接下來做什麼:
- 測試您的完整系統 - 嘗試觸發真實的 GitHub 事件並觀察完整管道的工作
- 嘗試自定義 - 修改 Slack 訊息格式或新增新的通知型別
- 回顧單元 3 總結 - 反思您所學的一切並探索後續步驟
- 分享您的成功 - 向隊友展示 MCP 如何自動化您的開發工作流
您現在已經為使用 MCP 構建智慧自動化系統奠定了堅實的基礎!
轉型完成!
CodeCraft Studios 已從混亂的開發轉變為一臺運轉良好的機器。您構建的自動化系統處理
- 智慧 PR 描述,幫助審閱者理解更改
- 即時 CI/CD 監控,在故障到達生產環境之前捕獲它們
- 智慧團隊通知,自動讓每個人都知情
團隊現在可以專注於構建出色的產品,而不是解決流程問題。而且您已經學會了高階 MCP 模式,可以將其應用於任何自動化挑戰!