这是一个用于 Kubernetes 操作的 MCP(模型上下文协议)服务器应用程序,提供了一个标准化的 API,可以使用多个 kubeconfig 文件同时与多个 Kubernetes 集群进行交互。
在您的 MCPO 服务器的 config.json 文件中添加以下配置(例如,在 Claude Desktop 中):
{
"mcpServers": {
"kubernetes": {
"command": "python3",
"args": ["/path/to/k8s-multicluster-mcp/app.py"],
"env": {
"KUBECONFIG_DIR": "/path/to/your/kubeconfigs"
}
}
}
}
将
/path/to/your/kubeconfigs替换为您实际的 kubeconfig 文件目录路径。
服务器期望您指定的目录中放置多个 kubeconfig 文件。每个 kubeconfig 文件代表一个不同的 Kubernetes 集群,您可以与其进行交互。
要通过 Smithery 自动安装 Claude Desktop 的多集群 Kubernetes 服务器:
npx -y @smithery/cli install @razvanmacovei/k8s-multicluster-mcp --client claude
克隆仓库
git clone https://github.com/razvanmacovei/k8s-multicluster-mcp.git
cd k8s-multicluster-mcp
创建虚拟环境
# 使用 venv(内置)
python3 -m venv .venv
# 激活虚拟环境
# 在 Windows 上
.venv\Scripts\activate
# 在 macOS/Linux 上
source .venv/bin/activate
安装依赖项
# 使用 pip
pip install -r requirements.txt
# 或者使用 uv(更快)
uv pip install -r requirements.txt
配置您的环境
KUBECONFIG_DIR 环境变量指向您的 kubeconfig 目录运行应用程序
python3 app.py
此 MCP 服务器专门设计用于处理多个 Kubernetes 集群:
KUBECONFIG_DIR 指定的目录中Kubernetes MCP 服务器提供了与 Kubernetes 集群交互的一整套工具:
kubectl describe这里有一些如何使用 Kubernetes MCP 服务器与 AI 助手的例子:
列出我所有 kubeconfig 文件中的可用上下文。
比较我的 'prod' 和 'staging' 上下文中 'backend' 命名空间运行的 pod 数量。
显示我 'dev' 和 'prod' 集群中所有节点的资源使用情况。
我在 'production' 命名空间有一个名为 'my-app' 的部署,它有问题。你能检查一下吗?
我需要将 'default' 命名空间中的 'backend' 部署缩放到 5 个副本。
显示我集群中节点的资源使用情况。
我的 'web' 命名空间中的 'web-app' 应用程序遇到了 OOM 问题。你能将 'app' 容器的内存限制增加到 512Mi 吗?
我需要将 'services' 命名空间中的 'api-gateway' 部署回滚到上一个版本。
我的 Kubernetes 集群中有哪些可用的 API?
你能描述 'default' 命名空间中的 'my-pod' pod 吗?
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 10
将 'default' 命名空间中的 'backend' 部署暴露为服务,目标端口 8080,服务端口 80。
在 'default' 命名空间中的 'web-app-1234' pod 的 'app' 容器中执行命令 'ls -la /app'。
我需要对节点 'worker-1' 进行维护,请将其标记为不可调度,然后排空它,完成工作后再取消标记。
应用此配置以更新我现有的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: existing-deployment
namespace: default
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: myapp:v2
补丁 'default' 命名空间中的 'my-configmap' ConfigMap,添加新的键 'NEW_SETTING',值为 'enabled'。
在 'backend' 命名空间中的 'api' 部署上添加标签 'environment=production'。
服务器实现了以下 MCP 工具:
k8s_get_contexts: 列出所有可用的 Kubernetes 上下文k8s_get_namespaces: 列出指定上下文中的所有命名空间k8s_get_nodes: 列出集群中的所有节点k8s_get_resources: 列出指定类型的资源k8s_get_resource: 获取特定资源的详细信息k8s_get_pod_logs: 获取特定 pod 的日志k8s_describe: 显示特定资源或一组资源的详细信息k8s_apis: 列出 Kubernetes 集群中的所有可用 APIk8s_crds: 列出集群中的所有自定义资源定义(CRD)k8s_top_nodes: 显示节点的资源使用情况k8s_top_pods: 显示 pod 的资源使用情况k8s_rollout_status: 获取回滚的状态k8s_rollout_history: 获取回滚的修订历史k8s_rollout_undo: 回滚到之前的修订k8s_rollout_restart: 重新启动回滚k8s_rollout_pause: 暂停回滚k8s_rollout_resume: 恢复暂停的回滚k8s_scale_resource: 将资源缩放到指定数量的副本k8s_autoscale_resource: 配置水平 pod 自动扩展器(HPA)k8s_update_resources: 更新资源请求和限制k8s_diagnose_application: 诊断应用的问题k8s_create_resource: 从 YAML/JSON 内容创建 Kubernetes 资源k8s_apply_resource: 应用配置到资源(创建或更新)k8s_patch_resource: 更新资源的字段k8s_label_resource: 更新资源上的标签k8s_annotate_resource: 更新资源上的注解k8s_expose_resource: 将资源暴露为新的 Kubernetes 服务k8s_set_resources_for_container: 设置容器的资源限制和请求k8s_cordon_node: 将节点标记为不可调度k8s_uncordon_node: 将节点标记为可调度k8s_drain_node: 排空节点以准备维护k8s_taint_node: 更新节点的污点k8s_untaint_node: 移除节点的污点k8s_pod_exec: 在容器中执行命令欢迎贡献!请随时提交拉取请求。