Kubernetes MCP服务器

一个强大且灵活的Kubernetes模型上下文协议(MCP)服务器实现,支持Kubernetes和OpenShift,提供多种资源和操作管理功能。

作者 By containers
本地部署 Kubernetes管理 容器编排
GitHub

Kubernetes MCP服务器

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

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或特定pod的资源使用指标。

  • 执行 进入pod并运行命令。

  • pod中的容器图像,并可选择对其进行曝光。

  • ✅ 命名空间列出 Kubernetes 命名空间。

  • ✅ 事件:查看所有命名空间或特定命名空间中的Kubernetes事件。

  • ✅ 项目:列出OpenShift项目。

  • ☸️ 舵:

  • 安装 当前或提供的命名空间中的Helm图。

  • 列表 Helm在所有命名空间或特定命名空间中发布。

  • 卸载 当前或提供的命名空间中的Helm版本。

  • 🔧 泰克顿:补充通用Kubernetes资源管理的Tekton特定操作。

  • 管道:通过创建PipelineRun启动Tekton Pipeline。

  • 管道 运行:使用相同的规范重新启动PipelineRun。

  • 任务:通过创建TaskRun启动Tekton任务。

  • TaskRun:重新启动具有相同规范的TaskRun,并通过pod解析检索TaskRun日志。

  • 🔭 可观测性:可选的OpenTetry分布式跟踪和指标,具有自定义采样率。包含 /stats 实时统计的端点。看 HOTEL.cn.

与其他Kubernetes MCP服务器实现不同 不是 只是一个包装 kubectlhelm 命令行工具。 它是一个 基于Go的原生实现 与Kubernetes API服务器直接交互。

不需要 用于在系统上安装外部依赖项或工具。 如果您使用的是本机二进制文件,则不需要在系统上安装Node或Python。

  • ✅ 轻量级:服务器作为Linux、macOS和Windows的单个本机二进制文件分发。
  • ✅ 高性能/低延迟:直接与Kubernetes API服务器交互,无需调用和等待外部命令的开销。
  • ✅ 多集群:可以同时与多个Kubernetes集群交互(如kubeconfig文件中所定义)。
  • ✅ 交叉平台的:可作为Linux、macOS和Windows的原生二进制文件,以及npm包、Python包和容器/Docker映像。
  • ✅ 可配置的:支持 命令行参数, TOML配置文件以及环境变量。
  • ✅ 经过充分测试的:服务器有一个广泛的测试套件,以确保其在不同Kubernetes环境中的可靠性和正确性。
  • 📚 文档:全面 用户文档 包括设置指南、配置参考和可观察性。

🚀 入门指南

需求

  • 访问Kubernetes集群。

Claude Code 遵循 专门的Claude Code入门指南 在我们 用户文档.

对于具有专用ServiceAccount和只读访问权限的安全生产设置,还请查看 Kubernetes设置指南.

克劳德桌面版

使用npx

如果你已经安装了npm,这是最快的入门方法 kubernetes-mcp-server 在克劳德桌面上。

打开你的 claude_desktop_config.json 并将mcp服务器添加到列表中 mcpServers:

JSON``` 1 2 3 4 5 6 7 8 9 10 11{ “mcpServers”: { “kubernetes”: { “command”: “npx”, “args”: [ “-y”, “kubernetes-mcp-server@latest” ] } } }


### VS代码/VS代码内部人员


按以下链接在VS Code Insiders中安装Kubernetes MCP服务器扩展:


[![Install in VS Code](https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522kubernetes%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522kubernetes-mcp-server%2540latest%2522%255D%257D)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522kubernetes%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522kubernetes-mcp-server%2540latest%2522%255D%257D)


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


SHELL```
1
2
3
4# For VS Code
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'

光标

按以下链接在Cursor中安装Kubernetes MCP服务器扩展:

或者,您可以通过编辑来手动安装扩展 mcp.json 文件:

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


### Goose命令行界面


[Goose命令行界面](https://blog.marcnuri.com/goose-on-machine-ai-agent-cli-introduction) 是使用人工智能(AI)代理最简单(也是最便宜)的方法。


#### 使用npm


如果你已经安装了npm,这是最快的入门方法 `kubernetes-mcp-server`.


打开你的鹅 `config.yaml` 并将mcp服务器添加到列表中 `mcpServers`:


YAML```
1
2
3
4
5
6extensions:
  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。

在VS Code中用Kubernetes MCP服务器为GitHub Copilot充电-一键设置!

在这个演示中,我将向您展示如何通过单击链接在VS代码中设置Kubernetes MCP服务器。

⚙️ 配置

Kubernetes MCP服务器可以使用命令行(CLI)参数进行配置。

您可以通过以下方式运行CLI可执行文件: npx, uvx,或下载 最新发布的二进制文件.

SHELL``` 1 2# Run the Kubernetes MCP server using npx (in case you have npm and node installed) npx kubernetes-mcp-server@latest —help


SHELL```
1
2# Run the Kubernetes MCP server using uvx (in case you have uv and python installed)
uvx kubernetes-mcp-server@latest --help

SHELL``` 1 2# Run the Kubernetes MCP server using the latest release binary ./kubernetes-mcp-server —help


### 配置选项


| 选项 | 描述 |
| --- | --- |
| `--port` | 以流式HTTP模式(path/MCP)和服务器发送事件(SSE)模式(path/SSE)启动MCP服务器,并在指定端口上侦听。 |
| `--log-level` | 设置日志记录级别(值 [从0到9](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md)).类似于 [kubectl日志记录级别](https://kubernetes.io/docs/reference/kubectl/quick-reference/#kubectl-output-verbosity-and-debugging). |
| `--config` | (可选)主TOML配置文件的路径。看 配置参考 了解详情。 |
| `--config-dir` | (可选)配置目录中的放置路径。文件按词汇(字母)顺序加载。默认为 `conf.d` 相对于主配置文件,如果 `--config` 已指定。看 配置参考 了解详情。 |
| `--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` 标志相当于设置 `cluster_provider_strategy = "disabled"` 在TOML。请参阅 配置参考 对于所有TOML选项。


### TOML配置文件


对于复杂或持久的配置,请使用TOML配置文件而不是CLI参数:


SHELL```
1kubernetes-mcp-server --config /etc/kubernetes-mcp-server/config.toml

配置示例:

TOML``` 1 2 3 4 5 6 7 8 9 10log_level = 2 read_only = true toolsets = [“core”, “config”, “helm”, “kubevirt”]

Deny access to sensitive resources

[[denied_resources]] group = "" version = “v1” kind = “Secret” [telemetry] endpoint = “http://localhost:4317


有关全面的TOML配置文档,包括:


- 所有配置选项及其默认值
- 模块化设置的插入式配置文件
- 通过SIGHUP动态配置重新加载
- 拒绝资源以限制对敏感资源类型的访问
- MCP工具搜索的服务器说明
- 自定义MCP提示
- OAuth/OIDC身份验证 用于HTTP模式


请参阅 **配置参考**.


## 📊 MCP日志记录


服务器支持MCP日志记录功能,允许客户端通过结构化日志消息接收调试信息。
Kubernetes API错误会自动分类并记录到具有适当严重性级别的客户端。
敏感数据(令牌、密钥、密码、云凭据)在发送给客户端之前会自动进行编辑。


请参阅 **MCP记录指南**.


## 🛠️ 工具和功能


Kubernetes MCP服务器支持通过以下方式启用或禁用特定组的工具和功能(工具、资源、提示等) `--toolsets` 命令行标志或 `toolsets` 配置选项。
这允许您控制哪些Kubernetes功能可用于您的AI工具。
仅启用所需的工具集可以帮助减少上下文大小并提高LLM的工具选择准确性。


### 可用工具集


以下工具集可用(标有✓ 默认情况下,默认情况下启用“默认”列中的):



| 工具集 | 描述 | 默认值 |
| --- | --- | --- |
| config | 查看和管理当前本地Kubernetes配置(kubeconfig) | ✓ |
| core | Kubernetes管理最常用的工具(Pod、通用资源、事件等) | ✓ |
| helm | 用于管理helm图表和版本的工具 |  |
| kcp | 管理kcp工作区和多租户功能 |  |
| kiali | 管理kiali的最常用工具,请查看 [Kiali文件](https://github.com/containers/kubernetes-mcp-server/blob/main/docs/KIALI.md) 了解更多详情。 |  |
| kubevirt | kubevirt虚拟机管理工具,查看 [KubeVirt文档](https://github.com/containers/kubernetes-mcp-server/blob/main/docs/kubevirt.md) 了解更多详情。 |  |
| tekton | 用于管道、管道运行、任务和任务运行的tekton管道管理工具。 |  |



### 工具


如果启用了多集群支持(默认),并且您可以访问多个集群,则所有适用的工具都将包括一个额外的 `context` 参数指定用于该操作的Kubernetes上下文(集群)。




config
- **配置文本列表** -从kubeconfig文件中列出所有可用的上下文名称和相关的服务器url
- **targets_list** -列出所有可用目标
- **配置视图** -以kubeconfig YAML格式获取当前Kubernetes配置内容


- `minified` (`boolean`)-返回配置的缩小版本。如果设置为true,则仅保留当前上下文和该上下文的相关配置。如果设置为false,则配置中将返回所有上下文、集群、身份验证信息和用户。(可选,默认为true)




core
- **事件列表** -从所有命名空间列出当前集群中用于调试和故障排除的Kubernetes事件(警告、错误、状态更改)


- `namespace` (`string`)-从中检索事件的可选命名空间。如果未提供,将列出所有命名空间中的事件
- **命名空间列表** -列出当前集群中的所有Kubernetes命名空间
- **项目列表** -列出当前集群中的所有OpenShift项目
- **nodes_log** -从Kubernetes节点获取日志(kubelet、kube-proxy或其他系统日志)。这通过Kubernetes API代理访问节点日志到kubelet


- `name` (`string`) **(必填)** -从中获取日志的节点的名称
- `query` (`string`) **(必填)** -查询指定从中返回日志的服务或文件(必需)。示例:“kubelet”获取kubelet日志/“从节点获取特定的日志文件(例如,”/var/log/kubelet.log“或”/var/log/bube-proxy.log“)
- `tailLines` (`integer`)-从日志末尾检索的行数(可选,0表示所有日志)
- **nodes_stats_summary** -通过kubelet的摘要API从Kubernetes节点获取详细的资源使用统计信息。提供全面的指标,包括节点、pod和容器级别的CPU、内存、文件系统和网络使用情况。在具有cgroup v2和内核4.20+的系统上,还包括PSI(压力失速信息)指标,显示CPU、内存和I/O的资源压力。请参阅[https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/有关PSI指标的详细信息](https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/%E6%9C%89%E5%85%B3PSI%E6%8C%87%E6%A0%87%E7%9A%84%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF)


- `name` (`string`) **(必填)** -要从中获取统计信息的节点的名称
- **nodes_top** -列出Kubernetes Metrics Server记录的指定Kubernetes节点或集群中所有节点的资源消耗(CPU和内存)


- `label_selector` (`string`)-Kubernetes标签选择器(例如’[node-role.kubernes.io/worker=](http://node-role.kubernes.io/worker=)'),用于按标签过滤节点(可选,仅在未提供名称时适用)
- `name` (`string`)-要从中获取资源消耗的节点的名称(可选,如果未提供,则为所有节点)
- **播客列表** -列出当前集群中所有命名空间中的所有Kubernetes Pod


- `fieldSelector` (`string`)-可选的Kubernetes字段选择器,用于按字段值过滤Pod(例如“state.phase=Running”,“spec.nodeName=node1”)。支持的字段:[元数据.name](http://xn--z4qu65bbob.name)、元数据.namespace、规范.nodeName、规范.restartPolicy、规范.schedulerName、规范.serviceAccountName、状态.phase(待定/运行中/成功/失败/未知)、状态.podIP、状态.nominatedNodeName。注意:CrashLoopBackOff是一个容器状态,而不是pod阶段,因此不能直接过滤。看[https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/](https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/)
- `labelSelector` (`string`)-可选的Kubernetes标签选择器(例如“app=myapp,env=prod”或“app-in(myapp,yourapp)”),当您想按标签过滤Pod时,请使用此选项
- **pods_list_in_namespace** -列出当前集群中指定命名空间中的所有Kubernetes Pod


- `fieldSelector` (`string`)-可选的Kubernetes字段选择器,用于按字段值过滤Pod(例如“state.phase=Running”,“spec.nodeName=node1”)。支持的字段:[元数据.name](http://xn--z4qu65bbob.name)、元数据.namespace、规范.nodeName、规范.restartPolicy、规范.schedulerName、规范.serviceAccountName、状态.phase(待定/运行中/成功/失败/未知)、状态.podIP、状态.nominatedNodeName。注意:CrashLoopBackOff是一个容器状态,而不是pod阶段,因此不能直接过滤。看[https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/](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`)-如果为true,请列出所有命名空间中所有Pod的资源消耗。如果为false,请列出提供的命名空间或当前命名空间中Pod的资源消耗
- `label_selector` (`string`)-Kubernetes标签选择器(例如“app=myapp,env=prod”或“app-in(myapp,yourapp)”),当您想按标签过滤Pod时,请使用此选项(可选,仅适用于未提供名称的情况)
- `name` (`string`)-要从中获取资源消耗的Pod的名称(可选,如果未提供,则命名空间中的所有Pod)
- `namespace` (`string`)-从中获取Pod资源消耗的命名空间(可选,如果未提供当前命名空间并且all_namespaces为false,则为当前命名空间)
- **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端口(可选,如果不提供,则不暴露端口)
- **资源列表** -通过提供当前集群中的Kubernetes资源和对象的apiVersion和种类,以及可选的命名空间和标签选择器,列出它们
(常见的apiVersion和种类包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、[networking.k8s.io/v1](http://networking.k8s.io/v1) Ingress、[route.openshift.io/v1](http://route.openshift.io/v1) route)


- `apiVersion` (`string`) **(必填)** -apiVersion资源(有效apiVersion的示例有:v1、apps/v1、[networking.k8s.io/v1)](http://networking.k8s.io/v1%EF%BC%89)
- `fieldSelector` (`string`)-可选的Kubernetes字段选择器,用于按字段值过滤资源(例如“state.phase=Running”、“metadata.name=myresources”)。支持的字段因资源类型而异。对于Pod:[元数据.name](http://xn--z4qu65bbob.name)、元数据.namespace、规范.nodeName、规范.restartPolicy、规范.schedulerName、规范.serviceAccountName、状态.phase(待定/运行中/成功/失败/未知)、状态.podIP、状态.nominatedNodeName。看[https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/](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** -通过提供当前集群中的Kubernetes资源的apiVersion、kind、命名空间(可选)及其名称来获取该资源
(常见的apiVersion和种类包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、[networking.k8s.io/v1](http://networking.k8s.io/v1) Ingress、[route.openshift.io/v1](http://route.openshift.io/v1) route)


- `apiVersion` (`string`) **(必填)** -apiVersion资源(有效apiVersion的示例有:v1、apps/v1、[networking.k8s.io/v1)](http://networking.k8s.io/v1%EF%BC%89)
- `kind` (`string`) **(必填)** -资源的种类(有效种类的示例有:Pod、Service、Deployment、Ingress)
- `name` (`string`) **(必填)** -资源名称
- `namespace` (`string`)-用于从中检索命名空间资源的可选命名空间(在群集范围的资源的情况下忽略)。如果未提供,将从配置的命名空间获取资源
- **资源_创建_更新** -通过提供资源的YAML或JSON表示,在当前集群中创建或更新Kubernetes资源
(常见的apiVersion和种类包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、[networking.k8s.io/v1](http://networking.k8s.io/v1) Ingress、[route.openshift.io/v1](http://route.openshift.io/v1) route)


- `resource` (`string`) **(必填)** -包含Kubernetes资源表示的JSON或YAML。应包括顶级字段,如apiVersion、kind、元数据和spec
- **resources_delete** -通过提供当前集群中的Kubernetes资源的apiVersion、kind、命名空间(可选)及其名称来删除该资源
(常见的apiVersion和种类包括:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、[networking.k8s.io/v1](http://networking.k8s.io/v1) Ingress、[route.openshift.io/v1](http://route.openshift.io/v1) route)


- `apiVersion` (`string`) **(必填)** -apiVersion资源(有效apiVersion的示例有:v1、apps/v1、[networking.k8s.io/v1)](http://networking.k8s.io/v1%EF%BC%89)
- `gracePeriodSeconds` (`integer`)-删除对象之前的可选持续时间(秒)。值必须是非负整数。值为零表示立即删除。如果此值为nil,则将使用指定类型的默认宽限期
- `kind` (`string`) **(必填)** -资源的种类(有效种类的示例有:Pod、Service、Deployment、Ingress)
- `name` (`string`) **(必填)** -资源名称
- `namespace` (`string`)-可选命名空间,用于从中删除命名空间资源(在群集范围的资源的情况下忽略)。如果未提供,将从配置的命名空间中删除资源
- **资源_规模** -通过提供当前集群中Kubernetes资源的apiVersion、种类、名称以及可选的命名空间,获取或更新其规模。如果在工具调用中设置了比例,则比例将更新为该值。始终返回资源的当前规模


- `apiVersion` (`string`) **(必填)** -apiVersion资源(有效apiVersion的示例是apps/v1)
- `kind` (`string`) **(必填)** -资源的种类(有效种类的示例有:StatefulSet、Deployment)
- `name` (`string`) **(必填)** -资源名称
- `namespace` (`string`)-用于获取/更新命名空间资源规模的可选命名空间(对于群集范围的资源,忽略此命名空间)。如果没有提供,将从配置的命名空间获取/更新资源规模
- `scale` (`integer`)-可选比例,用于更新资源比例。如果未提供,将返回资源的当前比例,而不进行更新




helm
- **helm_install** -安装(部署)Helm chart以在当前或提供的命名空间中创建版本


- `chart` (`string`) **(必填)** -安装图表参考(例如:stable/grafana,oci://ghcr.io/nginxinc/charts/nginx-ingress)
- `name` (`string`)Helm版本的名称(可选,若未提供,则为随机名称)
- `namespace` (`string`)-用于安装Helm chart的命名空间(可选,如果未提供,则为当前命名空间)
- `values` (`object`)-传递给Helm图表的值(可选)
- **头盔列表** -列出当前或提供的命名空间(或所有命名空间,如果指定)中的所有Helm版本


- `all_namespaces` (`boolean`)-如果为true,则列出所有命名空间中的所有Helm版本,忽略命名空间参数(可选)
- `namespace` (`string`)-列出Helm版本的命名空间(可选,如果未提供,则列出所有命名空间)
- **头盔** -在当前或提供的命名空间中卸载Helm版本


- `name` (`string`) **(必填)** -要卸载的Helm版本的名称
- `namespace` (`string`)-用于卸载Helm版本的命名空间(可选,如果未提供,则为当前命名空间)




kcp
- **kcp_workspaces_list** -列出当前群集中所有可用的kcp工作区
- **kcp_workspace_describer** -获取特定kcp工作区的详细信息


- `workspace` (`string`) **(必填)** -要描述的工作空间的名称或路径




kiali
- **kiali_mesh_graph** -返回特定命名空间的拓扑结构、运行状况、网格状态和命名空间。包括网格运行状况摘要概述,其中包含健康、降级和故障应用程序、工作负载和服务的汇总计数。用于高级概述


- `graphType` (`string`)-要返回的可选图形类型:“versionedApp”、“app”、“service”、“workload”、“mesh”
- `namespace` (`string`)-可选的单个名称空间包含在图中(名称空间的替代方案)
- `namespaces` (`string`)-可选的逗号分隔的命名空间列表,以包含在图中
- `rateInterval` (`string`)-可选的取数速率间隔(例如,“10m”、“5m”、“1h”)。
- **kiali_manage_istio_config_read** -列出或获取Istio配置对象(网关、VirtualServices等)


- `action` (`string`) **(必填)** -要执行的操作:列出或获取
- `group` (`string`)-Istio对象的API组(例如“[networking.Istio.io](http://networking.Istio.io)”、“[gateway.networking.k8s.io](http://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配置对象(网关、VirtualServices等)


- `action` (`string`) **(必填)** -要执行的操作:创建、修补或删除
- `group` (`string`)-Istio对象的API组(例如“[networking.Istio.io](http://networking.Istio.io)”、“[gateway.networking.k8s.io](http://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`)-交通方向:“入境”或“出境”。可选,默认为“出站”
- `namespace` (`string`) **(必填)** -从中获取资源的命名空间
- `quantiles` (`string`)-直方图度量的逗号分隔的分位数列表(例如,“0.5,0.95,0.99”)。可选的
- `rateInterval` (`string`)-度量的速率间隔(例如“1m”、“5m”)。可选,默认为“10m”
- `reporter` (`string`)-指标报告者:“来源”、“目的地”或“两者兼而有之”。可选,默认为“source”
- `requestProtocol` (`string`)-按请求协议过滤(例如,“http”、“grpc”、“tcp”)。可选的
- `resource_name` (`string`) **(必填)** -要获取详细信息的资源的名称(可选字符串-如果提供,则获取详细信息;如果为空,则列出所有内容)。
- `resource_type` (`string`) **(必填)** -要获取详细信息的资源类型(服务、工作负载)
- `step` (`string`)-数据点之间的步长(秒)(例如“15”)。可选,默认为15秒
- **kiali_workload_logs** -获取命名空间中特定工作负载Pod的日志。只需要命名空间和工作负载名称-自动发现Pod和容器。可选择按容器名称、时间范围和其他参数进行筛选。如果未指定,则会自动检测容器。


- `container` (`string`)-用于筛选日志的可选容器名称。如果没有提供,则自动检测并使用主应用程序容器(不包括istio-proxy和istio-init)
- `namespace` (`string`) **(必填)** -包含工作负载的命名空间
- `since` (`string`)-从中获取日志的持续时间(例如,“5m”、“1h”、“30s”)。如果未提供,则返回最近的日志
- `tail` (`integer`)-从日志末尾检索的行数(默认值:100)
- `workload` (`string`) **(必填)** -要获取日志的工作负载的名称
- **kiali_get-tracks** -获取命名空间中特定资源(应用程序、服务、工作负载)的跟踪,或通过其ID获取特定跟踪的详细信息。如果提供了traceId,它将返回详细的跟踪信息,其他参数则不需要。


- `clusterName` (`string`)-多群集环境的群集名称(可选,仅在未提供traceId时使用)
- `endMicros` (`string`)-自纪元以来的跟踪结束时间(可选,如果未提供,默认为startMicros后10分钟,仅在未提供traceId时使用)
- `limit` (`integer`)-要返回的最大跟踪数(默认值:100,仅在未提供traceId时使用)
- `minDuration` (`integer`)-最小跟踪持续时间(微秒)(可选,仅在未提供traceId时使用)
- `namespace` (`string`)-从中获取资源的命名空间。如果未提供traceId,则需要。
- `resource_name` (`string`)-要获取跟踪的资源的名称。如果未提供traceId,则需要。
- `resource_type` (`string`)-要获取跟踪的资源类型(应用程序、服务、工作负载)。如果未提供traceId,则需要。
- `startMicros` (`string`)-自纪元以来的跟踪开始时间(可选,如果未提供,默认为当前时间前10分钟,仅在未提供traceId时使用)
- `tags` (`string`)-用于过滤跟踪的JSON标记字符串(可选,仅在未提供traceId时使用)
- `traceId` (`string`)-用于检索详细信息的跟踪的唯一标识符。如果提供,这将返回详细的跟踪信息,并且不需要其他参数(resource_type、命名空间、resource_name)。




kubevirt
- **vm_clone** -通过创建VirtualMachineClone资源克隆KubeVirt虚拟机。这将使用KubeVirtual-Clone API创建具有新名称的源VM的副本


- `name` (`string`) **(必填)** -要克隆的源虚拟机的名称
- `namespace` (`string`) **(必填)** -源虚拟机的命名空间
- `targetName` (`string`) **(必填)** -新克隆虚拟机的名称
- **vm_create** -使用指定的配置在群集中创建VirtualMachine,自动解析实例类型、首选项和容器磁盘映像。默认情况下,VM将以“暂停”状态创建;使用autostart参数立即启动它。


- `autostart` (`boolean`)-创建后自动启动VM的可选标志(将runStrategy设置为Always而不是Halted)。默认为false。
- `instancetype` (`string`)-VM的可选实例类型名称(例如,“u1.small”、“u1.midge”、“u1.large”)
- `name` (`string`) **(必填)** -虚拟机的名称
- `namespace` (`string`) **(必填)** -虚拟机的命名空间
- `networks` (`array`)-连接到VM的可选辅助网络接口。每个项目都指定了一个要附加的Multus NetworkAttachmentDefinition。接受简单字符串(NetworkAttachmentDefinition名称)或具有“name”(VM中的接口名称)和“networkName”(NetworkAttachment Definition名称)属性的对象。每个网络在VM上创建一个网桥接口。
- `performance` (`string`)-VM实例类型的可选性能系列提示(例如,'u1’表示通用,'o1’表示超量使用,'c1’表示计算优化,'m1’表示内存优化)。如果未指定,则默认为“u1”(通用)。
- `preference` (`string`)-VM的可选首选项名称
- `size` (`string`)-VM的可选工作负载大小提示(例如,“小”、“中”、“大”、“xlarge”)。如果没有明确指定,则用于自动选择适当的实例类型。
- `storage` (`string`)-使用DataSources时,VM根磁盘的可选存储大小(例如,“30Gi”、“50Gi”和“100Gi”)。默认为30Gi。使用容器磁盘时忽略。
- `workload` (`string`)VM的工作负载。接受操作系统名称(例如,“fedora”(默认)、“ubuntu”、“centos”、“centros stream”、“debian”、“rhel”、“opensuse”、“opensuse tumblewed”、“opensuse leap”)或全容器磁盘映像URL
- **vm_lifecycle** -管理虚拟机生命周期:启动、停止或重新启动虚拟机


- `action` (`string`) **(必填)** -要执行的生命周期操作:“start”(将runStrategy更改为Always)、“stop”(将run Strategy更改成Halted)或“restart”(停止然后启动VM)
- `name` (`string`) **(必填)** -虚拟机的名称
- `namespace` (`string`) **(必填)** -虚拟机的命名空间




tekton
- **泰克通_管道_启动** -通过创建引用Tekton Pipeline的PipelineRun来启动它


- `name` (`string`) **(必填)** -要启动的管道名称
- `namespace` (`string`)-管道命名空间
- `params` (`object`)-传递给管道的参数值。键是参数名称;值可以是字符串、字符串数组或对象(字符串到字符串的映射),具体取决于Pipeline规范中定义的参数类型
- **tekton_pipelinerun_重新启动** -通过创建具有相同规格的新PipelineRun来重新启动Tekton PipelineRun


- `name` (`string`) **(必填)** -要重新启动的PipelineRun的名称
- `namespace` (`string`)-PipelineRun的命名空间
- **tekton_task_start** -通过创建引用Tekton任务的TaskRun来启动该任务


- `name` (`string`) **(必填)** -要启动的任务的名称
- `namespace` (`string`)-任务的命名空间
- `params` (`object`)-传递给任务的参数值。键是参数名称;值可以是字符串、字符串数组或对象(字符串到字符串的映射),具体取决于任务规范中定义的参数类型
- **tekton_taskrun_restart** -通过创建具有相同规范的新TaskRun来重新启动Tekton TaskRun


- `name` (`string`) **(必填)** -要重新启动的TaskRun的名称
- `namespace` (`string`)-TaskRun的命名空间
- **tekton_taskrun_logs** -通过解析Tekton TaskRun的底层pod来获取其日志


- `name` (`string`) **(必填)** -从中获取日志的TaskRun的名称
- `namespace` (`string`)-TaskRun的命名空间
- `tail` (`integer`)-从日志末尾检索的行数(可选,默认值:100)




### 提示




core
- **群集健康检查** -对Kubernetes/OpenShift集群进行全面的健康评估

- `namespace` (`string`)-用于限制健康检查范围的可选命名空间(默认值:所有命名空间)
- `check_events` (`string`)-包括最近的警告/错误事件(真/假,默认值:真)




kubevirt
- **虚拟机故障排除** -生成诊断VirtualMachine问题的分步故障排除指南

- `namespace` (`string`) **(必填)** -要排除故障的VirtualMachine的命名空间
- `name` (`string`) **(必填)** -要排除故障的虚拟机的名称




## Helm 图表


A. [Helm 图表](https://helm.sh) 可用于简化Kubernetes MCP服务器的部署。


SHELL```
1helm install kubernetes-mcp-server oci://ghcr.io/containers/charts/kubernetes-mcp-server

有关包括OAuth、遥测和资源限制在内的配置选项,请参阅 图表自述 和 values.yaml.

💬 社区

加入对话并与其他用户和贡献者联系:

  • Slack -在中提问、分享反馈和讨论Kubernetes MCP服务器 #kubernetes-mcp-server CNCF Slack工作区上的频道。如果你还不是会员,你可以 请求邀请.

🧑‍💻 发展

与mcp检查员一起运行

编译项目并运行Kubernetes MCP服务器 mcp检查员 检查MCP服务器。

SHELL``` 1 2 3 4# Compile the project make build

Run the Kubernetes MCP server with mcp-inspector

npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server



---


mcp名称:io.github.containers/kubernes-mcp-server