mcp-kubernetes-server 是一个实现模型上下文协议(MCP)的服务器,使AI助手(如Claude、Cursor和GitHub Copilot)能够与Kubernetes集群进行交互。它充当桥梁,将这些助手的自然语言请求转换为Kubernetes操作,并返回结果。
它允许AI助手:
mcp-kubernetes-server 在支持模型上下文协议的AI助手和您的Kubernetes集群之间充当中介。它接收来自这些助手的自然语言请求,将其翻译成kubectl命令或直接调用Kubernetes API,并针对目标集群执行它们。然后,服务器处理结果并返回结构化的响应,从而实现通过AI助手无缝地与您的Kubernetes环境互动。

在安装mcp-kubernetes-server之前,请确保您拥有以下内容:
kubeconfig文件(服务器需要此文件进行交互)。kubectl命令行工具(服务器用于执行许多Kubernetes命令)。helm命令行工具(服务器用于Helm图表操作)。uvx直接安装和运行服务器(不使用Docker),则需要Python >= 3.11。获取您的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(包含在Python打包器uv中的工具)运行服务器,请首先确保已安装uv:
如果尚未安装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 Desktop、Cursor、ChatGPT Copilot、GitHub Copilot和其他支持的AI客户端中配置您的MCP服务器,例如:
{
"mcpServers": {
"kubernetes": {
"command": "uvx",
"args": [
"mcp-kubernetes-server"
],
"env": {
"KUBECONFIG": "<your-kubeconfig-path>"
}
}
}
}
环境变量:
KUBECONFIG:指向您的kubeconfig文件的路径,例如/home/<username>/.kube/config。命令行参数:
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客户端通常会启动并管理服务器进程。对于sse或streamable-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集群交互的工具,按操作类型分类:
这些工具提供了通用命令执行能力:
| 工具 | 描述 | 参数 |
|---|---|---|
| kubectl | 运行任何kubectl命令并返回输出 | command (字符串) |
| helm | 运行任何helm命令并返回输出 | command (字符串) |
这些工具提供了对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[...继续翻译...] |