Buildkite
官方管理 Buildkite 的管道與建置。
你可以用 Buildkite MCP 做什麼?
- 比較建置以找出回歸 — 使用
compare_builds搭配org_slug、pipeline_slug和build_number,詢問「自上次在 main 上正常運作以來,這次建置有什麼改變?」 - 透過日誌調查失敗的工作 — 在比較之後,使用
get_build_failure_summary或tail_logs檢查新失敗或持續失敗步驟的日誌條目。 - 釘選特定基準以進行比較 — 提供
baseline_build_number以與特定建置(包括失敗的建置或其他分支上的建置)進行比較。 - 了解工作比對與時間 — 取得工作如何比對(透過步驟鍵或名稱備援)的詳細資訊,並查看從
scheduled_at到started_at的執行時間差異。
文件
buildkite-mcp-server
Model Context Protocol (MCP) 伺服器,將 Buildkite 資料(管道、建置、工作、測試)暴露給 AI 工具與編輯器。
完整文件請見 buildkite.com/docs/apis/mcp-server。
比較建置
compare_builds 工具(唯讀)位於 investigations 工具集中,可回答諸如「自上次建置在 main 分支成功以來,有什麼變更?」這類問題。請提供 org_slug、pipeline_slug 以及目標 build_number。它會選取同一管道與確切分支上、目前為通過狀態且建立時間最早的較早建置作為基準。它不要求基準在目標建置開始時就已通過。提供 baseline_build_number 可改為與該管道中的特定建置(包括失敗的建置或另一分支上的建置)進行比較。
回應會標明基準與選取規則,統計所有工作的結果,並回傳最多 100 筆工作比較,優先列出新失敗、已恢復與持續失敗的步驟。比對使用步驟鍵、工作類型、矩陣值以及平行索引/總數。當兩邊工作都缺少鍵時,會退回使用確切的非空白名稱加上類型、群組鍵、矩陣值與平行索引/總數,且僅在該組合於每個建置中皆唯一時才進行比對。比對成功的工作會暴露 match_method: "step_key" 或 "name_fallback";退回比對則會附帶啟發式比對的警告。未命名且無鍵的工作以及重複的身分會保持未比對狀態。即使鍵在兩個建置之間被新增、移除或變更,明確的鍵也絕不會退回使用名稱比對。新增/移除表示某個工作身分僅存在於其中一個建置,因此重新命名無鍵工作或變更矩陣值或平行設定,也可能產生新增/移除的項目。重試嘗試會被排除;最終嘗試的狀態與重試次數仍會顯示。
執行時間與差異僅涵蓋最終嘗試。排程時間是 scheduled_at 到 started_at,而非依賴或手動等待時間。這些並非建置的實際耗時比較,也不是重試的總成本。時間戳記缺失或不一致時,會省略對應的計時。未完成的建置會被明確標示為變動中的快照。
軟失敗與硬失敗之間的轉換會回報為 state_changed,即使兩邊工作狀態皆為 failed。通過的基準建置可能包含軟失敗的工作。
預設情況下,最多三個新失敗的工作會包含其最後 20 筆日誌條目,每個條目上限為 8 KiB 的日誌內容。設定 include_logs: false 可省略日誌。日誌錯誤不會捨棄比較結果,但 HTTP 401 驗證錯誤除外,這類錯誤會透過伺服器的重新驗證路徑傳遞。此工具需要 read_builds 與 read_build_logs 權限範圍。請使用 get_build_failure_summary 或 tail_logs 進一步調查;共同的失敗步驟並不代表有共同的根因,也不代表重試是安全的。
基準搜尋最多檢查 500 個候選項目。若找不到基準,回應會說明未執行比較,並要求提供明確的基準。工作清單每個建置上限為 1,000 筆工作;較大的清單會回傳錯誤,而非誤導性的部分新增/移除結果。輸出省略項目會與完整的結果統計分開回報。
程式庫使用方式
此模組匯出的 Go API 應視為不穩定,且可能隨著專案演進而發生破壞性變更。
安全性
為確保 MCP 伺服器在安全的環境中執行,我們建議在容器中執行。
此映像檔建置自 cgr.dev/chainguard/static,並以非特權使用者身分執行。
透過 HTTP 模式傳遞身分標頭
自架設的 HTTP 部署可將每個傳入 MCP 請求中的選定標頭轉發至 Buildkite API:
BUILDKITE_API_TOKEN=bkua_xxx \
buildkite-mcp-server http \
--passthrough-http-header X-User-Identity
重複 --passthrough-http-header 可允許更多標頭,或設定以逗號分隔的 BUILDKITE_PASSTHROUGH_HTTP_HEADERS 值。只有明確允許的標頭會被轉發,且僅轉發至由 BUILDKITE_BASE_URL 設定的來源。轉發至其他位置的請求會移除這些標頭。
若要為每個 MCP 請求使用各自的 Buildkite API 權杖進行驗證,請允許 Authorization 並省略程序層級的權杖:
BUILDKITE_PASSTHROUGH_HTTP_HEADERS=Authorization \
buildkite-mcp-server http
在此模式下,每個 /mcp 請求都必須包含恰好一個非空的 Authorization 標頭。缺少憑證會回傳 HTTP 401;伺服器絕不會退回使用共用的 API 權杖。MCP 伺服器前方的反向代理負責驗證呼叫者身分,並設定或驗證任何轉發的身分標頭。
標頭傳遞在 stdio 模式下不可用。在提供工作日誌之前,伺服器會驗證目前呼叫者是否有權存取該工作日誌。此檢查會在每個日誌工具請求時執行,即使日誌資料已快取亦然。
貢獻
開發指南請見 DEVELOPMENT.md。
授權
MIT © Buildkite
SPDX-License-Identifier: MIT