返回市场
kubernetes服务器

kubernetes服务器

作者:feiskyer12 星标更新:2025-11-17

项目介绍

mcp-kubernetes-server

PyPI 版本 许可证 构建状态

mcp-kubernetes-server 是一个实现模型上下文协议(MCP)的服务器,使AI助手(如Claude、Cursor和GitHub Copilot)能够与Kubernetes集群进行交互。它充当桥梁,将这些助手的自然语言请求转换为Kubernetes操作,并返回结果。

它允许AI助手:

  • 查询Kubernetes资源
  • 执行kubectl命令
  • 通过自然语言交互管理Kubernetes集群
  • 诊断并解释Kubernetes资源的状态

工作原理

mcp-kubernetes-server 在支持模型上下文协议的AI助手和您的Kubernetes集群之间充当中介。它接收来自这些助手的自然语言请求,将其翻译成kubectl命令或直接调用Kubernetes API,并针对目标集群执行它们。然后,服务器处理结果并返回结构化的响应,从而实现通过AI助手无缝地与您的Kubernetes环境互动。

安装方法

先决条件

在安装mcp-kubernetes-server之前,请确保您拥有以下内容:

  • 正常工作的Kubernetes集群。
  • 正确配置以访问您的Kubernetes集群的kubeconfig文件(服务器需要此文件进行交互)。
  • 安装并添加到系统PATH中的kubectl命令行工具(服务器用于执行许多Kubernetes命令)。
  • 安装并添加到系统PATH中的helm命令行工具(服务器用于Helm图表操作)。
  • 如果计划使用uvx直接安装和运行服务器(不使用Docker),则需要Python >= 3.11。

Docker

获取您的Kubernetes集群的kubeconfig文件,并设置在mcpServers中(替换源路径为您自己的kubeconfig路径):

{
  "mcpServers": {
    "kubernetes": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=/home/username/.kube/config,dst=/home/mcp/.kube/config",
        "ghcr.io/feiskyer/mcp-kubernetes-server"
      ]
    }
  }
}

UVX

要使用uvx(包含在Python打包器uv中的工具)运行服务器,请首先确保已安装uv

<details> <summary>安装uv</summary>

如果尚未安装uv,请安装并将其添加到您的PATH中,例如使用curl:

# 对于Linux和MacOS
curl -LsSf https://astral.sh/uv/install.sh | sh
</details> <details> <summary>安装kubectl</summary>

如果尚未安装kubectl,请安装并将其添加到您的PATH中,例如:

# 对于Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# 对于MacOS
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
</details> <details> <summary>安装helm</summary>

如果尚未安装helm,请安装并将其添加到您的PATH中,例如:

curl -sSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
</details> <br/>

Claude DesktopCursorChatGPT CopilotGitHub Copilot和其他支持的AI客户端中配置您的MCP服务器,例如:

{
  "mcpServers": {
    "kubernetes": {
      "command": "uvx",
      "args": [
        "mcp-kubernetes-server"
      ],
      "env": {
        "KUBECONFIG": "<your-kubeconfig-path>"
      }
    }
  }
}

MCP服务器选项

<details> <summary>环境变量</summary>

环境变量:

  • KUBECONFIG:指向您的kubeconfig文件的路径,例如/home/<username>/.kube/config
</details> <details> <summary>命令行参数</summary>

命令行参数:

usage: main.py [-h] [--disable-kubectl] [--disable-helm] [--disable-write]
               [--disable-delete] [--transport {stdio,sse,streamable-http}]
               [--host HOST] [--port PORT]

MCP Kubernetes Server

选项:
  -h, --help            显示帮助信息并退出
  --disable-kubectl     禁用kubectl命令执行
  --disable-helm        禁用helm命令执行
  --disable-write       禁用写操作
  --disable-delete      禁用删除操作
  --transport {stdio,sse,streamable-http}
                        使用的传输机制(stdio或sse或streamable-http)
  --host HOST           用于sse或streamable-http服务器的主机
  --port PORT           用于sse或streamable-http服务器的端口
</details>

使用方法

一旦mcp-kubernetes-server安装并配置在您的AI客户端中(使用“如何安装”部分提供的Docker或UVX的JSON片段),您就可以开始通过自然语言与您的Kubernetes集群进行交互。例如,您可以询问:

我的Kubernetes集群的状态是什么?

我的nginx pod出了什么问题?

验证服务器: 如果您使用stdio传输运行服务器(常见于uvx直接执行),AI客户端通常会启动并管理服务器进程。对于ssestreamable-http传输,服务器独立运行。您应该手动启动它(例如,uvx mcp-kubernetes-server --transport sse),并在终端中看到表示其正在运行的消息(例如,INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit))。如果AI客户端无法连接,您还可以检查服务器终端中的任何错误消息。

可用工具

mcp-kubernetes-server 提供了一整套与Kubernetes集群交互的工具,按操作类型分类:

<details> <summary>命令工具</summary>

命令工具

这些工具提供了通用命令执行能力:

工具描述参数
kubectl运行任何kubectl命令并返回输出command (字符串)
helm运行任何helm命令并返回输出command (字符串)
</details> <details> <summary>读取工具</summary>

读取工具

这些工具提供了对Kubernetes资源的只读访问:

工具描述参数
k8s_get获取任何Kubernetes对象(或列表)作为JSON字符串resource (字符串), name (字符串), namespace (字符串)
k8s_describe显示特定资源或一组资源的详细信息resource_type (字符串), name (字符串, 可选), namespace (字符串, 可选), selector (字符串, 可选), all_namespaces (布尔值, 可选)
k8s_logs打印pod中容器的日志pod_name (字符串), container (字符串, 可选), namespace (字符串, 可选), tail (整数, 可选), previous (布尔值, 可选), since (字符串, 可选), timestamps (布尔值, 可选), follow (布尔值, 可选)
k8s_events列出集群中的事件namespace (字符串, 可选), all_namespaces (布尔值, 可选), field_selector (字符串, 可选), resource_type (字符串, 可选), resource_name (字符串, 可选), sort_by (字符串, 可选), watch (布尔值, 可选)
k8s_apis列出Kubernetes集群中的所有可用API
k8s_crds列出Kubernetes集群中的所有自定义资源定义(CRDs)
k8s_top_nodes显示节点的资源使用情况(CPU/内存)sort_by (字符串, 可选)
k8s_top_pods显示pod的资源使用情况(CPU/内存)namespace (字符串, 可选), all_namespaces (布尔值, 可选), sort_by (字符串, 可选), selector (字符串, 可选)
k8s_rollout_status获取部署、守护集或有状态集的滚动更新状态resource_type (字符串), name (字符串), namespace (字符串, 可选)
k8s_rollout_history获取部署、守护集或有状态集的滚动更新历史resource_type[...继续翻译...]