/ 目录 / 演练场 / kubectl-mcp-server
● 社区 rohitg00 ⚡ 即开即用

kubectl-mcp-server

作者 rohitg00 · rohitg00/kubectl-mcp-server

通过自然语言操作 Kubernetes — 容器组、部署、Helm、GitOps、成本优化。253 个工具,CNCF Landscape 已收录。

kubectl-mcp-server (rohitg00) 在 kubectl、Helm、Flux/ArgoCD、Cert-Manager、Velero、KEDA 和 Istio 基础上提供了广泛的 253 个工具。支持标准的 KUBECONFIG,通过 context 参数支持多集群。可选的 OAuth 2.1 支持多租户部署。

为什么要用

核心特性

实时演示

实际使用效果

kubectl.replay ▶ 就绪
0/0

安装

选择你的客户端

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

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubectl": {
      "command": "uvx",
      "args": [
        "kubectl-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubectl": {
      "command": "uvx",
      "args": [
        "kubectl-mcp-server"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubectl": {
      "command": "uvx",
      "args": [
        "kubectl-mcp-server"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

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

Continue 使用服务器对象数组,而非映射。

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

加入 context_servers。Zed 保存后热重载。

claude mcp add kubectl -- uvx kubectl-mcp-server

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: kubectl-mcp-server

60 秒内诊断 CrashLoopBackOff 的容器组

👤 值班 SRE ⏱ ~10 min intermediate

何时使用: 告警触发时;想在手动 kubectl 挖掘前快速查看日志、事件和资源使用情况。

前置条件
  • kubectl 已配置集群访问 — kubectl config get-contexts 应该列出你的集群
步骤
  1. 识别崩溃的容器组
    列出命名空间 X 中重启次数 > 5 的容器组。显示容器组名、容器和最后退出原因。✓ 已复制
    → 缩小的列表
  2. 拉取日志 + 事件
    对于容器组 Y,获取最后 100 行日志和相关事件。突出显示任何错误关键词。✓ 已复制
    → 可能的根本原因
  3. 检查资源压力
    显示容器组的 CPU/内存限制与实际值。被 OOM 杀死了吗?✓ 已复制
    → 资源判断

结果: 一分钟内得出聚焦的假设,而不是十条 kubectl 命令。

注意事项
  • 错误的集群 context — 始终在 prompt 中指定 --context;默认值可能在 prod/staging 间踩坑
搭配使用: prometheus

查找过度配置的工作负载以削减集群账单

👤 FinOps、平台工程师 ⏱ ~40 min advanced

何时使用: 季度成本审查 — 需要以数据驱动的缩容候选项。

步骤
  1. 运行成本分析
    使用成本优化工具找到过去 30 天内请求/限制是实际值 3 倍的部署。✓ 已复制
    → 过度配置工作负载的排名列表
  2. 估算节省
    对于前 10 个,估算如果按正确大小调整每月节省的 $。按团队分组。✓ 已复制
    → 每个团队的节省表
  3. 提交包含建议清单的 PR
    为前 5 个生成更新的清单,并在相应的仓库中提交 PR。✓ 已复制
    → 打开的 PR 附带建议的 diff

结果: 由指标支持的可见成本胜利,通过 PR 跟进。

搭配使用: github · prometheus

使用 Claude 安全地升级 Helm release

👤 平台工程师 ⏱ ~20 min advanced

何时使用: 常规 Helm 升级不应该需要 20 分钟的仪式。

步骤
  1. 对比新旧版本
    对于 release X,显示 values.yaml 与新图表版本之间的 diff。✓ 已复制
    → 值/模板 diff
  2. Dry-run
    使用新图表运行 helm upgrade --dry-run。报告任何渲染的模板问题。✓ 已复制
    → 干净的 dry-run 或可操作的错误
  3. 升级并准备好回滚
    应用升级。之后立即验证 rollout 状态并保持前一个版本准备好回滚。✓ 已复制
    → 成功部署并附带回滚说明

结果: 更低风险的 Helm 操作,从一开始就明确回滚路径。

审计 RBAC 中权限过高的角色

👤 安全工程师 ⏱ ~30 min advanced

何时使用: 认证前或发现可疑角色后。

步骤
  1. 列出通配符角色
    找到资源或动词中带有 '*' 的 ClusterRole 或 Role。按命名空间分组。✓ 已复制
    → 通配符 RBAC 列表
  2. 映射到主体
    对于每一个,谁被绑定到它?列出 ServiceAccount/用户/组。✓ 已复制
    → 主体-角色矩阵
  3. 建议最小化替换
    对于风险最高的前 5 个,根据实际使用情况(审计日志)建议最少需要的动词。✓ 已复制
    → 具体的紧化建议

结果: 紧化的 RBAC 与可防御的 diff。

组合

与其他 MCP 搭配,撬动十倍杠杆

kubectl + prometheus

交叉引用容器组状态与 Prometheus 指标

对于容器组 X,显示 kubectl describe 输出以及其来自 Prometheus 的最后 24 小时 CPU/内存。✓ 已复制
kubectl + github

RBAC 审计 → 紧化 YAML 清单的 PR

对于 RBAC 审计中的每个发现,针对基础设施仓库打开一个 PR,附带最小化的 Role YAML。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
kubectl_get resource, namespace?, label_selector? 列出任何东西 1 API call
kubectl_describe resource, name, namespace? 单个对象的深层细节 1 API call
pod_logs pod, container?, tail?, namespace? 调试 1 API call
pod_events pod, namespace? 为什么会发生这种情况? 1 API call
helm_list namespace? Helm release 概览 helm cmd
helm_upgrade release, chart, values?, dry_run? 部署 helm cmd
cost_optimize namespace?, period? FinOps 扫描 metrics API
rbac_audit 安全审查 several API calls

成本与限制

运行它的成本

API 配额
受集群 API 服务器容量限制
每次调用 Token 数
kubectl 输出可能很大 — describe/get-wide 尤其如此
费用
免费的 MCP;集群成本由你承担
提示
优先使用 label_selector 和 field selector 而不是列出所有内容;避免在 prompt 中使用 --output=wide

安全

权限、密钥、影响范围

最小权限: 集群只读,除非需要写入
凭据存储: 标准 KUBECONFIG;MCP 不单独存储凭据
数据出站: 仅限你的 K8s API 服务器
切勿授予: 除非绝对必要,否则不向 MCP context 授予 cluster-admin

故障排查

常见错误与修复

未授权 / 禁止

KUBECONFIG context 缺少权限。使用 kubectl auth can-i 检查特定的动词/资源

验证: kubectl auth can-i get pods --namespace X
集群间的 context 混淆

始终显式设置或传递 --context;prod 上的错误 context 是糟糕的一天

验证: kubectl config current-context
Helm 升级中途失败

使用 helm rollback <release> <prev-rev>;升级前始终捕获前一个版本

替代方案

kubectl-mcp-server 对比其他方案

替代方案何时用它替代权衡
k8s-mcp-server(官方风格、较小)只需基本的 kubectl,担心 253 个工具的表面噪音生态系统工具较少(无 Helm/Flux)
在 shell 中直接使用 kubectl已经深入终端会话中无代理循环

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

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