/ 目录 / 演练场 / Kubernetes MCP Server
● 社区 containers 🔑 需要你的密钥

Kubernetes MCP Server

作者 containers · containers/kubernetes-mcp-server

由 Claude 驱动的 kubectl——使用你的 kubeconfig + RBAC,支持任意集群(原生 k8s、OpenShift、EKS、GKE、AKS、k3s)。

kubernetes-mcp-server(containers 组织)是一个单一 Go 二进制文件,使用你现有的 kubeconfig 与任意 Kubernetes API server 通信。它将标准动词(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 生产事故 triage

👤 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 分钟内完成 triage,并引用具体 pod 名称和日志行。

注意事项
  • 上一个容器的日志不可用 — 如果 pod 只重启过一次,查看当前容器日志;只有崩溃时才有 previous container 日志
  • context 选错 — 每次调用都明确指定 context;不要依赖 current-context
搭配使用: sentry · github

结合集群现有配置编写 Deployment

👤 编写 manifest 的应用开发者 ⏱ ~20 min intermediate

何时使用: 你需要新建一个 Deployment,并希望它与集群现有规范一致。

步骤
  1. 检查现有配置
    k8s:获取 apps namespace 中一个现有的 Deployment 示例,我想参考它的 label、security context 和资源配置。✓ 已复制
    → 返回一个代表性的 Deployment YAML
  2. 编写新 Deployment
    现在为 image-resizer:1.2.0 编写一个新 Deployment,2 个副本,端口 8080,遵循现有规范。✓ 已复制
    → YAML 符合集群规范
  3. dry-run 应用
    使用 --dry-run=server 应用,报告所有校验错误。✓ 已复制
    → 服务端校验通过;无 ApplyConfiguration 漂移

结果: 第一次就生成符合集群规范的 manifest。

注意事项
  • 忘记 PSA label — 先读取 namespace 的 pod-security label
搭配使用: 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

提 PR 修复 manifest

k8s:找到错误的内存限制。GitHub:提 PR,在 helm/values.yaml 中提高限制。✓ 已复制
kubernetes-mcp-containers + mcp-grafana

将 k8s 状态与 Prometheus 指标交叉对比

k8s:pod 在重启。Grafana:拉取该 pod 的内存使用历史。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
list_resources context?, namespace?, kind: str, label_selector? 探索阶段 1 次 API 调用
get_resource context?, namespace?, kind, name 检查特定资源 1 次调用
apply_yaml context?, yaml: str, dry_run?: bool 创建或更新资源 1 次调用
delete_resource context?, namespace?, kind, name 删除资源 1 次调用
get_logs context?, namespace, pod, container?, previous?, tail? 检查运行时状态 1 次调用
exec context?, namespace, pod, container?, command: str[] 在容器内部诊断 1 次调用
list_events context?, namespace, since? 查找 OOMKilled/ImagePullBackOff 1 次调用
list_helm_releases context?, namespace? Helm 审计 1 次调用

成本与限制

运行它的成本

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 拒绝该 verb;用 kubectl auth can-i 检查该用户的权限

验证: kubectl auth can-i get pods -n checkout
连接被拒绝

VPN 未连接,或 context 指向了错误的端点;检查 kubectl cluster-info

Apply 被拒绝:校验错误

先用 dry_run=server 执行;查看具体报错

日志太大

使用 tail 参数;默认返回全量日志

替代方案

Kubernetes MCP Server 对比其他方案

替代方案何时用它替代权衡
kubectl-mcp(其他分支)你偏好其他二进制实现维护活跃度较低
Lens / k9s你想要交互式 UI,不需要 LLM没有自动化层
Argo CD MCP你是纯 GitOps 模式间接方式;通过 Git 部署,不直接调用 API

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills