kubernetes-mcp-server

GitHub
1.5k 320 简单 1 次阅读 昨天Apache-2.0语言模型
AI 解读 由 AI 自动生成,仅供参考

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,步骤多且易出错。
  • 依赖环境复杂:本地必须预装配置好 kubectlhelm 等命令行工具及对应运行时环境,否则无法执行任何操作。
  • 响应延迟明显:每次操作都涉及外部进程调用,面对高并发或大规模集群时,命令执行等待时间过长。

使用 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
GPU

未说明

内存

未说明

依赖
notes该工具是基于 Go 语言编写的原生二进制程序,无需安装 Node.js、Python 或 kubectl/helm 等外部依赖即可运行。主要运行前提是能够访问 Kubernetes 集群(需配置 kubeconfig 或在集群内运行)。支持通过 npx (Node.js)、uvx (Python) 或直接下载二进制文件的方式启动。
python非必需(若使用 uvx 或 PyPI 包则需要 Python 环境)
kubernetes-mcp-server hero image

快速开始

Kubernetes MCP 服务器

GitHub 许可证 npm PyPI - 版本 GitHub 发布(最新 SemVer) 构建

✨ 功能 | 🚀 入门指南 | 🎥 演示 | ⚙️ 配置 | 🛠️ 工具 | 💬 社区 | 🧑‍💻 开发

https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e

✨ 功能

一款功能强大且灵活的 Kubernetes 模型上下文协议 (MCP) 服务器实现,支持 KubernetesOpenShift

  • ✅ 配置:
    • 自动检测 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 服务器实现不同,本项目 并非 仅仅是 kubectlhelm 命令行工具的封装。它是一个 基于 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 中安装 在 VS Code Insiders 中安装

或者,您也可以手动运行以下命令来安装扩展:

# 对于 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 服务器

或者,您也可以通过编辑 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 上构建并部署一款游戏

使用 Kubernetes MCP 服务器一键增强 VS Code 中的 GitHub Copilot!

在本演示中,我将向您展示如何仅通过点击一个链接,就在 VS Code 中设置好 Kubernetes MCP 服务器。

使用 Kubernetes MCP 服务器一键增强 VS Code 中的 GitHub Copilot!

⚙️ 配置

Kubernetes MCP 服务器可以通过命令行参数进行配置。

您可以使用 npxuvx 运行该 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 身份验证(KeycloakMicrosoft 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

    • namestring(必填) - Pod 的名称
    • namespacestring)- 用于获取 Pod 的命名空间
  • pods_delete - 删除当前或指定命名空间中具有指定名称的 Kubernetes Pod

    • namestring(必填) - 要删除的 Pod 名称
    • namespacestring)- 用于删除 Pod 的命名空间
  • pods_top - 列出由 Kubernetes Metrics Server 记录的指定 Kubernetes Pod 在所有命名空间、指定命名空间或当前命名空间中的资源消耗情况(CPU 和内存)

    • all_namespacesboolean)- 如果为真,则列出所有命名空间中所有 Pod 的资源消耗;如果为假,则列出指定命名空间或当前命名空间中 Pod 的资源消耗
    • label_selectorstring)- Kubernetes 标签选择器(例如 'app=myapp,env=prod''app in (myapp,yourapp)'),当您希望按标签筛选 Pod 时使用此选项(可选,仅在未提供 name 时适用)
    • namestring)- 要获取资源消耗的 Pod 名称(可选,未提供时为命名空间中的所有 Pod)
    • namespacestring)- 用于获取 Pod 资源消耗的命名空间(可选,未提供且 all_namespaces 为假时为当前命名空间)
  • pods_exec - 在当前或指定命名空间中,对具有指定名称和命令的 Kubernetes Pod 执行命令(Shell 访问,在容器中运行命令)

    • commandarray(必填) - 在 Pod 容器中执行的命令。第一个元素是要运行的命令,其余为该命令的参数。示例:["ls", "-l", "/tmp"]
    • containerstring)- 将要执行命令的 Pod 容器名称(可选)
    • namestring(必填) - 将要执行命令的 Pod 名称
    • namespacestring)- 将要执行命令的 Pod 所在的命名空间
  • pods_log - 获取当前或指定命名空间中具有指定名称的 Kubernetes Pod 的日志

    • containerstring)- 要获取日志的 Pod 容器名称(可选)
    • namestring(必填) - 要获取日志的 Pod 名称
    • namespacestring)- 用于获取 Pod 日志的命名空间
    • previousboolean)- 返回之前终止的容器日志(可选)
    • tailinteger)- 从日志末尾获取的行数(可选,默认:100)
  • pods_run - 在当前或指定命名空间中,使用提供的容器镜像并可选地指定名称来运行 Kubernetes Pod

    • imagestring(必填) - 在 Pod 中运行的容器镜像
    • namestring)- Pod 的名称(可选,未提供时随机生成)
    • namespacestring)- 运行 Pod 的命名空间
    • portnumber)- 从 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)

    • apiVersionstring(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)
    • fieldSelectorstring)- 可选的 Kubernetes 字段选择器,用于按字段值筛选资源(例如 'status.phase=Running''metadata.name=myresource')。支持的字段因资源类型而异。对于 Pod:metadata.namemetadata.namespacespec.nodeNamespec.restartPolicyspec.schedulerNamespec.serviceAccountNamestatus.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIPstatus.nominatedNodeName。更多信息请参见:https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • kindstring(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)
    • labelSelectorstring)- 可选的 Kubernetes 标签选择器(例如 'app=myapp,env=prod''app in (myapp,yourapp)'),当您希望按标签筛选资源时使用此选项
    • namespacestring)- 可选的命名空间,用于检索命名空间范围内的资源(对于集群范围的资源则忽略)。未提供时将列出所有命名空间中的资源
  • 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)

    • apiVersionstring(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)
    • kindstring(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)
    • namestring(必填) - 资源的名称
    • namespacestring)- 可选的命名空间,用于检索命名空间范围的资源(对于集群范围的资源则忽略)。未提供时将从配置的命名空间获取资源
  • 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)

    • resourcestring(必填) - 包含 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)

    • apiVersionstring(必填) - 资源的 apiVersion(有效值示例:v1、apps/v1、networking.k8s.io/v1)
    • gracePeriodSecondsinteger)- 对象被删除前的可选宽限期(以秒为单位)。值必须是非负整数。值为零表示立即删除。如果未指定此值,则将使用指定类型的默认宽限期
    • kindstring(必填) - 资源的种类(有效值示例:Pod、Service、Deployment、Ingress)
    • namestring(必填) - 资源的名称
    • namespacestring)- 可选的命名空间,用于删除命名空间范围的资源(对于集群范围的资源则忽略)。未提供时将从配置的命名空间删除资源
  • resources_scale - 通过提供 Kubernetes 资源的 apiVersion、kind 和名称,以及可选的命名空间,在当前集群中获取或更新该资源的规模。如果在工具调用中指定了 scale 值,则会将规模更新为该值。始终返回资源的当前规模。

    • apiVersionstring(必填) - 资源的 API 版本(有效示例:apps/v1)
    • kindstring(必填) - 资源的类型(有效示例:StatefulSet、Deployment)
    • namestring(必填) - 资源的名称
    • namespacestring)- 可选的命名空间,用于获取或更新命名空间范围内的资源规模(对于集群范围的资源则忽略)。如果不提供,则将在配置的命名空间中获取或更新资源规模。
    • scaleinteger)- 可选的规模值,用于将资源规模更新为此值。如果不提供,则返回资源的当前规模,而不进行更新。
helm
  • helm_install - 安装(部署)一个 Helm Chart,在当前或指定的命名空间中创建一个发布版本。

    • chartstring(必填) - 要安装的 Chart 引用(例如:stable/grafana、oci://ghcr.io/nginxinc/charts/nginx-ingress)
    • namestring)- Helm 发布的名称(可选,未提供时随机生成)
    • namespacestring)- 安装 Helm Chart 的命名空间(可选,未提供时使用当前命名空间)
    • valuesobject)- 传递给 Helm Chart 的值(可选)
  • helm_list - 列出当前或指定命名空间中的所有 Helm 发布版本(或列出所有命名空间中的发布版本,如果已指定)。

    • all_namespacesboolean)- 如果为真,则列出所有命名空间中的 Helm 发布版本,忽略 namespace 参数(可选)
    • namespacestring)- 要列出 Helm 发布版本的命名空间(可选,未提供时列出所有命名空间)
  • helm_uninstall - 卸载当前或指定命名空间中的 Helm 发布版本。

    • namestring(必填) - 要卸载的 Helm 发布版本的名称
    • namespacestring)- 卸载 Helm 发布版本的命名空间(可选,未提供时使用当前命名空间)
kcp
  • kcp_workspaces_list - 列出当前集群中所有可用的 kcp 工作空间。

  • kcp_workspace_describe - 获取特定 kcp 工作空间的详细信息。

    • workspacestring(必填) - 要描述的工作空间的名称或路径。
kiali
  • kiali_mesh_graph - 返回特定命名空间的拓扑结构、网格健康状况及命名空间状态。包含网格健康概览,汇总显示正常、降级和故障的应用、工作负载和服务数量。适用于高层次的概览。

    • graphTypestring)- 可选的图表类型:'versionedApp'、'app'、'service'、'workload'、'mesh'
    • namespacestring)- 可选的单个命名空间,用于包含在图表中(替代 namespaces 参数)
    • namespacesstring)- 可选的逗号分隔的命名空间列表,用于包含在图表中
    • rateIntervalstring)- 可选的采集速率间隔(例如:'10m'、'5m'、'1h')。
  • kiali_manage_istio_config_read - 列出或获取 Istio 配置对象(网关、虚拟服务等)。

    • actionstring(必填) - 要执行的操作:列出或获取
    • groupstring)- Istio 对象的 API 组(例如:'networking.istio.io'、'gateway.networking.k8s.io')
    • kindstring)- Istio 对象的类型(例如:'DestinationRule'、'VirtualService'、'HTTPRoute'、'Gateway')
    • namestring)- Istio 对象的名称
    • namespacestring)- 包含 Istio 对象的命名空间
    • versionstring)- Istio 对象的 API 版本(例如:'v1'、'v1beta1')
  • kiali_manage_istio_config - 创建、修补或删除 Istio 配置对象(网关、虚拟服务等)。

    • actionstring(必填) - 要执行的操作:创建、修补或删除
    • groupstring)- Istio 对象的 API 组(例如:'networking.istio.io'、'gateway.networking.k8s.io')
    • json_datastring)- 用于应用或创建对象的 JSON 数据
    • kindstring)- Istio 对象的类型(例如:'DestinationRule'、'VirtualService'、'HTTPRoute'、'Gateway')
    • namestring)- Istio 对象的名称
    • namespacestring)- 包含 Istio 对象的命名空间
    • versionstring)- Istio 对象的 API 版本(例如:'v1'、'v1beta1')
  • kiali_get_resource_details - 获取网格内 Kubernetes 资源(服务、工作负载)的列表或详细信息。

    • namespacesstring)- 用于获取服务的逗号分隔的命名空间列表(例如:'bookinfo' 或 'bookinfo,default')。如果未提供,则会列出所有可访问命名空间中的服务。
    • resource_namestring)- 要获取详细信息的资源名称(可选字符串:如果提供则获取详细信息;若为空则列出所有)。
    • resource_typestring)- 要获取详细信息的资源类型(服务、工作负载)。
  • kiali_get_metrics - 获取网格内 Kubernetes 资源(服务、工作负载)的列表或详细信息。

    • byLabelsstring)- 用于对指标进行分组的逗号分隔标签列表(例如:'source_workload,destination_service')。可选
    • directionstring)- 流量方向:'inbound' 或 'outbound'。可选,默认为 'outbound'
    • namespacestring(必填) - 要获取资源的命名空间
    • quantilesstring)- 用于直方图指标的逗号分隔的分位数列表(例如:'0.5,0.95,0.99')。可选
    • rateIntervalstring)- 指标的采集间隔(例如:'1m'、'5m')。可选,默认为 '10m'
    • reporterstring)- 指标报告者:'source'、'destination' 或 'both'。可选,默认为 'source'
    • requestProtocolstring)- 按请求协议过滤(例如:'http'、'grpc'、'tcp')。可选
    • resource_namestring(必填) - 要获取详细信息的资源名称(可选字符串:如果提供则获取详细信息;若为空则列出所有)。
    • resource_typestring(必填) - 要获取详细信息的资源类型(服务、工作负载)
    • stepstring)- 数据点之间的步长(以秒为单位,例如:'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 workload
    • since (string) - Time duration to fetch logs from (e.g., '5m', '1h', '30s'). If not provided, returns recent logs
    • tail (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 clone
    • namespace (string) (required) - The namespace of the source virtual machine
    • targetName (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 machine
    • namespace (string) (required) - The namespace for the virtual machine
    • networks (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 VM
    • size (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 machine
    • namespace (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 start
    • namespace (string) - Namespace of the Pipeline
    • params (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 restart
    • namespace (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 start
    • namespace (string) - Namespace of the Task
    • params (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 restart
    • namespace (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 from
    • namespace (string) - Namespace of the TaskRun
    • tail (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 troubleshoot
    • name (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-server channel 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/10
v0.0.472025/07/31
v0.0.462025/07/23
v0.0.452025/07/17
v0.0.442025/07/02
v0.0.432025/06/20
v0.0.422025/06/16
v0.0.412025/06/13
v0.0.602026/04/01
v0.0.592026/03/18
v0.0.582026/02/27
v0.0.572026/01/27
v0.0.562025/12/23
v0.0.552025/12/03
v0.0.542025/11/12
v0.0.522025/09/25
v0.0.512025/09/17
v0.0.502025/09/11
v0.0.492025/08/08
v0.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 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

spec-kit

Spec Kit 是一款专为提升软件开发效率而设计的开源工具包,旨在帮助团队快速落地“规格驱动开发”(Spec-Driven Development)模式。传统开发中,需求文档往往与代码实现脱节,导致沟通成本高且结果不可控;而 Spec Kit 通过将规格说明书转化为可执行的指令,让 AI 直接依据明确的业务场景生成高质量代码,从而减少从零开始的随意编码,确保产出结果的可预测性。 该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程,用户只需通过简单的命令行操作,即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念,支持社区扩展与预设模板,允许用户根据特定技术栈定制开发流程。此外,Spec Kit 强调官方维护的安全性,提供稳定的版本管理,帮助开发者在享受 AI 红利的同时,依然牢牢掌握架构设计的主动权,真正实现从“凭感觉写代码”到“按规格建系统”的转变。

88.7k|★★☆☆☆|2天前
语言模型图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|2周前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.3k|★★☆☆☆|昨天
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他