Kubernetes MCP Server:用自然语言管理你的K8s集群
Kubernetes的强大毋庸置疑,但它的复杂性同样令人生畏。kubectl命令的参数之多、YAML配置之繁琐、故障排查时需要翻阅的日志之长,都是开发者和运维人员的日常痛点。Red Hat容器团队维护的这个Kubernetes MCP Server提供了一个全新的解决思路:通过自然语言与K8s集群对话,让AI助手帮你完成查询、部署、排查等运维工作。
为什么选择这个实现
GitHub上有多个Kubernetes MCP Server项目,但containers/kubernetes-mcp-server有一个根本性的不同:
它不是kubectl的封装器。
大多数Kubernetes MCP Server实现的原理是:接收AI的指令 -> 拼接kubectl命令 -> 执行命令 -> 解析文本输出 -> 返回结果。这种方式有明显的局限性:
- 需要安装kubectl和相关CLI工具
- 受限于命令行输出格式
- 性能受制于进程启动和命令执行开销
- 复杂操作需要多次命令组合
而containers/kubernetes-mcp-server使用Go语言直接调用Kubernetes API Server:
- 单一二进制文件,无需额外依赖
- 直接与API交互,低延迟高性能
- 结构化数据返回,无需解析文本
- 天然支持多集群操作
6大工具集,25+个MCP工具
Config 工具集(集群配置)
| 工具名称 | 功能描述 |
|---|---|
configuration_contexts_list |
显示所有kubeconfig上下文和服务器URL |
targets_list |
显示所有可用的目标集群 |
configuration_view |
获取当前K8s配置(YAML格式) |
Core 工具集(核心操作)
| 工具名称 | 功能描述 |
|---|---|
events_list |
列出跨命名空间的K8s事件 |
namespaces_list |
显示所有命名空间 |
projects_list |
显示OpenShift项目 |
nodes_log |
访问节点kubelet和系统日志 |
nodes_stats_summary |
获取节点详细资源指标 |
nodes_top |
显示节点CPU和内存使用 |
pods_list |
列出Pod(支持过滤) |
pods_list_in_namespace |
列出指定命名空间的Pod |
pods_get |
获取单个Pod详情 |
pods_delete |
删除Pod |
pods_top |
显示Pod资源消耗 |
pods_exec |
在Pod中执行命令 |
pods_log |
查看Pod日志 |
pods_run |
启动Pod中的容器 |
resources_list |
列出任意资源类型 |
resources_get |
获取特定资源详情 |
resources_create_or_update |
通过YAML/JSON创建或更新资源 |
resources_delete |
删除资源 |
resources_scale |
获取或更新副本数 |
Helm 工具集
| 工具名称 | 功能描述 |
|---|---|
helm_install |
部署Helm Charts |
helm_list |
显示已安装的Releases |
helm_uninstall |
卸载Helm Releases |
扩展工具集
- KCP: 工作空间管理工具
- Kiali: 服务网格可观测性和Istio配置管理
- KubeVirt: 虚拟机生命周期操作
配置示例
Claude Desktop
1 | { |
只读模式(生产环境推荐)
1 | { |
选择特定工具集
1 | { |
Cursor 配置
1 | { |
VS Code
可以通过一行命令快速添加:
1 | code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}' |
指定kubeconfig路径
1 | { |
多种安装方式
| 方式 | 命令 | 适用场景 |
|---|---|---|
| npx | npx -y kubernetes-mcp-server@latest |
快速体验 |
| npm | npm install -g kubernetes-mcp-server |
Node.js环境 |
| pip | pip install kubernetes-mcp-server |
Python环境 |
| Docker | docker run kubernetes-mcp-server |
容器环境 |
| 二进制 | 从Release下载 | 无依赖部署 |
实际应用场景
场景1:集群健康检查
1 | 用户: 检查production集群的整体健康状况 |
场景2:故障排查
1 | 用户: payment-service一直在重启,帮我排查原因 |
场景3:应用部署
1 | 用户: 使用Helm部署一个Redis实例到staging命名空间 |
场景4:资源扩缩容
1 | 用户: 将api-gateway的副本数从3扩到5 |
安全最佳实践
- 生产环境使用只读模式:
--read-only标志确保AI无法修改任何资源 - 工具集最小化: 使用
--toolsets只启用必需的工具集 - RBAC配合: kubeconfig中使用权限受限的Service Account
- 日志审计: 配合K8s审计日志记录所有API调用
- 多集群隔离: 为不同环境(dev/staging/prod)配置独立的MCP实例
与其他K8s MCP实现的对比
| 特性 | containers/ | Flux159/ | Azure/ | kubectl-mcp-server |
|---|---|---|---|---|
| 语言 | Go (原生) | TypeScript | Python | Python/Node |
| 需要kubectl | 否 | 是 | 是 | 是 |
| 多集群 | 原生支持 | kubeconfig | contexts | kubeconfig |
| 只读模式 | 内置 | 是 | 否 | 否 |
| Helm支持 | 内置 | 内置 | 是 | 是 |
| OpenShift | 完整支持 | 否 | 否 | 否 |
| KubeVirt | 支持 | 否 | 否 | 否 |
| 分发方式 | 多种 | npm | pip | npm/pip |
总结
containers/kubernetes-mcp-server以Go原生实现的架构优势,在众多Kubernetes MCP Server中脱颖而出。直接与API Server交互的设计带来了更低的延迟和更少的依赖,6大工具集覆盖了从基础资源管理到Helm部署、服务网格监控的完整场景。只读模式和工具集选择机制提供了灵活的安全控制。对于已经在使用Kubernetes(尤其是OpenShift)的团队,这是目前功能最全面、性能最优的MCP集成方案。
评分: 4.30/5.0 | Stars: 1,500+ | Forks: 120 | 语言: Go | 许可: Apache-2.0