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 如果您需要完整的类型验证,请单独进行。
许可证
麻省理工学院