事件處理該用 API 還是 MCP?先把固定流程與調查分開
Threads 上一則近期討論把 incident management 裡的 API 與 MCP 放在一起比較。這個角度值得寫,但不是因為兩者要互相取代,而是因為事件發生時,最怕把「可重跑的固定操作」和「需要理解上下文的調查」混成同一條 agent 指令。
我的切法很簡單:已知、可預期、需要嚴格紀錄的動作用 API;還不知道該查哪裡、需要在多個訊號間建立脈絡時,才考慮用 MCP 輔助調查。 兩者都要有權限與人工核准,差別只是失敗模式不同。
先分辨你面對的是動作還是問題
| 當下需求 | 較適合的入口 | 原因 |
|---|---|---|
| 查某服務是否健康、拉指定時間的 metrics | API 或既有 CLI | 輸入、輸出與權限範圍都能固定 |
| 依 runbook 重啟單一服務 | API/自動化腳本 | 可加 idempotency、審核與明確的變更紀錄 |
| 對照告警、部署紀錄、最近 PR 與依賴狀態 | MCP 的唯讀工具組合 | 問題本身仍在收斂,需要跨來源調查 |
| 修改正式設定、刪資料或擴大權限 | 人工核准後的受控 API 流程 | 高影響動作不應由「推測」直接觸發 |
例如「把服務 A 重啟」是動作;「為什麼服務 A 在這次部署後開始逾時」是問題。前者應有一個可審核、可重跑的程序;後者才需要把 log、版本、設定與依賴關係放進同一個調查脈絡。
API 流程要追求可預期,不是更像聊天
事件處理裡的 API/CLI 自動化,至少應明確記錄:
- 目標資源與環境,例如 production 的哪一個 service。
- 允許的操作集合,而不是任意 shell 指令。
- 操作前條件與停止條件,例如健康檢查已失敗但資料庫 migration 未執行。
- 呼叫者、時間、請求 ID 與回應結果。
- 失敗時要通知誰,以及是否需要人工接手。
這些限制看似降低彈性,卻正是 incident 自動化的價值:同一個輸入可以被同一套 runbook 處理,事後也能說明「當時做了什麼」。如果一個操作需要大量語意判斷才知道怎麼呼叫,它很可能還不適合直接自動化。
MCP 適合縮小未知範圍,但先停在唯讀
MCP 的 tools 定義包含名稱、說明與 input schema;官方規格也提醒 client 不應因為 tool annotation 就無條件信任 server。這很符合調查工作的需求:把可用資料來源明確列出,再讓 agent 依目前證據提出下一個查詢。
一個低風險的 MCP 調查任務可以像這樣:
只讀取指定 production service 在過去 30 分鐘的:1. 健康檢查結果;2. 部署版本;3. 錯誤率;4. 最近一次設定變更。
不要重啟服務、不要修改設定、不要查詢其他專案。輸出每項來源、時間範圍與仍無法確定的假設。輸出要求裡的「來源、時間範圍、假設」很重要。它讓人可以判斷 agent 是真正找到訊號,還是只是把相關名詞湊成一個可能原因。
連 MCP 前,先定義事件處理的權限邊界
MCP 官方 security best practices 特別指出本機 server 的程式碼執行、資料外洩與權限問題,也建議採取最小 scope、逐步提升權限。用在事件處理時,我會採用三層邊界:
| 層級 | 允許事項 | 不允許事項 |
|---|---|---|
| 觀測 | 查 log、metrics、版本與狀態 | 變更設定、呼叫寫入 API |
| 建議 | 根據資料產生假設與 runbook 建議 | 宣稱根因已確定、直接執行修復 |
| 執行 | 經人工核准後呼叫固定 API | 依模型推測擴大到其他資源或帳號 |
這也處理了一個常見誤解:即使 MCP host 的本機 sandbox 設得很窄,MCP server 與外部服務仍有自己的控制面。不要把「agent 是唯讀」推論成「所有接上的工具也沒有寫入能力」。
一個適合交接的處理順序
告警觸發 -> API/runbook 取得固定健康訊號 -> MCP 僅讀取跨來源線索,列出假設與證據 -> 人工選擇已核准的修復操作 -> API 執行單一修復動作並驗證 -> 記錄結果、時間範圍與待追查事項把 MCP 留在「調查與摘要」,把寫入動作留給有輸入驗證、權限範圍與 audit log 的 API 流程,能讓兩種工具各自做擅長的事。即使調查結果錯了,也不會直接把錯誤推論放大成正式環境的變更。
這次要記住的事
事件處理不是選 API 或 MCP 的二選一。固定、可重跑、影響明確的操作,應收斂為受控 API/runbook;跨來源、仍有未知的問題,才交給 MCP 協助唯讀探索。先把兩條路分開,之後要加速自動化才不會把調查能力誤當成執行權限。
常見問題
Q: 有 MCP 後,還需要維護 API runbook 嗎?
A: 需要。MCP 可以幫忙找資料與整理脈絡,但固定且高影響的操作仍需要可驗證的輸入、權限、紀錄與回復路徑,這些通常更適合由 API 或腳本 runbook 負責。
Q: MCP 可以直接重啟 production 服務嗎?
A: 技術上取決於 server 暴露的工具與帳號權限;流程上不應把它預設成可做的事。先以唯讀調查縮小問題,再由人核准一個範圍固定的修復操作。
Q: API 比 MCP 更安全嗎?
A: 不一定。安全性取決於身分驗證、scope、輸入驗證、記錄與審核。API 較容易把固定操作做成可重跑的合約;MCP 則需要額外審查 server、工具定義與跨系統權限。
參考資料:
Model Context Protocol:Tools specification
回報錯字、失效連結,或告訴我你想看的延伸主題。