Kubernetes MCP Server - Go原生的K8s集群AI管理

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
2
3
4
5
6
7
8
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}

只读模式(生产环境推荐)

1
2
3
4
5
6
7
8
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest", "--read-only"]
}
}
}

选择特定工具集

1
2
3
4
5
6
7
8
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest", "--toolsets", "core,helm"]
}
}
}

Cursor 配置

1
2
3
4
5
6
7
8
{
"mcpServers": {
"kubernetes-mcp-server": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}

VS Code

可以通过一行命令快速添加:

1
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'

指定kubeconfig路径

1
2
3
4
5
6
7
8
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest", "--kubeconfig", "/path/to/kubeconfig"]
}
}
}

多种安装方式

方式 命令 适用场景
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
用户: 检查production集群的整体健康状况

AI: [调用 nodes_top, pods_list, events_list]
Production集群健康报告:

节点状态 (3/3 Ready):
- node-1: CPU 45%, 内存 62%
- node-2: CPU 38%, 内存 58%
- node-3: CPU 52%, 内存 71%

Pod概况:
- Running: 45
- CrashLoopBackOff: 2 (payment-service, notification-worker)
- Pending: 1 (ml-inference)

最近异常事件:
- payment-service OOM Killed (3次/1小时)
- ml-inference 资源不足等待调度

建议:
1. payment-service需要增加内存限制
2. ml-inference需要GPU节点或降低资源请求

场景2:故障排查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
用户: payment-service一直在重启,帮我排查原因

AI: [调用 pods_get, pods_log, events_list]

排查结果:
- Pod状态: CrashLoopBackOff (重启12次)
- 最近日志:
"java.lang.OutOfMemoryError: Java heap space"
"Container killed due to OOM"
- 当前内存限制: 256Mi
- 实际使用峰值: 312Mi

根因: Java应用堆内存超出容器限制

修复建议:
1. 增加内存限制到512Mi
2. 或调整JVM参数 -Xmx200m

场景3:应用部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
用户: 使用Helm部署一个Redis实例到staging命名空间

AI: [调用 helm_install]

已部署 Redis:
- Release名称: redis-staging
- 命名空间: staging
- Chart: bitnami/redis
- 版本: 18.0.0
- 状态: deployed

连接信息:
- 主机: redis-staging-master.staging.svc.cluster.local
- 端口: 6379

场景4:资源扩缩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
用户: 将api-gateway的副本数从3扩到5

AI: [调用 resources_scale]

已完成扩容:
- Deployment: api-gateway
- 副本数: 3 -> 5
- 新Pod正在启动中...
[调用 pods_list_in_namespace]
- api-gateway-xxx-abc: Running
- api-gateway-xxx-def: Running
- api-gateway-xxx-ghi: Running
- api-gateway-xxx-jkl: ContainerCreating
- api-gateway-xxx-mno: ContainerCreating

安全最佳实践

  1. 生产环境使用只读模式: --read-only 标志确保AI无法修改任何资源
  2. 工具集最小化: 使用 --toolsets 只启用必需的工具集
  3. RBAC配合: kubeconfig中使用权限受限的Service Account
  4. 日志审计: 配合K8s审计日志记录所有API调用
  5. 多集群隔离: 为不同环境(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

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero