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 操作(创建或更新、获取、列出、删除)。
- ✅ Pods :执行特定于 Pod 的操作。
- 列出所有命名空间或特定命名空间中的 pod。
- 从指定的命名空间按名称获取pod。
- 从指定的命名空间中按名称删除pod。
- 按名称显示指定命名空间中 pod 的日志。
- 执行到 pod 中并运行命令。
- 在 pod 中运行容器镜像并可选择将其公开。
- ✅ 命名空间:列出 Kubernetes 命名空间。
- ✅ 事件:查看所有命名空间或特定命名空间中的 Kubernetes 事件。
- ✅ 项目:列出 OpenShift 项目。
- ☸️头盔:
- 在当前或提供的命名空间中安装Helm 图表。
- 列出所有命名空间或特定命名空间中的 Helm 版本。
- 在当前或提供的命名空间中卸载Helm 版本。
与其他 Kubernetes MCP 服务器实现不同,这不仅仅是对kubectl
或helm
命令行工具的包装。它是一个基于 Go 的原生实现,可直接与 Kubernetes API 服务器交互。
无需在系统上安装任何外部依赖项或工具。如果您使用原生二进制文件,则无需在系统上安装 Node 或 Python。
- ✅ 轻量级:该服务器作为 Linux、macOS 和 Windows 的单个本机二进制文件分发。
- ✅ 高性能/低延迟:直接与 Kubernetes API 服务器交互,无需调用和等待外部命令的开销。
- ✅ 跨平台:可作为 Linux、macOS 和 Windows 的本机二进制文件,以及 npm 包、Python 包和容器/Docker 映像使用。
- ✅ 可配置:支持命令行参数来配置服务器行为。
- ✅ 经过充分测试:该服务器具有广泛的测试套件,以确保其在不同的 Kubernetes 环境中的可靠性和正确性。
🚀 入门
要求
- 访问 Kubernetes 集群。
克劳德桌面
使用 npx
如果您已安装 npm,这是在 Claude Desktop 上开始使用kubernetes-mcp-server
最快方法。
打开claude_desktop_config.json
并将 mcp 服务器添加到mcpServers
列表中:
VS Code / VS Code 内部人士
通过点击以下链接在 VS Code Insiders 中安装 Kubernetes MCP 服务器扩展:
或者,您可以通过运行以下命令手动安装扩展:
Goose 命令行界面
Goose CLI是使用人工智能 (AI) 代理最简单(也是最便宜)的方法。
使用 npm
如果您已经安装了 npm,这是开始使用kubernetes-mcp-server
最快方法。
打开你的 goose config.yaml
并将 mcp 服务器添加到mcpServers
列表中:
🎥 演示
诊断并自动修复 OpenShift 部署
演示展示了 Claude Desktop 如何利用 Kubernetes MCP 服务器自动诊断和修复 OpenShift 中的部署,无需任何用户协助。
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
Vibe 编写一个简单的游戏并将其部署到 OpenShift
在此演示中,我将引导您完成使用 VS Code 对简单游戏进行Vibe Coding的过程,以及如何利用Podman MCP 服务器和 Kubernetes MCP 服务器将其部署到 OpenShift。
使用 VS Code 中的 Kubernetes MCP 服务器增强 GitHub Copilot - 一键设置!
在这个演示中,我将向您展示如何通过单击链接在 VS 代码中设置 Kubernetes MCP 服务器。
⚙️ 配置
可以使用命令行 (CLI) 参数配置 Kubernetes MCP 服务器。
您可以使用npx
、 uvx
或下载最新版本的二进制文件来运行 CLI 可执行文件。
配置选项
选项 | 描述 |
---|---|
--sse-port | 以服务器发送事件 (SSE) 模式启动 MCP 服务器并监听指定端口。 |
--log-level | 设置日志级别(值从 0 到 9 )。类似于kubectl logging levels 。 |
--kubeconfig | Kubernetes 配置文件的路径。如果未提供,它将尝试解析配置(集群内、默认位置等)。 |
--read-only | 如果设置了此选项,MCP 服务器将以只读模式运行,这意味着它不允许在 Kubernetes 集群上执行任何写入操作(创建、更新、删除)。这对于在不进行任何更改的情况下调试或检查集群非常有用。 |
--disable-destructive | 如果设置,MCP 服务器将禁用 Kubernetes 集群上的所有破坏性操作(删除、更新等)。这对于调试或检查集群非常有用,避免意外更改。使用--read-only 选项时,此选项无效。 |
🛠️ 工具
configuration_view
获取当前 Kubernetes 配置内容作为 kubeconfig YAML
参数:
minified
(boolean
,可选,默认值:true
)- 返回配置的最小化版本
- 如果为
true
,则仅保留当前上下文和相关配置部分 - 如果为
false
,则返回所有上下文、集群、授权信息和用户
events_list
列出当前集群中所有命名空间的所有 Kubernetes 事件
参数:
namespace
(string
,可选)- 用于检索事件的命名空间。如果未提供,则列出所有命名空间中的事件
helm_install
使用提供的名称和图表在当前或提供的命名空间中安装 Helm 图表
参数:
chart
(string
,必需)- 要安装的 Helm 图表的名称
- 可以是本地路径或远程 URL
- 例如:
./my-chart.tgz
或https://example.com/my-chart.tgz
values
(object
,可选)- 传递给 Helm 图表的值
- 例如:
{"key": "value"}
name
(string
,可选)- Helm 版本的名称
- 如果未提供,则随机名称
namespace
(string
,可选)- 安装 Helm 图表的命名空间
- 如果未提供,将使用配置的命名空间
helm_list
列出当前或提供的命名空间(或指定的所有命名空间)中的所有 Helm 版本
参数:
namespace
(string
,可选)- 列出 Helm 版本的命名空间
- 如果未提供,将使用配置的命名空间
all_namespaces
(boolean
,可选)- 如果为
true
,将列出所有命名空间中的 Helm 版本 - 如果为
false
,将列出来自指定命名空间的 Helm 版本
- 如果为
helm_uninstall
使用提供的名称卸载当前或提供的命名空间中的 Helm 版本
参数:
name
(string
,必需)- 要卸载的 Helm 版本的名称
namespace
(string
,可选)- 用于卸载 Helm 版本的命名空间
- 如果未提供,将使用配置的命名空间
namespaces_list
列出当前集群中的所有 Kubernetes 命名空间
**参数:**无
pods_delete
删除当前命名空间或指定命名空间中具有指定名称的 Kubernetes Pod
参数:
name
(string
,必需)- 要删除的 Pod 的名称
namespace
(string
,必需)- 要从中删除 Pod 的命名空间
pods_exec
使用提供的名称和命令在当前或提供的命名空间中的 Kubernetes Pod 中执行命令
参数:
command
(string[]
,必需)- 在 Pod 容器中执行的命令
- 第一项是命令,其余的是参数
- 例如:
["ls", "-l", "/tmp"]
name
(字符串,必需)- Pod 的名称
namespace
(字符串,必需)- Pod 的命名空间
container
(string
,可选)- 获取日志的 Pod 容器的名称
pods_get
获取当前命名空间或指定命名空间中具有指定名称的 Kubernetes Pod
参数:
name
(string
,必需)- Pod 的名称
namespace
(string
,必需)- 获取 Pod 的命名空间
pods_list
列出当前集群中所有命名空间的所有 Kubernetes Pod
参数:
labelSelector
(string
,可选)- Kubernetes 标签选择器(例如,“app=myapp,env=prod”或“app in (myapp,yourapp)”)。使用此选项可按标签筛选 Pod。
pods_list_in_namespace
列出当前集群中指定命名空间内的所有 Kubernetes pod
参数:
namespace
(string
,必需)- 列出 Pod 的命名空间
labelSelector
(string
,可选)- Kubernetes 标签选择器(例如,“app=myapp,env=prod”或“app in (myapp,yourapp)”)。使用此选项可按标签筛选 Pod。
pods_log
获取当前命名空间或指定名称的 Kubernetes Pod 的日志
参数:
name
(string
,必需)- 获取日志的 Pod 名称
namespace
(string
,必需)- 获取 Pod 日志的命名空间
container
(string
,可选)- 获取日志的 Pod 容器的名称
pods_run
使用提供的容器镜像和可选名称在当前或提供的命名空间中运行 Kubernetes Pod
参数:
image
(string
,必需)- 要在 Pod 中运行的容器镜像
namespace
(string
,必需)- 运行 Pod 的命名空间
name
(string
,可选)- Pod 的名称(如果未提供则为随机名称)
port
(number
,可选)- 从 Pod 容器公开的 TCP/IP 端口
- 如果未提供,则不公开端口
projects_list
列出当前集群中的所有 OpenShift 项目
resources_create_or_update
通过提供资源的 YAML 或 JSON 表示形式来创建或更新当前集群中的 Kubernetes 资源
参数:
resource
(string
,必需)- 包含 Kubernetes 资源表示的 JSON 或 YAML
- 应包含顶级字段,例如 apiVersion、kind、metadata 和 spec
常见的apiVersion和kind包括:
- v1 Pod
- v1 服务
- v1 节点
- apps/v1 部署
- networking.k8s.io/v1 入口
resources_delete
删除当前集群中的 Kubernetes 资源
参数:
apiVersion
(string
,必需)- 资源的 apiVersion(例如,
v1
,apps/v1
,networking.k8s.io/v1
)
- 资源的 apiVersion(例如,
kind
(string
,必需)- 资源类型(例如
Pod
、Service
、Deployment
、Ingress
)
- 资源类型(例如
name
(string
,必需)- 资源名称
namespace
(string
,可选)- 要从中删除命名空间资源的命名空间
- 忽略集群范围的资源
- 如果未提供,则使用已配置的命名空间
resources_get
获取当前集群中的 Kubernetes 资源
参数:
apiVersion
(string
,必需)- 资源的 apiVersion(例如,
v1
,apps/v1
,networking.k8s.io/v1
)
- 资源的 apiVersion(例如,
kind
(string
,必需)- 资源类型(例如
Pod
、Service
、Deployment
、Ingress
)
- 资源类型(例如
name
(string
,必需)- 资源名称
namespace
(string
,可选)- 用于检索命名空间资源的命名空间
- 忽略集群范围的资源
- 如果未提供,则使用已配置的命名空间
resources_list
列出当前集群中的 Kubernetes 资源和对象
参数:
apiVersion
(string
,必需)- 资源的 apiVersion(例如,
v1
,apps/v1
,networking.k8s.io/v1
)
- 资源的 apiVersion(例如,
kind
(string
,必需)- 资源种类(例如
Pod
、Service
、Deployment
、Ingress
)
- 资源种类(例如
namespace
(string
,可选)- 用于检索命名空间资源的命名空间
- 忽略集群范围的资源
- 如果未提供,则列出所有命名空间的资源
labelSelector
(string
,可选)- Kubernetes 标签选择器(例如,“app=myapp,env=prod”或“app in (myapp,yourapp)”)。使用此选项可按标签筛选 Pod。
🧑💻开发
使用 mcp-inspector 运行
编译项目并使用mcp-inspector运行 Kubernetes MCP 服务器来检查 MCP 服务器。
Related MCP Servers
- -securityAlicense-qualityThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.Last updated -279GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -487GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -115GoMIT License
- -securityAlicense-qualityOpen source MCP server specializing in easy, fast, and secure tools for Databases.Last updated -1,430GoApache 2.0