Kubernetes集群管理工具

一个通过Model Context Protocol为Claude等客户端提供Kubernetes集群和Helm全面访问权限的服务,包含73种工具,涵盖Pods、Deployments、Services、Config、Secrets、Events、Logs、Exec、Port-forwarding、Manifest应用/删除、Helm生命周期管理等功能。

  • by Stonepusher
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Stonepusher/kubernetes-mcp

使用说明

kubernetes mcp

A. 模型上下文协议 允许Claude(或任何MCP客户端)完全访问Kubernetes集群和Helm的服务器。暴露 73工具 涵盖Pod、部署、服务、配置、机密、事件、日志、exec、端口转发、清单应用/删除、Helm生命周期管理、节点、工作负载、存储、入口、批处理作业、推出、RBAC、kubeconfig上下文、指标、HPA和CRD。

先决条件

安装

git clone https://github.com/Stonepusher/kubernetes-mcp.git
cd kubernetes-mcp
npm install
npm run build

使用Claude代码

A. .mcp.json 包含在repo根目录中。当您在Claude Code中打开项目目录时 kubernetes 服务器已自动注册。跑 /mcp 在Claude Code内部确认其处于活动状态,然后自然地与Claude交谈:

“列出默认命名空间中的所有Pod” “将echo服务器部署扩展到3个副本” “显示nginx pod的日志” “在staging命名空间中安装bitnami/nnginx作为我的版本” “此群集中安装了哪些CRD?” “显示所有ClusterRoles及其规则计数”

手动注册

要全局注册服务器(在此目录之外),请将以下内容添加到您的Claude Code MCP设置中:

{
  "mcpServers": {
    "kubernetes": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/kubernetes-mcp/dist/index.js"]
    }
  }
}

工具

Kubernetes——核心资源

工具 说明
k8s_list_namespaces 列出所有命名空间
k8s_list_pods 在命名空间中列出Pod(可选标签选择器)
k8s_get_pod 获取pod的完整细节
k8s_list_deployments 列出命名空间中的部署
k8s_get_deployment 获取部署的完整详细信息
k8s_scale_deployment 将部署扩展到N个副本
k8s_list_services 在命名空间中列出服务
k8s_get_service 获取服务的完整详细信息
k8s_list_configmaps 在命名空间中列出ConfigMaps
k8s_get_configmap 获取包含其数据的ConfigMap
k8s_list_secrets 在命名空间中列出机密(仅限名称/类型)
k8s_get_secret 获取机密(值采用base64编码)
k8s_get_events 获取命名空间中的事件,可选择按对象名称筛选

Kubernetes——操作

工具 说明
k8s_get_pod_logs 从吊舱容器中流出原木或尾原木
k8s_exec 在运行的pod中执行命令
k8s_port_forward_start 启动通往吊舱的本地端口前向隧道
k8s_port_forward_list 列出活动端口转发会话
k8s_port_forward_stop 停止端口转发会话
k8s_apply_manifest 应用YAML/JSON清单(kubectl apply -f -)
k8s_delete_manifest 删除清单中定义的资源
k8s_delete_resource 按类型、名称和命名空间删除任何资源(不需要清单)

Kubernetes——节点

工具 说明
k8s_list_nodes 列出所有具有状态、角色和版本信息的节点
k8s_get_node 获取节点的完整详细信息
k8s_cordon_node 封锁节点以防止新的pod调度
k8s_uncordon_node 打开节点以重新启用pod调度
k8s_drain_node 通过驱逐所有Pod来清空节点

Kubernetes——工作负载

工具 说明
k8s_list_daemonsets 在命名空间中列出DaemonSet
k8s_get_daemonset 获取DaemonSet的完整详细信息
k8s_list_statefulsets 在命名空间中列出StatefulSets
k8s_get_statefulset 获取StatefulSet的完整详细信息

Kubernetes——批处理

工具 说明
k8s_list_jobs 在命名空间中列出作业
k8s_get_job 获取工作的完整详细信息
k8s_list_cronjobs 在命名空间中列出CronJobs
k8s_get_cronjob 获取CronJob的完整详细信息
k8s_suspend_cronjob 暂停CronJob以停止其调度新作业
k8s_resume_cronjob 恢复已暂停的CronJob

Kubernetes——推出

工具 说明
k8s_rollout_restart 触发部署、DaemonSet或StatefulSet的滚动重启
k8s_rollout_status 检查推出状态并等待完成
k8s_rollout_undo 回滚到以前的版本

Kubernetes——存储

工具 说明
k8s_list_persistent_volumes 列出所有持久卷
k8s_get_persistent_volume 获取持久卷的完整详细信息
k8s_list_persistent_volume_claims 在命名空间中列出持久卷声明
k8s_get_persistent_volume_claim 获取持久卷索赔的完整详细信息
k8s_list_storage_classes 列出所有存储类
k8s_get_storage_class 获取StorageClass的完整详细信息

Kubernetes——网络

工具 说明
k8s_list_ingresses 在命名空间中列出Ingress
k8s_get_ingress 获取Ingress的完整细节

Kubernetes——自动伸缩

工具 说明
k8s_list_hpas 在命名空间中列出水平播客自动缩放器
k8s_get_hpa 获取HorizontalPodAutoscaler的完整详细信息

Kubernetes——RBAC

工具 说明
k8s_list_cluster_roles 列出所有集群角色
k8s_get_cluster_role 获取ClusterRole的完整详细信息
k8s_list_cluster_role_bindings 列出所有ClusterRoleBinding
k8s_get_cluster_role_binding 获取ClusterRoleBinding的完整详细信息
k8s_list_roles 列出命名空间中的角色
k8s_get_role 获取角色的完整详细信息
k8s_list_role_bindings 在命名空间中列出角色绑定
k8s_get_role_binding 获取RoleBinding的完整详细信息

Kubernetes——自定义资源

工具 说明
k8s_list_crds 列出所有自定义资源定义
k8s_get_crd 获取CustomResourceDefinition的完整详细信息

Kubernetes——上下文和指标

工具 说明
k8s_list_contexts 列出所有kubeconfig上下文并显示哪个处于活动状态
k8s_use_context 切换活动kubeconfig上下文
k8s_top_nodes 显示所有节点的CPU/内存使用情况(需要指标服务器)
k8s_top_pods 显示命名空间中Pod的CPU/内存使用情况(需要指标服务器)

舵

工具 说明
helm_list 列表发布(单个名称空间或全部)
helm_install 安装图表
helm_upgrade 升级(或安装)版本
helm_rollback 将版本回滚到以前的版本
helm_uninstall 卸载版本
helm_get_values 获取已安装版本的值
helm_history 获取版本的修订历史记录
helm_show_chart_values 安装前显示图表的默认值
helm_repo_add 添加Helm图表存储库
helm_repo_update 更新本地Helm存储库缓存

发展

npm run build      # compile TypeScript → dist/index.js via esbuild
npm run dev        # rebuild on file changes
npm run typecheck  # tsc --noEmit (type-check only, no emit)
npm test           # smoke test — exercises all 73 tools against a live cluster

烟雾测试

npm test 跑 test/smoke-test.mjs,它通过stdio生成MCP服务器,并对当前配置的集群使用所有只读工具。它动态地发现真实的资源名称(没有硬编码的名称),并在找不到资源时优雅地跳过依赖测试。写入操作(k8s_rollout_restart, k8s_use_context等等)被硬跳过。

Kubernetes MCP Server — Smoke Test
==================================================

── Phase 1: Handshake ──────────────────────────────────────
  [PASS] initialize — serverInfo.name === "kubernetes"

── Phase 2: Tool inventory ─────────────────────────────────
  [PASS] tools/list — count === 73

── Phase 3: Tool assertions ────────────────────────────────
  [PASS] k8s_list_namespaces — returns non-empty array
  [PASS] k8s_list_pods — non-empty array in kube-system
  ...
==================================================
Results  (7.3s elapsed)
  Passed : 55
  Failed : 0
  Skipped: 10

构建笔记

@kubernetes/client-node v1.x提供了约54 MB生成的TypeScript类型,这些类型对TypeScript编译器进行了OOM处理。该项目使用 esbuild 捆绑到单个CJS文件(dist/index.js)没有类型检查开销。使用 npm run typecheck 如果您需要完整的类型验证,请单独进行。

许可证

麻省理工学院