a. 内容描述
-
核心功能定位:该项目是一个基于Model Context Protocol (MCP) 的服务器实现,旨在为AI助手(如知名AI编程工具、集成开发环境等)提供与Kubernetes集群和OpenShift平台进行交互的能力。它通过定义一组工具,让AI能够执行对Kubernetes资源的各种操作,从而在对话或代码上下文中实现智能化的基础设施管理。
-
关键应用场景:
- 自动化诊断与修复:AI可以自动诊断集群中的问题(如部署失败),并调用相应工具进行修复,整个过程无需人工干预。
- “氛围编码”与部署:开发者通过自然语言描述或简单代码,即可让AI将应用容器化并直接部署到Kubernetes或OpenShift集群上。
- 增强开发工具能力:在主流的代码编辑器中,通过简单配置即可获得强大的Kubernetes管理能力,例如列出、查看、管理集群资源。
- 简化集群交互:开发者或运维人员可以通过与AI对话的方式执行复杂的kubectl命令,例如查询Pod状态、查看日志、扩缩容资源等。
b. 功能特性
- 核心资源管理:支持对任何Kubernetes或OpenShift资源执行增删改查操作,包括Pod、Namespace、Event、Project等。
- Pods专项操作:针对Pod提供了丰富的功能,包括列出、获取详情、删除、查看日志、获取资源使用指标(Top)、在容器中执行命令以及运行临时容器。
- Helm集成:支持安装、列出和卸载Helm charts,提供了对应用包的管理能力。
- 多集群支持:能够同时与多个Kubernetes集群进行交互(基于kubeconfig文件中的定义),并在工具层面提供了上下文选择的能力。
- 安全与权限控制:提供了只读模式(
--read-only)和禁用破坏性操作模式(--disable-destructive),以控制AI可以执行的操作范围,提高安全性。 - 灵活的配置管理:支持通过主配置文件(TOML格式)和增量配置目录(
conf.d/)进行配置,并支持通过SIGHUP信号动态加载配置,无需重启服务。 - 可插拔的工具集:允许用户通过
--toolsets参数启用或禁用特定的功能组(如核心工具集、配置工具集、Helm工具集、Kiali工具集等),以精简AI的上下文并提高工具选择的准确性。 - 高性能原生实现:不同于常见的通过包装kubectl命令行工具实现的方案,该项目采用Go语言原生实现,直接与Kubernetes API服务器交互,具有轻量、低延迟、无外部依赖的特点。
d. 使用说明
用户可以通过多种方式启动和使用该服务器,以集成到不同的AI客户端或开发环境中:
-
在知名AI编程工具(如App Store上排名靠前的AI编程工具)中使用:
- 配置
claude_desktop_config.json文件,添加MCP服务器配置。 - 使用
npx命令启动:"command": "npx", "args": ["-y", "kubernetes-mcp-server@latest"]
- 配置
-
在主流集成开发环境(IDE)中使用:
- 可以通过IDE提供的MCP服务器扩展链接一键安装。
- 或通过命令行手动添加MCP服务器。
-
在命令行AI代理(如某知名AI代理CLI)中使用:
- 编辑
config.yaml文件,在extensions部分添加kubernetes扩展,并指向npx kubernetes-mcp-server@latest。
- 编辑
-
通用运行方式:
- 用户也可以直接下载对应操作系统(Linux, macOS, Windows)的预编译二进制文件运行。
- 支持通过命令行参数(如
--port,--kubeconfig,--read-only)或TOML配置文件进行详细配置,以定制服务器行为和启用的功能集。
e. 潜在新需求
-
需求1:希望支持用户身份模拟(impersonation)功能,以便在MCP服务器具有高级别权限时,能够根据最终用户的身份来执行Kubernetes API调用,从而遵循其权限范围。
-
需求2:希望在读取Pod日志时,能够直接在服务器端进行关键词过滤,避免返回大量无用日志导致AI上下文窗口被迅速填满和消耗过多token。
-
需求3:希望MCP服务器能够支持连接到与自身运行集群不同的外部Kubernetes集群,并能通过环境变量或参数明确指定要使用的kubeconfig文件,而不是总是优先使用集群内配置。
-
需求4:希望增强Helm工具集的功能,增加
helm_upgrade,helm_get_values,helm_status, 和helm_history等工具,以支持更完整的Helm release生命周期管理。 -
需求5:希望增加一个
scale_resource工具,能够对实现了scale子资源的资源(如Deployment, StatefulSet)进行扩缩容操作,因为现有模型在自动执行此类任务时经常失败。 -
需求6:希望增加对多种Kubernetes资源(如Pods)进行标签选择器(labelSelector)过滤的能力,以便更精确地查询和操作资源子集。
-
需求7:希望工具调用能够支持更长的超时时间,因为在处理大规模集群(如列出所有namespace下的Helm releases)时,操作可能需要较长时间,而当前默认的超时设置容易导致请求失败。
-
需求8:希望为
resources_create_or_update工具增加force,dryRun, 和fieldManager选项,以提供更精细的资源管理能力,例如强制覆盖、验证变更而不实际应用、以及指定变更的管理者。 -
需求9:希望当
--disable-destructive标志启用时,能够真正禁止所有破坏性操作。有用户反馈,即使设置了该标志,AI助手仍然能够成功执行删除命名空间的操作。FINISHED article id:4ab9272585523ddd0a9faede4f1356f4