/ 目錄 / 演練場 / Kubernetes MCP Server
● 社群 containers 🔑 需要你的金鑰

Kubernetes MCP Server

作者 containers · containers/kubernetes-mcp-server

由 Claude 驅動的 kubectl — 使用你的 kubeconfig + RBAC,支援任何叢集(vanilla k8s、OpenShift、EKS、GKE、AKS、k3s)。

kubernetes-mcp-server(containers 組織)是一個使用你現有 kubeconfig 與任何 Kubernetes API 伺服器通訊的 Go 單一執行檔。它將標準動詞(list/get/apply/delete/log/exec)暴露為 MCP 工具,同時遵守你的 RBAC — 因此最小權限原則仍然有效。同時支援 OpenShift 擴充功能。

為什麼要用

核心特性

即時演示

實際使用效果

kubernetes-mcp-containers.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kubernetes-mcp-containers",
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "kubernetes-mcp-containers": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "kubernetes-mcp-server@latest"
        ]
      }
    }
  }
}

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

claude mcp add kubernetes-mcp-containers -- npx -y kubernetes-mcp-server@latest

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

使用場景

實戰用法: Kubernetes MCP Server

在 Kubernetes 上分流正式環境事故

👤 SRE/平台工程師 ⏱ ~10 min intermediate

何時使用: 某個應用程式在正式環境出現異常,你需要在不切換視窗的情況下查看 Pod、事件、日誌。

前置條件
  • 有叢集存取權限的 kubeconfig — 標準 aws eks update-kubeconfig 或等效指令
步驟
  1. 找出不健康的 Pod
    k8s:在 context prod-us-east、namespace checkout 中,列出不在 Running 狀態的 Pod。包含原因 + 重啟次數。✓ 已複製
    → 顯示帶有狀態、原因、重啟次數的 Pod
  2. 取得事件
    取得該 namespace 過去 30 分鐘內的事件,依時間排序。✓ 已複製
    → 事件清單;若有 OOMKilled 或 ImagePullBackOff 可見
  3. 取得日誌
    針對最近一次重啟的 Pod,查看前一個容器的日誌(最後 200 行)。✓ 已複製
    → 堆疊追蹤/原因可見
  4. 診斷
    綜合分析:最可能的根本原因是什麼,我們應該怎麼做?請具體說明。✓ 已複製
    → 具體的下一步(例如增加記憶體限制 + 滾動更新)

結果: 在 5 分鐘內完成分流,附有引用的 Pod 名稱 + 日誌行。

注意事項
  • 缺少的前一個容器的日誌不可取得 — 若 Pod 只重啟一次,查看當前容器日誌;只有崩潰才有前一個容器
  • context 錯誤 — 每次呼叫都要明確指定 context;不要依賴 current-context 的漂移
搭配使用: sentry · github

使用叢集 context 撰寫 Deployment

👤 撰寫 manifest 的應用程式開發者 ⏱ ~20 min intermediate

何時使用: 你需要一個新的 Deployment,並希望它符合叢集慣例。

步驟
  1. 檢視現有的
    k8s:取得 apps namespace 中一個現有 Deployment 的範例。我想符合它的標籤、安全 context、資源設定。✓ 已複製
    → 回傳具代表性的 Deployment YAML
  2. 撰寫新的
    現在為 image-resizer:1.2.0 撰寫新的 Deployment,2 個副本,port 8080,符合這些慣例。✓ 已複製
    → 遵守叢集慣例的 YAML
  3. 試跑套用
    使用 --dry-run=server 套用。回報任何驗證錯誤。✓ 已複製
    → 伺服器端驗證通過;無 ApplyConfiguration 漂移

結果: Manifest 第一次就符合叢集習慣。

注意事項
  • 忘記 PSA 標籤 — 先讀取 namespace 的 pod-security 標籤
搭配使用: filesystem · github

稽核跨 namespace 的 Helm release

👤 平台團隊 ⏱ ~25 min intermediate

何時使用: 季度稽核:在整個叢集群找出過時的 chart 版本。

步驟
  1. 列出所有 release
    k8s/Helm:列出每個 namespace 中的每個 release。包含 chart + version + appVersion。✓ 已複製
    → 完整的 release 表格
  2. 標記過時的
    針對每個,與最新 chart 版本比對(可搜尋)。標記落後超過 2 個次版本的 release。✓ 已複製
    → 標記集合,附有當前版本對最新版本

結果: 附有優先順序的升級積壓清單。

注意事項
  • 殘留的 Helm 2 release — 過濾到 v3 release;MCP 只處理 Helm 3

組合

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

kubernetes-mcp-containers + sentry

將錯誤與 Pod 重啟關聯

Sentry:14:00 的錯誤飆升。k8s:checkout namespace 在那時有任何 Pod 重啟嗎?✓ 已複製
kubernetes-mcp-containers + github

開一個帶有 manifest 修復的 PR

k8s:找出錯誤的記憶體限制。GitHub:開一個在 helm/values.yaml 中提高限制的 PR。✓ 已複製
kubernetes-mcp-containers + mcp-grafana

將 k8s 狀態與 Prometheus 交叉比對

k8s:Pod 持續重啟。Grafana:取得該 Pod 的記憶體使用歷史。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_resources context?, namespace?, kind: str, label_selector? 探索 1 API call
get_resource context?, namespace?, kind, name 檢查特定項目 1 call
apply_yaml context?, yaml: str, dry_run?: bool 建立或更新 1 call
delete_resource context?, namespace?, kind, name 移除 1 call
get_logs context?, namespace, pod, container?, previous?, tail? 檢查執行時 1 call
exec context?, namespace, pod, container?, command: str[] 在容器內診斷 1 call
list_events context?, namespace, since? 查找 OOMKilled/ImagePullBackOff 1 call
list_helm_releases context?, namespace? Helm 稽核 1 call

成本與限制

運行它的成本

API 配額
受 kube-apiserver QPS 限制(預設約 50)
每次呼叫 Token 數
200–8000(日誌/YAML 可能很大)
費用
免費開源;叢集費用照常
提示
積極使用 --tail 參數;絕不在大型叢集執行 get pods -o yaml -A

安全

權限、密鑰、影響範圍

最小權限: 你的 kubeconfig 使用者所擁有的權限 — RBAC 在伺服器端執行
憑證儲存: kubeconfig 檔案;透過你的雲端供應商輪換
資料出站: 僅限你的 kube API 端點
切勿授予: 給與 LLM 搭配使用的 kubeconfig 叢集管理員(cluster-admin)

故障排查

常見錯誤與修復

Unauthorized / 403

RBAC 拒絕該動詞;執行 kubectl auth can-i 確認該使用者權限

驗證: kubectl auth can-i get pods -n checkout
Connection refused

VPN 未連線,或 context 指向錯誤的端點;執行 kubectl cluster-info

Apply 被拒:驗證錯誤

先用 dry_run=server 執行;顯示確切錯誤

日誌太大

使用 tail 參數;預設取得完整日誌

替代方案

Kubernetes MCP Server 對比其他方案

替代方案何時用它替代權衡
kubectl-mcp(其他分支)你偏好不同的執行檔維護活躍度較低
Lens / k9s你想要互動式介面,而非 LLM無自動化層
Argo CD MCP你只用 GitOps間接;透過 Git 部署,而非直接 API

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

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