/ 目錄 / 演練場 / ArgoCD
● 官方 argoproj-labs 🔑 需要你的金鑰

ArgoCD

作者 argoproj-labs · argoproj-labs/mcp-for-argocd

在 Claude 中檢視、比對並同步 ArgoCD 應用程式——無需切換 kubectl context 即可掌握 GitOps 叢集狀態。

ArgoProj Labs 的 MCP 封裝了 ArgoCD API:列出應用程式、查看同步/健康狀態、比對期望與實際差異、觸發同步,以及讀取應用程式 manifest。建議將 token 設為唯讀用於觀測,僅在明確需要同步或覆寫時才授予寫入權限。

為什麼要用

核心特性

即時演示

實際使用效果

argocd.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "argocd": {
      "command": "uvx",
      "args": [
        "mcp-for-argocd"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "argocd": {
      "command": "uvx",
      "args": [
        "mcp-for-argocd"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "argocd": {
      "command": "uvx",
      "args": [
        "mcp-for-argocd"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "argocd": {
      "command": "uvx",
      "args": [
        "mcp-for-argocd"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "argocd",
      "command": "uvx",
      "args": [
        "mcp-for-argocd"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "argocd": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-for-argocd"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add argocd -- uvx mcp-for-argocd

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: ArgoCD

找出已發生偏移(drift)的 ArgoCD 應用程式

👤 執行 GitOps 的平台/SRE 團隊 ⏱ ~20 min intermediate

何時使用: 每週確認:哪些叢集的哪些應用程式處於 OutOfSync 或 Degraded 狀態,以及原因為何?

前置條件
  • 具備讀取權限的 ArgoCD API token — argocd account generate-token --account <read-only-user>
  • ArgoCD 伺服器網址ARGOCD_SERVER=argocd.my.company.com
步驟
  1. 列出所有應用程式及其狀態
    列出所有 ArgoCD 應用程式,包含:名稱、專案、同步狀態、健康狀態、最後同步時間。✓ 已複製
    → 完整清單
  2. 聚焦於偏移的應用程式
    篩選出 syncStatus != 'Synced' 或 health != 'Healthy' 的應用程式,並依最後同步時間排序。✓ 已複製
    → 問題應用程式清單
  3. 比對特定應用程式的差異
    針對應用程式 <name>,顯示期望(git)與實際狀態的差異,哪些資源不同步?✓ 已複製
    → 資源層級的差異

結果: 產出每週偏移報告,明確指出哪些應用程式需要處理及原因。

注意事項
  • 偏移是由合理的僅執行期資源造成的(例如 HPA 自動調整的副本數) — 在 Application spec 的 ignoreDifferences 中排除那些會在執行期變更的欄位
搭配使用: notion

審查並套用特定應用程式的同步

👤 負責推送變更的 DevOps 工程師 ⏱ ~15 min intermediate

何時使用: PR 已合併至 main;ArgoCD 顯示該應用程式處於 OutOfSync 狀態等待您核准。

前置條件
  • 對目標專案具備同步權限的 token — Role with applications, sync, <project>/* allowed
步驟
  1. 檢視待套用的變更
    針對應用程式 <name>,顯示差異。哪些資源會變更?影響範圍有多大?✓ 已複製
    → 具體的差異內容
  2. 確認來源 commit
    期望狀態指向的 commit SHA 是什麼?顯示 GitHub 上的 commit 訊息與對應的 PR。✓ 已複製
    → Commit 與 PR 的背景資訊
  3. 先以 prune=false 進行同步
    以 prune=false、dryRun=false 觸發 <name> 的同步,等待完成後顯示最終狀態。✓ 已複製
    → Sync Succeeded;health Healthy

結果: 部署前已完成審查,不會措手不及;透過 prune 刪除資源只在明確授權時才執行。

注意事項
  • 使用 prune=true 進行同步可能刪除仍需要的資源 — 務必先以 prune=false 開始;僅在確認命名空間中不存在手動建立的資源後,才啟用 prune
搭配使用: github

緊急回滾至先前的 git 版本

👤 處理異常部署事件的 SRE ⏱ ~15 min advanced

何時使用: 部署後錯誤率飆升,需要回滾至上一個已知穩定版本。

步驟
  1. 取得目前版本與歷史記錄
    針對應用程式 <name>,顯示目前版本及最近 5 次部署的版本與時間戳記。✓ 已複製
    → 歷史版本表格
  2. 選定回滾目標
    兩次同步前的版本是什麼?確認其 SHA 是否對應到事件發生前的 git commit。✓ 已複製
    → 確認目標 SHA
  3. 執行回滾
    以 prune=false 將 <name> 同步至版本 <SHA>,等待狀態變為 Healthy,完成後在 Teams 發送通知。✓ 已複製
    → 應用程式已回滾並送出通知

結果: 完成乾淨的回滾並留下稽核紀錄,通常在 5 分鐘內完成。

注意事項
  • 只回滾應用程式,但資料庫 migration 已向前執行 — 資料庫 migration 需要獨立的回滾計畫;有時相較於對已異動的 schema 回滾程式碼,以修補程式「向前滾」更為安全
搭配使用: sentry · ms-teams

建立跨叢集應用程式清單

👤 管理多個叢集的平台團隊 ⏱ ~20 min intermediate

何時使用: 您以 hub-spoke 模式執行 ArgoCD,需要一份平面清單:「哪些應用程式運行在哪裡」。

步驟
  1. 列出 ArgoCD 管理的所有叢集
    列出 ArgoCD 中所有已註冊的叢集,包含名稱與伺服器網址。✓ 已複製
    → 叢集清單
  2. 將應用程式對應至各叢集
    對每個應用程式,顯示其目標叢集與命名空間,並依叢集分組。✓ 已複製
    → 各叢集的應用程式清單
  3. 標記異常的部署位置
    是否有應用程式部署在非預期的叢集(例如「僅限正式環境」的應用程式出現在開發叢集)?請標記並說明原因。✓ 已複製
    → 異常清單

結果: 取得最新的應用程式部署位置對應圖,可用於稽核與容量規劃。

注意事項
  • 叢集條目過期——Secret 已移除但叢集仍列在清單中 — 定期驗證每個叢集是否可連線,移除過期的條目

組合

與其他 MCP 搭配,撬動十倍槓桿

argocd + github

將 Argo 同步與觸發它的 PR 進行交叉比對

針對應用程式 <name>,顯示目前的版本 SHA;擷取引入此版本的 GitHub PR 並摘要說明變更內容。✓ 已複製
argocd + sentry

將 Argo 同步與部署後的錯誤率飆升進行關聯分析

應用程式 <name> 在 14:02 完成同步;Sentry 的錯誤數在此之後是否飆升?若是,顯示本次引入的最主要問題。✓ 已複製
argocd + ms-teams

將同步/回滾事件推送至 Teams 頻道

每次手動同步應用程式 <name> 後,在 Teams #deploys 頻道發送訊息,內容包含版本 SHA 及觸發者。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_applications project?, selector? 列出所有應用程式清單 free
get_application name 查詢特定應用程式的詳細狀態 free
get_application_diff name, revision? 預覽同步會變更哪些內容 free
sync_application name, revision?, prune?, dryRun?, resources? 套用待處理的變更 free (triggers cluster work)
get_application_resource_tree name 檢視應用程式擁有的實際資源 free
list_clusters 進行跨叢集清單盤點 free

成本與限制

運行它的成本

API 配額
受限於您的 ArgoCD 伺服器容量,實際上限約為每秒 10 次請求
每次呼叫 Token 數
應用程式清單:500–3000 tokens。差異比對:最多 5000 tokens。
費用
免費——ArgoCD 是開源軟體,您只需支付託管基礎設施的費用。
提示
快取應用程式清單;使用選擇器(專案、標籤)縮小查詢範圍,避免每次列出所有內容。

安全

權限、密鑰、影響範圍

最小權限: read on applications, clusters for read-only sessions
憑證儲存: ARGOCD_AUTH_TOKENARGOCD_SERVER 存放於環境變數中
資料出站: 僅呼叫您的 ArgoCD 伺服器
切勿授予: admin sync on all projects without reason account:update

故障排查

常見錯誤與修復

401 Unauthenticated

ARGOCD_AUTH_TOKEN 已過期或被撤銷。請透過 argocd account generate-token 重新產生。

驗證: argocd account get-user-info --auth-token $ARGOCD_AUTH_TOKEN
403 Permission denied on sync

角色缺少 applications, sync, <project>/* 權限。請更新 AppProject 或帳號角色。

Sync stuck in Progressing for >10 min

通常是某個資源卡住——在 resource-tree 中檢查是否有失敗的 hook 或卡住的 controller;可能需要在叢集內手動介入處理。

Diff shows unexpected drift on every sync

Controller 在執行期間修改了欄位值。請在 Application spec 的 ignoreDifferences 中針對這些欄位進行排除設定。

替代方案

ArgoCD 對比其他方案

替代方案何時用它替代權衡
Flux MCP您使用 Flux 而非 ArgoCD 作為 GitOps 工具不同的 GitOps 引擎;以 CLI 為主的操作模式
Kubernetes MCP (raw kubectl)您需要直接存取叢集,不透過 GitOps 抽象層命令式操作——對於受 GitOps 管理的應用程式而言,這違背了 GitOps 的設計初衷

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills