项目介绍
Kubernetes MCP Server 面向需要让 AI Agent 观察或操作 Kubernetes、OpenShift 的团队。它是原生 Go 实现,直接调用 Kubernetes API,不依赖本机安装 kubectl 或 Helm CLI;同一项目同时提供本地 stdio、容器化 Streamable HTTP、npm、PyPI 和原生二进制分发。核心价值是把通用资源、Pod、事件、Helm 与一组可选生态工具整理成 MCP 工具,但这类接入天然处在高权限边界上。仓库默认并非只读,因此更稳妥的起点是独立 ServiceAccount、最小 RBAC、专用 kubeconfig 与 --read-only,然后再按明确场景逐项放开写入工具。
核心功能
通用资源操作
通过 Kubernetes 动态 API 发现和处理常见及自定义资源;查询与写入范围由工具设置和 RBAC 共同限制。
Pod 诊断与操作
提供 Pod 列举、详情、日志、指标、exec、删除与临时运行等工具,适合排障但也包含高风险执行能力。
Helm 生命周期管理
内置 Helm 安装、列举和卸载能力,无需依赖外部 Helm CLI;应为写入操作单独设置权限和确认策略。
多集群与配置重载
可使用多个 kubeconfig 上下文,并在集群配置变化时重新加载,方便在受控边界内切换目标。
可选生态工具集
按需启用 Tekton、Kiali、KubeVirt、NetObserv 与 kcp 等工具集,减少无关工具进入模型上下文。
自托管与可观测性
支持 Streamable HTTP、OAuth/OIDC、指标和 OpenTelemetry 配置,适合团队部署,但网络与身份边界需自行加固。
安装与连接
推荐先为 MCP 创建专用只读身份与 kubeconfig,再用 npx 以 --read-only 注册到 Claude Code;连接成功后只执行无副作用的命名空间查询。
让 AI Agent 帮你安装
把这段话发送给 Codex、Claude Code 或其他可以操作本地环境的 AI Agent。
请从 https://github.com/containers/kubernetes-mcp-server 安装并配置 Kubernetes MCP Server。先阅读 README、docs/getting-started-claude-code.md、docs/getting-started-kubernetes.md 与 docs/configuration.md。不要使用我的日常管理员 kubeconfig;先确认目标集群与命名空间,再创建专用 ServiceAccount、最小只读 RBAC 和独立 kubeconfig。通过 npx 和 --read-only 接入 Claude Code,任何凭据、额外权限、文件覆盖、网络暴露或写操作都必须先征得我的明确同意。最后运行 claude mcp list,并只执行一次列出命名空间的无副作用验证,报告配置位置、身份、权限范围与结果,但不要输出 token。- 一个正在运行且网络可达的 Kubernetes 或 OpenShift 集群
- 用于创建 ServiceAccount 与 RBAC 的 kubectl 及相应管理员权限
- Node.js 与 npx;也可按仓库说明改用 uvx、原生二进制或容器
- 支持 MCP 的客户端,例如 Claude Code
- 为 MCP 单独保存的 kubeconfig 绝对路径
claude mcp add-json kubernetes-mcp-server '{"command":"npx","args":["-y","kubernetes-mcp-server@latest","--read-only"],"env":{"KUBECONFIG":"/absolute/path/to/mcp-viewer.kubeconfig"}}' -s user- 1创建最小权限身份
按 Kubernetes 指南创建专用命名空间与 ServiceAccount,例如 kubectl create namespace mcp、kubectl create serviceaccount mcp-viewer -n mcp,并优先用命名空间级 view RoleBinding;只有确有跨命名空间只读需求时才使用 ClusterRoleBinding。
- 2生成专用 kubeconfig
按 docs/getting-started-kubernetes.md 取得短期 ServiceAccount token,把目标 API Server、CA、token 与专用上下文写入单独 kubeconfig。不要复用日常管理员配置,也不要把 token 写入资源说明或日志。
- 3以只读模式注册服务
运行 claude mcp add-json kubernetes-mcp-server '{"command":"npx","args":["-y","kubernetes-mcp-server@latest","--read-only"],"env":{"KUBECONFIG":"/absolute/path/to/mcp-viewer.kubeconfig"}}' -s user,并把路径替换为真实绝对路径。
- 4执行无副作用验证
运行 claude mcp list 检查 Connected,再让客户端列出命名空间。核对目标集群、身份与返回范围,确认没有创建、更新、删除或 exec 行为。
- 5按场景继续收敛
若后续必须开放写入,先用 toolsets、enabled_tools、disabled_tools、denied_resources 和 confirmation_fallback=deny 建立明确边界,再为单一操作补充最小 RBAC。
运行 claude mcp list,确认 kubernetes-mcp-server 显示 Connected;随后让客户端仅列出命名空间,并核对返回对象属于预期集群且没有产生资源变更。
- read_only 默认值为 false,初次接入应显式传入 --read-only。
- 如需部分写入,优先使用 disable_destructive、enabled_tools、disabled_tools 与 denied_resources 缩小范围。
- 客户端不支持 elicitation 时 confirmation_fallback 默认 allow;写入部署应显式改为 deny。
- 短期 ServiceAccount token 会过期,续期后要同步更新专用 kubeconfig。
- HTTP 模式默认不强制 OAuth;跨主机暴露前应配置 TLS、OAuth/OIDC 和网络访问控制。
使用场景
集群状态问答
让 Agent 汇总命名空间、工作负载、资源状态和事件,作为只读巡检或值班上下文。
Pod 故障排查
在受控身份下组合 Pod 详情、日志、指标与事件,缩短定位 CrashLoop、调度或资源瓶颈的路径。
多集群运维辅助
通过多个受限 kubeconfig 上下文查询不同集群,并要求 Agent 在每次操作前明确目标。
受审查的 Helm 操作
在独立环境中为安装或卸载建立专门 RBAC、工具白名单与拒绝式确认回退,再由 Agent 生成并执行明确计划。
使用评价
从公开实现和文档看,这个项目的优势是分发方式齐全、Kubernetes 能力覆盖广,并把权限收敛、资源过滤、OAuth/OIDC 与可观测性放进同一套配置体系。需要特别警惕的是默认模式可写,且客户端缺少 elicitation 时确认回退默认允许。它适合作为经过 RBAC 设计的运维接口,不适合拿管理员 kubeconfig 直接接入生产 Agent。
值得一试的地方
- 原生 Go 直接访问 Kubernetes API,减少对 kubectl 与 Helm CLI 的运行时依赖
- npm、PyPI、原生二进制、容器和 Helm Chart 覆盖常见交付路径
- 从只读、破坏性工具开关到资源拒绝清单,权限收敛手段较完整
- 文档包含 Claude Code、桌面客户端、集群部署、OAuth/OIDC、日志与 OpenTelemetry 指南
- 仓库包含单元、端到端和 MCP conformance 测试目录
使用前要知道
- 默认 read_only=false 与 confirmation_fallback=allow 不适合无审查直连生产集群
- 专用 kubeconfig 与 RBAC 的创建仍需用户具备 Kubernetes 管理经验
- 可选工具集依赖集群安装相应 CRD 或外部服务
- 安全修复只面向最新发布版本
README
Kubernetes MCP Server
Overview
用原生 Go 服务把 Kubernetes 与 OpenShift 的资源查询、Pod 诊断、事件、Helm 和可选扩展工具交给支持 MCP 的 AI 客户端,并提供只读、资源拒绝清单与 RBAC 等权限收敛手段。 Model Context Protocol (MCP) server for Kubernetes and OpenShift.
Getting started
- 推荐先为 MCP 创建专用只读身份与 kubeconfig,再用 npx 以 --read-only 注册到 Claude Code;连接成功后只执行无副作用的命名空间查询。
- 服务直接使用 Kubernetes API,支持任意通用资源的 CRUD,并为 Pod、命名空间、事件、OpenShift Project 与 Helm 提供专用工具。
- Pod 能力包括列举、读取、删除、日志、top、exec 与临时运行;实际可用范围由集群 API 和调用身份的 RBAC 决定。
- 运行 claude mcp list,确认 kubernetes-mcp-server 显示 Connected;随后让客户端仅列出命名空间,并核对返回对象属于预期集群且没有产生资源变更。
Configuration
claude mcp add-json kubernetes-mcp-server '{"command":"npx","args":["-y","kubernetes-mcp-server@latest","--read-only"],"env":{"KUBECONFIG":"/absolute/path/to/mcp-viewer.kubeconfig"}}' -s user在 GitHub 阅读完整 README →