kubernetes-mcp-server
kubernetes-mcp-server 是一款专为 Kubernetes 和 OpenShift 打造的 Model Context Protocol (MCP) 服务器,旨在让 AI 助手能够直接、安全地理解和管理容器集群。它解决了传统方案依赖外部命令行工具(如 kubectl)导致的延迟高、配置复杂及环境依赖多等痛点,通过原生 Go 语言编写,直接与 Kubernetes API 服务器交互,无需在系统中安装 Node.js、Python 或其他额外依赖。
这款工具特别适合 DevOps 工程师、后端开发者以及希望利用 AI 辅助运维的研究人员使用。无论是日常查看 Pod 日志、管理命名空间、监控资源使用情况,还是执行复杂的 Helm 图表部署与 Tekton 流水线任务,kubernetes-mcp-server 都能提供低延迟的响应。其独特亮点在于轻量级的单二进制文件分发模式,支持跨平台运行,并具备自动感知配置文件变化、多集群管理及可观测性集成能力。通过将集群操作标准化为 MCP 协议,它让 AI 能更精准地协助用户完成从资源增删改查到故障排查的各类工作,显著提升云原生环境下的开发与运维效率。
使用场景
某后端工程师在排查生产环境微服务异常时,需要快速定位故障 Pod 并查看实时日志与资源占用。
没有 kubernetes-mcp-server 时
- 操作割裂低效:必须在终端手动切换上下文、输入冗长的
kubectl命令,无法在 AI 助手对话流中直接获取集群状态。 - 排障流程繁琐:查看日志需先查 Pod 名称再执行
logs命令,若需进入容器调试还得额外执行exec,步骤多且易出错。 - 依赖环境复杂:本地必须预装配置好
kubectl、helm等命令行工具及对应运行时环境,否则无法执行任何操作。 - 响应延迟明显:每次操作都涉及外部进程调用,面对高并发或大规模集群时,命令执行等待时间过长。
使用 kubernetes-mcp-server 后
- 对话即运维:直接在 AI 聊天窗口输入“列出命名空间 prod 中重启次数最多的 Pod",kubernetes-mcp-server 即刻返回精准列表。
- 一键深度诊断:只需指令“展示该 Pod 实时日志并分析错误堆栈”,工具自动串联获取日志与资源监控(Top)数据,秒级反馈。
- 零依赖部署:无需安装任何外部 CLI 工具,kubernetes-mcp-server 以单一二进制文件运行,直接对接 API Server,开箱即用。
- 原生高性能:基于 Go 语言原生实现,绕过外部命令调用开销,即使在多集群场景下也能保持极低延迟的响应速度。
kubernetes-mcp-server 将复杂的 Kubernetes 运维操作转化为自然的语言交互,让开发者专注于问题解决而非命令记忆。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
Kubernetes MCP 服务器
✨ 功能 | 🚀 入门指南 | 🎥 演示 | ⚙️ 配置 | 🛠️ 工具 | 💬 社区 | 🧑💻 开发
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ 功能
一款功能强大且灵活的 Kubernetes 模型上下文协议 (MCP) 服务器实现,支持 Kubernetes 和 OpenShift。
- ✅ 配置:
- 自动检测 Kubernetes 配置的变化并更新 MCP 服务器。
- 查看 并管理当前的 Kubernetes
.kube/config或集群内配置。
- ✅ 通用 Kubernetes 资源: 对 任何 Kubernetes 或 OpenShift 资源执行操作。
- 任何 CRUD 操作(创建或更新、获取、列出、删除)。
- ✅ Pod: 执行与 Pod 相关的操作。
- 列出 所有命名空间或特定命名空间中的 Pod。
- 获取 指定命名空间中指定名称的 Pod。
- 删除 指定命名空间中指定名称的 Pod。
- 显示日志 指定命名空间中指定名称的 Pod 的日志。
- Top 获取指定命名空间中所有 Pod 或特定 Pod 的资源使用指标。
- Exec 进入 Pod 并执行命令。
- 运行 在 Pod 中运行容器镜像,并可选择将其公开。
- ✅ 命名空间: 列出 Kubernetes 命名空间。
- ✅ 事件: 查看所有命名空间或特定命名空间中的 Kubernetes 事件。
- ✅ 项目: 列出 OpenShift 项目。
- ☸️ Helm:
- 安装 Helm Chart 到当前或指定的命名空间。
- 列出 所有命名空间或特定命名空间中的 Helm 发布。
- 卸载 当前或指定命名空间中的 Helm 发布。
- 🔧 Tekton: 与通用 Kubernetes 资源管理互补的 Tekton 特定操作。
- Pipeline: 通过创建 PipelineRun 启动 Tekton 流水线。
- PipelineRun: 使用相同的规格重新启动 PipelineRun。
- Task: 通过创建 TaskRun 启动 Tekton 任务。
- TaskRun: 使用相同的规格重新启动 TaskRun,并通过解析 Pod 获取 TaskRun 日志。
- 🔭 可观测性: 可选的 OpenTelemetry 分布式追踪和指标,支持自定义采样率。包含用于实时统计的
/stats端点。请参阅 OTEL.md。
与其他 Kubernetes MCP 服务器实现不同,本项目 并非 仅仅是 kubectl 或 helm 命令行工具的封装。它是一个 基于 Go 的原生实现,直接与 Kubernetes API 服务器交互。
系统中 无需 安装任何外部依赖或工具。如果您使用的是原生二进制文件,则无需在系统上安装 Node.js 或 Python。
- ✅ 轻量级: 该服务器以单个原生二进制文件的形式分发,适用于 Linux、macOS 和 Windows。
- ✅ 高性能 / 低延迟: 直接与 Kubernetes API 服务器交互,无需调用和等待外部命令带来的开销。
- ✅ 多集群: 可同时与多个 Kubernetes 集群交互(如您的 kubeconfig 文件中所定义)。
- ✅ 跨平台: 提供适用于 Linux、macOS 和 Windows 的原生二进制文件,以及 npm 包、Python 包和容器/Docker 镜像。
- ✅ 可配置: 支持 命令行参数、TOML 配置文件和环境变量。
- ✅ 经过充分测试: 该服务器拥有广泛的测试套件,以确保其在不同 Kubernetes 环境中的可靠性和正确性。
- 📚 文档: 全面的 用户文档,包括设置指南、配置参考和可观测性说明。
🚀 入门指南
要求
- 访问一个 Kubernetes 集群。
Claude Code
请参阅我们的 用户文档 中的 Claude Code 入门指南。
对于具有专用 ServiceAccount 和只读权限的安全生产环境,请同时查阅 Kubernetes 设置指南。
Claude Desktop
使用 npx
如果您已安装 npm,这是在 Claude Desktop 上快速开始使用 kubernetes-mcp-server 的最佳方式。
打开您的 claude_desktop_config.json 文件,并将 mcp 服务器添加到 mcpServers 列表中:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": [
"-y",
"kubernetes-mcp-server@latest"
]
}
}
}
VS Code / VS Code Insiders
通过点击以下链接,在 VS Code Insiders 中安装 Kubernetes MCP 服务器扩展:
或者,您也可以手动运行以下命令来安装扩展:
# 对于 VS Code
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
# 对于 VS Code Insiders
code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
Cursor
在 Cursor 中安装 Kubernetes MCP 服务器扩展,请点击以下链接:
或者,您也可以通过编辑 mcp.json 文件来手动安装该扩展:
{
"mcpServers": {
"kubernetes-mcp-server": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}
Goose CLI
Goose CLI 是开始使用人工智能(AI)代理最简单(也是最经济)的方式。
使用 npm
如果您已安装 npm,这是开始使用 kubernetes-mcp-server 的最快方法。
打开您的 goose config.yaml 文件,并将 MCP 服务器添加到 mcpServers 列表中:
extensions:
kubernetes:
command: npx
args:
- -y
- kubernetes-mcp-server@latest
🎥 演示
诊断并自动修复 OpenShift 部署
本演示展示了 Claude Desktop 如何利用 Kubernetes MCP 服务器,在无需用户协助的情况下,自动诊断并修复 OpenShift 中的部署。
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
“随性编码”开发一款简单游戏并将其部署到 OpenShift
在此演示中,我将带您逐步完成使用 VS Code“随性编码”开发一款简单游戏的过程,并介绍如何利用 Podman MCP 服务器 和 Kubernetes MCP 服务器将其部署到 OpenShift。
使用 Kubernetes MCP 服务器一键增强 VS Code 中的 GitHub Copilot!
在本演示中,我将向您展示如何仅通过点击一个链接,就在 VS Code 中设置好 Kubernetes MCP 服务器。
⚙️ 配置
Kubernetes MCP 服务器可以通过命令行参数进行配置。
您可以使用 npx、uvx 运行该 CLI 可执行文件,也可以下载最新的发布二进制文件:最新版本二进制文件。
# 如果已安装 npm 和 Node.js,可使用 npx 运行 Kubernetes MCP 服务器
npx kubernetes-mcp-server@latest --help
# 如果已安装 uv 和 Python,可使用 uvx 运行 Kubernetes MCP 服务器
uvx kubernetes-mcp-server@latest --help
# 使用最新发布的二进制文件运行 Kubernetes MCP 服务器
./kubernetes-mcp-server --help
配置选项
| 选项 | 描述 |
|---|---|
--port |
以可流式传输的 HTTP 模式(路径 /mcp)和服务器发送事件 (SSE) 模式(路径 /sse)启动 MCP 服务器,并监听指定的端口。 |
--log-level |
设置日志级别(取值范围为 [0-9],参考 Kubernetes 社区文档)。与 kubectl 日志级别 类似。 |
--config |
(可选)主 TOML 配置文件的路径。详细信息请参阅 配置参考文档。 |
--config-dir |
(可选)用于放置附加配置文件的目录路径。文件按字典序(字母顺序)加载。如果指定了 --config,则默认为相对于主配置文件的 conf.d 目录。详细信息请参阅 配置参考文档。 |
--kubeconfig |
Kubernetes 配置文件的路径。如果未提供,则会尝试自动解析配置(例如集群内配置、默认位置等)。 |
--list-output |
资源列表操作的输出格式(可选:yaml 或 table,默认为 "table") |
--read-only |
如果启用,MCP 服务器将以只读模式运行,即不允许对 Kubernetes 集群执行任何写操作(创建、更新、删除)。这在调试或检查集群而不进行更改时非常有用。 |
--disable-destructive |
如果启用,MCP 服务器将禁用所有对 Kubernetes 集群的破坏性操作(删除、更新等)。这在调试或检查集群而避免意外更改时很有用。当使用 --read-only 时,此选项无效。 |
--stateless |
如果启用,MCP 服务器将以无状态模式运行,禁用工具和提示变更通知。这在容器部署、负载均衡以及无服务器环境中非常有用,因为这些场景通常不需要维护客户端状态。 |
--toolsets |
以逗号分隔的工具集列表,用于启用特定功能。更多信息请参阅 🛠️ 工具与功能 部分。 |
--disable-multi-cluster |
如果启用,MCP 服务器将禁用多集群支持,仅使用 kubeconfig 文件中的当前上下文。如果您希望将 MCP 服务器限制为单个集群,此选项非常有用。 |
--cluster-provider |
要使用的集群提供商策略(可选:kubeconfig、集群内、kcp、已禁用)。如果未设置,服务器将根据环境自动检测。 |
注意:大多数 CLI 选项都有对应的 TOML 配置字段。例如,
--disable-multi-cluster标志等同于在 TOML 中设置cluster_provider_strategy = "disabled"。所有 TOML 选项请参阅 配置参考文档。
TOML 配置文件
对于复杂或持久化的配置,请使用 TOML 配置文件,而非命令行参数:
kubernetes-mcp-server --config /etc/kubernetes-mcp-server/config.toml
示例配置:
log_level = 2
read_only = true
toolsets = ["core", "config", "helm", "kubevirt"]
# 拒绝访问敏感资源
[[denied_resources]]
group = ""
version = "v1"
kind = "Secret"
[telemetry]
endpoint = "http://localhost:4317"
完整的 TOML 配置文档包括:
- 所有配置选项及其默认值
- 用于模块化设置的附加配置文件
- 通过 SIGHUP 动态重新加载配置的功能
- 用于限制对敏感资源类型访问的拒绝资源列表
- MCP 工具搜索的服务器指令
- 自定义 MCP 提示
- HTTP 模式的 OAuth/OIDC 身份验证(Keycloak、Microsoft Entra ID)
详情请参阅 配置参考文档。
📊 MCP 日志记录
服务器支持 MCP 日志记录功能,允许客户端通过结构化日志消息接收调试信息。 Kubernetes API 错误会自动分类并以适当的严重级别记录到客户端。 敏感数据(令牌、密钥、密码、云凭据)会在发送给客户端之前自动脱敏。
详情请参阅 MCP 日志指南。
🛠️ 工具与功能
Kubernetes MCP 服务器支持通过 --toolsets 命令行标志或 toolsets 配置选项来启用或禁用特定的工具和功能组(工具、资源、提示等)。这使您可以控制 AI 工具可用的 Kubernetes 功能。
仅启用所需的工具集有助于减少上下文大小,并提高 LLM 的工具选择准确性。
可用工具集
以下工具集可供使用(“默认”列中标有 ✓ 的工具集为默认启用):
| 工具集 | 描述 | 默认 |
|---|---|---|
| config | 查看和管理当前本地 Kubernetes 配置文件 (kubeconfig) | ✓ |
| core | 用于 Kubernetes 管理的最常用工具(Pod、通用资源、事件等) | ✓ |
| helm | 用于管理 Helm Chart 和发布版本的工具 | |
| kcp | 管理 kcp 工作空间及多租户功能 | |
| kiali | 用于管理 Kiali 的最常用工具,更多详情请参阅 Kiali 文档。 | |
| kubevirt | KubeVirt 虚拟机管理工具,更多详情请参阅 KubeVirt 文档。 | |
| tekton | 用于管理 Tekton 流水线、PipelineRun、Task 和 TaskRun 的工具。 |
工具
如果启用了多集群支持(默认情况下已启用),并且您有权访问多个集群,则所有适用的工具都将包含一个额外的 context 参数,用于指定该操作所使用的 Kubernetes 上下文(集群)。
config
configuration_contexts_list - 列出 kubeconfig 文件中所有可用的上下文名称及其关联的服务器 URL
targets_list - 列出所有可用的目标
configuration_view - 获取当前 Kubernetes 配置内容,以 kubeconfig YAML 格式呈现
minified(boolean) - 返回配置的精简版本。若设置为 true,则仅保留当前上下文以及该上下文相关的部分;若设置为 false,则返回配置中的所有上下文、集群、认证信息和用户。(可选,默认为 true)
core
events_list - 列出当前集群中所有命名空间的 Kubernetes 事件(警告、错误、状态变化),用于调试和故障排除
namespace(string) - 指定要检索事件的命名空间。若未提供,则列出所有命名空间的事件
namespaces_list - 列出当前集群中的所有 Kubernetes 命名空间
projects_list - 列出当前集群中的所有 OpenShift 项目
nodes_log - 从 Kubernetes 节点获取日志(kubelet、kube-proxy 或其他系统日志)。此操作通过 Kubernetes API 代理访问节点上的 kubelet 日志
name(string) (必需) - 要获取日志的节点名称query(string) (必需) - 指定要返回日志的服务或文件。(必填)例如:“kubelet”用于获取 kubelet 日志,“/<日志文件名>”用于获取节点上的特定日志文件(如“/var/log/kubelet.log”或“/var/log/kube-proxy.log”)tailLines(integer) - 从日志末尾提取的行数。(可选,默认为 0,表示返回全部日志)
nodes_stats_summary - 通过 kubelet 的 Summary API 获取 Kubernetes 节点的详细资源使用情况统计信息。提供包括 CPU、内存、文件系统和网络使用在内的全面指标,涵盖节点、Pod 和容器级别。在使用 cgroup v2 和内核 4.20+ 的系统上,还会包含 PSI(压力停滞信息)指标,显示 CPU、内存和 I/O 方面的资源压力。有关 PSI 指标的详细信息,请参阅 https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/
name(string) (必需) - 要获取统计数据的节点名称
nodes_top - 列出由 Kubernetes Metrics Server 记录的指定 Kubernetes 节点或集群中所有节点的资源消耗情况(CPU 和内存)
label_selector(string) - Kubernetes 标签选择器(如 ‘node-role.kubernetes.io/worker=’),用于按标签筛选节点。(可选,仅在未提供节点名称时适用)name(string) - 要获取资源消耗信息的节点名称。(可选,若未提供则列出所有节点)
pods_list - 列出当前集群中所有命名空间内的 Kubernetes Pod
fieldSelector(string) - 可选的 Kubernetes 字段选择器,用于按字段值过滤 Pod(如 ‘status.phase=Running’、‘spec.nodeName=node1’)。支持的字段包括:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。请注意,CrashLoopBackOff 是容器状态,而非 Pod 阶段,因此无法直接通过状态进行过滤。更多信息请参阅 https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/labelSelector(string) - 可选的 Kubernetes 标签选择器(如 ‘app=myapp,env=prod’ 或 ‘app in (myapp,yourapp)’),当需要按标签筛选 Pod 时使用此选项namespace(string) (必需) - 要列出 Pod 的命名空间
pods_get - 获取当前或指定命名空间中具有指定名称的 Kubernetes Pod
name(string)(必填) - Pod 的名称namespace(string)- 用于获取 Pod 的命名空间
pods_delete - 删除当前或指定命名空间中具有指定名称的 Kubernetes Pod
name(string)(必填) - 要删除的 Pod 名称namespace(string)- 用于删除 Pod 的命名空间
pods_top - 列出由 Kubernetes Metrics Server 记录的指定 Kubernetes Pod 在所有命名空间、指定命名空间或当前命名空间中的资源消耗情况(CPU 和内存)
all_namespaces(boolean)- 如果为真,则列出所有命名空间中所有 Pod 的资源消耗;如果为假,则列出指定命名空间或当前命名空间中 Pod 的资源消耗label_selector(string)- Kubernetes 标签选择器(例如'app=myapp,env=prod'或'app in (myapp,yourapp)'),当您希望按标签筛选 Pod 时使用此选项(可选,仅在未提供name时适用)name(string)- 要获取资源消耗的 Pod 名称(可选,未提供时为命名空间中的所有 Pod)namespace(string)- 用于获取 Pod 资源消耗的命名空间(可选,未提供且all_namespaces为假时为当前命名空间)
pods_exec - 在当前或指定命名空间中,对具有指定名称和命令的 Kubernetes Pod 执行命令(Shell 访问,在容器中运行命令)
command(array)(必填) - 在 Pod 容器中执行的命令。第一个元素是要运行的命令,其余为该命令的参数。示例:["ls", "-l", "/tmp"]container(string)- 将要执行命令的 Pod 容器名称(可选)name(string)(必填) - 将要执行命令的 Pod 名称namespace(string)- 将要执行命令的 Pod 所在的命名空间
pods_log - 获取当前或指定命名空间中具有指定名称的 Kubernetes Pod 的日志
container(string)- 要获取日志的 Pod 容器名称(可选)name(string)(必填) - 要获取日志的 Pod 名称namespace(string)- 用于获取 Pod 日志的命名空间previous(boolean)- 返回之前终止的容器日志(可选)tail(integer)- 从日志末尾获取的行数(可选,默认:100)
pods_run - 在当前或指定命名空间中,使用提供的容器镜像并可选地指定名称来运行 Kubernetes Pod
image(string)(必填) - 在 Pod 中运行的容器镜像name(string)- Pod 的名称(可选,未提供时随机生成)namespace(string)- 运行 Pod 的命名空间port(number)- 从 Pod 容器暴露的 TCP/IP 端口(可选,未提供时不暴露端口)
resources_list - 通过提供资源的 apiVersion 和 kind,并可选地提供命名空间和标签选择器,列出当前集群中的 Kubernetes 资源和对象 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string)(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)fieldSelector(string)- 可选的 Kubernetes 字段选择器,用于按字段值筛选资源(例如'status.phase=Running'、'metadata.name=myresource')。支持的字段因资源类型而异。对于 Pod:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。更多信息请参见:https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/kind(string)(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)labelSelector(string)- 可选的 Kubernetes 标签选择器(例如'app=myapp,env=prod'或'app in (myapp,yourapp)'),当您希望按标签筛选资源时使用此选项namespace(string)- 可选的命名空间,用于检索命名空间范围内的资源(对于集群范围的资源则忽略)。未提供时将列出所有命名空间中的资源
resources_get - 通过提供资源的 apiVersion、kind、可选的命名空间以及名称,获取当前集群中的 Kubernetes 资源 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string)(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)kind(string)(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)name(string)(必填) - 资源的名称namespace(string)- 可选的命名空间,用于检索命名空间范围的资源(对于集群范围的资源则忽略)。未提供时将从配置的命名空间获取资源
resources_create_or_update - 通过提供资源的 YAML 或 JSON 表示形式,在当前集群中创建或更新 Kubernetes 资源 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
resource(string)(必填) - 包含 Kubernetes 资源表示的 JSON 或 YAML 文件。应包含顶级字段,如 apiVersion、kind、metadata 和 spec
resources_delete - 通过提供资源的 apiVersion、kind、可选的命名空间以及名称,删除当前集群中的 Kubernetes 资源 (常见的 apiVersion 和 kind 包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string)(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)gracePeriodSeconds(integer)- 对象被删除前的可选宽限期(以秒为单位)。值必须是非负整数。值为零表示立即删除。如果未指定此值,则将使用指定类型的默认宽限期kind(string)(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)name(string)(必填) - 资源的名称namespace(string)- 可选的命名空间,用于删除命名空间范围的资源(对于集群范围的资源则忽略)。未提供时将从配置的命名空间删除资源
resources_scale - 通过提供 Kubernetes 资源的 apiVersion、kind 和名称,以及可选的命名空间,在当前集群中获取或更新该资源的规模。如果在工具调用中指定了 scale 值,则会将规模更新为该值。始终返回资源的当前规模。
apiVersion(string)(必填) - 资源的 API 版本(有效示例:apps/v1)kind(string)(必填) - 资源的类型(有效示例:StatefulSet、Deployment)name(string)(必填) - 资源的名称namespace(string)- 可选的命名空间,用于获取或更新命名空间范围内的资源规模(对于集群范围的资源则忽略)。如果不提供,则将在配置的命名空间中获取或更新资源规模。scale(integer)- 可选的规模值,用于将资源规模更新为此值。如果不提供,则返回资源的当前规模,而不进行更新。
helm
helm_install - 安装(部署)一个 Helm Chart,在当前或指定的命名空间中创建一个发布版本。
chart(string)(必填) - 要安装的 Chart 引用(例如:stable/grafana、oci://ghcr.io/nginxinc/charts/nginx-ingress)name(string)- Helm 发布的名称(可选,未提供时随机生成)namespace(string)- 安装 Helm Chart 的命名空间(可选,未提供时使用当前命名空间)values(object)- 传递给 Helm Chart 的值(可选)
helm_list - 列出当前或指定命名空间中的所有 Helm 发布版本(或列出所有命名空间中的发布版本,如果已指定)。
all_namespaces(boolean)- 如果为真,则列出所有命名空间中的 Helm 发布版本,忽略 namespace 参数(可选)namespace(string)- 要列出 Helm 发布版本的命名空间(可选,未提供时列出所有命名空间)
helm_uninstall - 卸载当前或指定命名空间中的 Helm 发布版本。
name(string)(必填) - 要卸载的 Helm 发布版本的名称namespace(string)- 卸载 Helm 发布版本的命名空间(可选,未提供时使用当前命名空间)
kcp
kcp_workspaces_list - 列出当前集群中所有可用的 kcp 工作空间。
kcp_workspace_describe - 获取特定 kcp 工作空间的详细信息。
workspace(string)(必填) - 要描述的工作空间的名称或路径。
kiali
kiali_mesh_graph - 返回特定命名空间的拓扑结构、网格健康状况及命名空间状态。包含网格健康概览,汇总显示正常、降级和故障的应用、工作负载和服务数量。适用于高层次的概览。
graphType(string)- 可选的图表类型:'versionedApp'、'app'、'service'、'workload'、'mesh'namespace(string)- 可选的单个命名空间,用于包含在图表中(替代 namespaces 参数)namespaces(string)- 可选的逗号分隔的命名空间列表,用于包含在图表中rateInterval(string)- 可选的采集速率间隔(例如:'10m'、'5m'、'1h')。
kiali_manage_istio_config_read - 列出或获取 Istio 配置对象(网关、虚拟服务等)。
action(string)(必填) - 要执行的操作:列出或获取group(string)- Istio 对象的 API 组(例如:'networking.istio.io'、'gateway.networking.k8s.io')kind(string)- Istio 对象的类型(例如:'DestinationRule'、'VirtualService'、'HTTPRoute'、'Gateway')name(string)- Istio 对象的名称namespace(string)- 包含 Istio 对象的命名空间version(string)- Istio 对象的 API 版本(例如:'v1'、'v1beta1')
kiali_manage_istio_config - 创建、修补或删除 Istio 配置对象(网关、虚拟服务等)。
action(string)(必填) - 要执行的操作:创建、修补或删除group(string)- Istio 对象的 API 组(例如:'networking.istio.io'、'gateway.networking.k8s.io')json_data(string)- 用于应用或创建对象的 JSON 数据kind(string)- Istio 对象的类型(例如:'DestinationRule'、'VirtualService'、'HTTPRoute'、'Gateway')name(string)- Istio 对象的名称namespace(string)- 包含 Istio 对象的命名空间version(string)- Istio 对象的 API 版本(例如:'v1'、'v1beta1')
kiali_get_resource_details - 获取网格内 Kubernetes 资源(服务、工作负载)的列表或详细信息。
namespaces(string)- 用于获取服务的逗号分隔的命名空间列表(例如:'bookinfo' 或 'bookinfo,default')。如果未提供,则会列出所有可访问命名空间中的服务。resource_name(string)- 要获取详细信息的资源名称(可选字符串:如果提供则获取详细信息;若为空则列出所有)。resource_type(string)- 要获取详细信息的资源类型(服务、工作负载)。
kiali_get_metrics - 获取网格内 Kubernetes 资源(服务、工作负载)的列表或详细信息。
byLabels(string)- 用于对指标进行分组的逗号分隔标签列表(例如:'source_workload,destination_service')。可选direction(string)- 流量方向:'inbound' 或 'outbound'。可选,默认为 'outbound'namespace(string)(必填) - 要获取资源的命名空间quantiles(string)- 用于直方图指标的逗号分隔的分位数列表(例如:'0.5,0.95,0.99')。可选rateInterval(string)- 指标的采集间隔(例如:'1m'、'5m')。可选,默认为 '10m'reporter(string)- 指标报告者:'source'、'destination' 或 'both'。可选,默认为 'source'requestProtocol(string)- 按请求协议过滤(例如:'http'、'grpc'、'tcp')。可选resource_name(string)(必填) - 要获取详细信息的资源名称(可选字符串:如果提供则获取详细信息;若为空则列出所有)。resource_type(string)(必填) - 要获取详细信息的资源类型(服务、工作负载)step(string)- 数据点之间的步长(以秒为单位,例如:'15')。可选,默认为 15 秒
kiali_workload_logs - Get logs for a specific workload's pods in a namespace. Only requires namespace and workload name - automatically discovers pods and containers. Optionally filter by container name, time range, and other parameters. Container is auto-detected if not specified.
container(string) - Optional container name to filter logs. If not provided, automatically detects and uses the main application container (excludes istio-proxy and istio-init)namespace(string) (required) - Namespace containing the workloadsince(string) - Time duration to fetch logs from (e.g., '5m', '1h', '30s'). If not provided, returns recent logstail(integer) - Number of lines to retrieve from the end of logs (default: 100)workload(string) (required) - Name of the workload to get logs for
kiali_get_traces - Gets traces for a specific resource (app, service, workload) in a namespace, or gets detailed information for a specific trace by its ID. If traceId is provided, it returns detailed trace information and other parameters are not required.
clusterName(string) - Cluster name for multi-cluster environments (optional, only used when traceId is not provided)endMicros(string) - End time for traces in microseconds since epoch (optional, defaults to 10 minutes after startMicros if not provided, only used when traceId is not provided)limit(integer) - Maximum number of traces to return (default: 100, only used when traceId is not provided)minDuration(integer) - Minimum trace duration in microseconds (optional, only used when traceId is not provided)namespace(string) - Namespace to get resources from. Required if traceId is not provided.resource_name(string) - Name of the resource to get traces for. Required if traceId is not provided.resource_type(string) - Type of resource to get traces for (app, service, workload). Required if traceId is not provided.startMicros(string) - Start time for traces in microseconds since epoch (optional, defaults to 10 minutes before current time if not provided, only used when traceId is not provided)tags(string) - JSON string of tags to filter traces (optional, only used when traceId is not provided)traceId(string) - Unique identifier of the trace to retrieve detailed information for. If provided, this will return detailed trace information and other parameters (resource_type, namespace, resource_name) are not required.
kubevirt
vm_clone - Clone a KubeVirt VirtualMachine by creating a VirtualMachineClone resource. This creates a copy of the source VM with a new name using the KubeVirt Clone API
name(string) (required) - The name of the source virtual machine to clonenamespace(string) (required) - The namespace of the source virtual machinetargetName(string) (required) - The name for the new cloned virtual machine
vm_create - Create a VirtualMachine in the cluster with the specified configuration, automatically resolving instance types, preferences, and container disk images. VM will be created in Halted state by default; use autostart parameter to start it immediately.
autostart(boolean) - Optional flag to automatically start the VM after creation (sets runStrategy to Always instead of Halted). Defaults to false.instancetype(string) - Optional instance type name for the VM (e.g., 'u1.small', 'u1.medium', 'u1.large')name(string) (required) - The name of the virtual machinenamespace(string) (required) - The namespace for the virtual machinenetworks(array) - Optional secondary network interfaces to attach to the VM. Each item specifies a Multus NetworkAttachmentDefinition to attach. Accepts either simple strings (NetworkAttachmentDefinition names) or objects with 'name' (interface name in VM) and 'networkName' (NetworkAttachmentDefinition name) properties. Each network creates a bridge interface on the VM.performance(string) - Optional performance family hint for the VM instance type (e.g., 'u1' for general-purpose, 'o1' for overcommitted, 'c1' for compute-optimized, 'm1' for memory-optimized). Defaults to 'u1' (general-purpose) if not specified.preference(string) - Optional preference name for the VMsize(string) - Optional workload size hint for the VM (e.g., 'small', 'medium', 'large', 'xlarge'). Used to auto-select an appropriate instance type if not explicitly specified.storage(string) - Optional storage size for the VM's root disk when using DataSources (e.g., '30Gi', '50Gi', '100Gi'). Defaults to 30Gi. Ignored when using container disks.workload(string) - The workload for the VM. Accepts OS names (e.g., 'fedora' (default), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap') or full container disk image URLs
vm_lifecycle - Manage VirtualMachine lifecycle: start, stop, or restart a VM
action(string) (required) - The lifecycle action to perform: 'start' (changes runStrategy to Always), 'stop' (changes runStrategy to Halted), or 'restart' (stops then starts the VM)name(string) (required) - The name of the virtual machinenamespace(string) (required) - The namespace of the virtual machine
tekton
tekton_pipeline_start - Start a Tekton Pipeline by creating a PipelineRun that references it
name(string) (required) - Name of the Pipeline to startnamespace(string) - Namespace of the Pipelineparams(object) - Parameter values to pass to the Pipeline. Keys are parameter names; values can be a string, an array of strings, or an object (map of string to string) depending on the parameter type defined in the Pipeline spec
tekton_pipelinerun_restart - Restart a Tekton PipelineRun by creating a new PipelineRun with the same spec
name(string) (required) - Name of the PipelineRun to restartnamespace(string) - Namespace of the PipelineRun
tekton_task_start - Start a Tekton Task by creating a TaskRun that references it
name(string) (required) - Name of the Task to startnamespace(string) - Namespace of the Taskparams(object) - Parameter values to pass to the Task. Keys are parameter names; values can be a string, an array of strings, or an object (map of string to string) depending on the parameter type defined in the Task spec
tekton_taskrun_restart - Restart a Tekton TaskRun by creating a new TaskRun with the same spec
name(string) (required) - Name of the TaskRun to restartnamespace(string) - Namespace of the TaskRun
tekton_taskrun_logs - Get the logs from a Tekton TaskRun by resolving its underlying pod
name(string) (required) - Name of the TaskRun to get logs fromnamespace(string) - Namespace of the TaskRuntail(integer) - Number of lines to retrieve from the end of the logs (Optional, default: 100)
Prompts
core
- cluster-health-check - Perform comprehensive health assessment of Kubernetes/OpenShift cluster
namespace(string) - Optional namespace to limit health check scope (default: all namespaces)check_events(string) - Include recent warning/error events (true/false, default: true)
kubevirt
- vm-troubleshoot - Generate a step-by-step troubleshooting guide for diagnosing VirtualMachine issues
namespace(string) (required) - The namespace of the VirtualMachine to troubleshootname(string) (required) - The name of the VirtualMachine to troubleshoot
Helm Chart
A Helm Chart is available to simplify the deployment of the Kubernetes MCP server.
helm install kubernetes-mcp-server oci://ghcr.io/containers/charts/kubernetes-mcp-server
For configuration options including OAuth, telemetry, and resource limits, see the chart README and values.yaml.
💬 Community
Join the conversation and connect with other users and contributors:
- Slack - Ask questions, share feedback, and discuss the Kubernetes MCP server in the
#kubernetes-mcp-serverchannel on the CNCF Slack workspace. If you're not already a member, you can request an invitation.
🧑💻 Development
Running with mcp-inspector
Compile the project and run the Kubernetes MCP server with mcp-inspector to inspect the MCP server.
# Compile the project
make build
# Run the Kubernetes MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server
mcp-name: io.github.containers/kubernetes-mcp-server
版本历史
v0.0.532025/10/10v0.0.472025/07/31v0.0.462025/07/23v0.0.452025/07/17v0.0.442025/07/02v0.0.432025/06/20v0.0.422025/06/16v0.0.412025/06/13v0.0.602026/04/01v0.0.592026/03/18v0.0.582026/02/27v0.0.572026/01/27v0.0.562025/12/23v0.0.552025/12/03v0.0.542025/11/12v0.0.522025/09/25v0.0.512025/09/17v0.0.502025/09/11v0.0.492025/08/08v0.0.482025/08/05常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
spec-kit
Spec Kit 是一款专为提升软件开发效率而设计的开源工具包,旨在帮助团队快速落地“规格驱动开发”(Spec-Driven Development)模式。传统开发中,需求文档往往与代码实现脱节,导致沟通成本高且结果不可控;而 Spec Kit 通过将规格说明书转化为可执行的指令,让 AI 直接依据明确的业务场景生成高质量代码,从而减少从零开始的随意编码,确保产出结果的可预测性。 该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程,用户只需通过简单的命令行操作,即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念,支持社区扩展与预设模板,允许用户根据特定技术栈定制开发流程。此外,Spec Kit 强调官方维护的安全性,提供稳定的版本管理,帮助开发者在享受 AI 红利的同时,依然牢牢掌握架构设计的主动权,真正实现从“凭感觉写代码”到“按规格建系统”的转变。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。