多集群Kubernetes MCP服务器
](https://smithery.ai/server/@razvanmacovei/k8s-multicluster-mcp)  
用于同时管理多个Kubernetes集群的MCP(模型上下文协议)服务器。提供 60+工具 涵盖集群操作、资源管理、监控、RBAC、存储、网络等,所有这些都可以通过Claude Desktop等人工智能助手访问。
快速开始
通过Smithery安装
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
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python3 app.py
码头工人
docker build -t k8s-mcp .
docker run -v ~/.kube:/root/.kube k8s-mcp
配置
克劳德桌面/MCP客户端
添加到MCP客户端配置中:
{
"mcpServers": {
"kubernetes": {
"command": "python3",
"args": ["/path/to/k8s-multicluster-mcp/app.py"],
"env": {
"KUBECONFIG_DIR": "/path/to/your/kubeconfigs"
}
}
}
}
环境变量
| 变量 | 默认值 | 描述 |
|---|
KUBECONFIG_DIR | ~/.kube | 包含kubeconfig文件的目录。每个文件可以包含一个或多个上下文。 |
将kubeconfig文件放在配置的目录中。服务器会自动发现所有文件中的所有上下文。
先决条件
- Python 3.11或更高版本
- 一个或多个具有有效集群凭据的kubeconfig文件
metrics-server 已安装在集群中 k8s_top_* 和 k8s_cluster_info 工具
多集群管理
此服务器是专门为管理多个Kubernetes集群而构建的:
- 自动发现:扫描中的所有kubeconfig文件
KUBECONFIG_DIR 并聚合上下文 - 部分名称匹配:使用
prod 而不是 arn:aws:eks:us-east-1:123456:cluster/prod-cluster - 跨集群操作:跨集群比较资源、运行状况和配置
- 上下文缓存:高效的30秒TTL缓存避免了每次调用时重新读取kubeconfig文件
- 集中管理:从单个界面管理开发、暂存和生产
工具参考(60+工具)
集群和上下文管理(6个工具)
| 工具 | 说明 |
|---|
k8s_get_contexts | 列出所有kubeconfig文件中的所有可用上下文 |
k8s_get_namespaces | 列出群集中的所有命名空间 |
k8s_create_ns | 使用可选标签/注释创建新的命名空间 |
k8s_delete_ns | 删除命名空间(保护系统命名空间) |
k8s_get_nodes | 列出所有节点的状态、角色、容量和版本 |
k8s_cluster_info | 全面的集群运行状况摘要(节点、Pod、部署、警告) |
资源发现和检查(7个工具)
| 工具 | 说明 |
|---|
k8s_get_resources | 列出任何类型的资源(Pod、部署、服务、入口等) |
k8s_get_resource | 获取单个资源的完整定义 |
k8s_get_pod_logs | 通过持续时间过滤和容器选择获取pod日志 |
k8s_get_events | 列出命名空间中的集群事件,按最新事件排序 |
k8s_describe | 详细的资源描述类似于 kubectl describe |
k8s_apis | 列出群集中所有可用的API组和资源 |
k8s_crds | 列出所有自定义资源定义及其版本和范围 |
度量与监控(3个工具)
| 工具 | 说明 |
|---|
k8s_top_nodes | 显示节点CPU/内存使用情况以及容量 |
k8s_top_pods | 显示吊舱/容器CPU/内存使用情况 |
k8s_diagnose_application | 全面的应用程序诊断,包括问题检测和建议 |
推出管理(6个工具)
| 工具 | 说明 |
|---|
k8s_rollout_status | 获取部署/状态集/守护进程启动的推出状态 |
k8s_rollout_history | 获取修订历史记录 |
k8s_rollout_undo | 回滚到以前的版本 |
k8s_rollout_restart | 触发滚动重启 |
k8s_rollout_pause | 暂停正在进行的卷展 |
k8s_rollout_resume | 恢复暂停的卷展 |
缩放(3个工具)
| 工具 | 说明 |
|---|
k8s_scale_resource | 将部署/状态集/复制集扩展到N个副本 |
k8s_autoscale_resource | 配置水平吊舱自动缩放器(HPA) |
k8s_update_resources | 更新容器的CPU/内存请求和限制 |
资源CRUD(6个工具)
| 工具 | 说明 |
|---|
k8s_create_resource | 从YAML/JSON内容创建资源 |
k8s_apply_resource | 应用配置(创建或更新,如 kubectl apply) |
k8s_delete_resource | 删除任何具有可选强制/宽限期的资源类型 |
k8s_patch_resource | 使用战略合并补丁更新特定字段 |
k8s_label_resource | 添加或更新资源上的标签 |
k8s_annotate_resource | 添加或更新资源上的注释 |
工作量管理(3个工具)
| 工具 | 说明 |
|---|
k8s_expose_resource | 将部署/吊舱作为新服务公开 |
k8s_run_pod | 创建并运行具有指定映像的pod |
k8s_set_resources_for_container | 为容器设置资源限制/请求 |
节点管理(5个工具)
| 工具 | 说明 |
|---|
k8s_cordon_node | 将节点标记为不可调度 |
k8s_uncordon_node | 将节点标记为可调度 |
k8s_drain_node | 通过驱逐Pod来排空节点(用于维护) |
k8s_taint_node | 向节点添加污点 |
k8s_untaint_node | 从节点中删除污点 |
吊舱操作(1个工具)
| 工具 | 说明 |
|---|
k8s_pod_exec | 在容器中执行命令(支持引用参数) |
机密和配置映射(6个工具)
| 工具 | 说明 |
|---|
k8s_list_secret | 列出带有元数据的机密(为安全起见隐藏值) |
k8s_get_secret_detail | 获取一个秘密;可选解码值 |
k8s_create_secret_resource | 创建新密钥(自动base64编码值) |
k8s_list_configmap | 列出带有密钥名称的ConfigMap |
k8s_get_configmap_detail | 获取包含完整数据内容的ConfigMap |
k8s_create_configmap_resource | 创建新的ConfigMap |
RBAC(5个工具)
| 工具 | 说明 |
|---|
k8s_get_roles | 列出具有权限规则的RBAC角色 |
k8s_get_clusterroles | 列出RBAC集群角色 |
k8s_get_rolebindings | 列出角色清单(谁扮演什么角色) |
k8s_get_clusterrolebindings | 列出集群角色组合 |
k8s_get_service_accounts | 列出服务帐户 |
存储(3个工具)
| 工具 | 说明 |
|---|
k8s_get_pvcs | 列出持久卷索赔,包括状态、容量和存储类别 |
k8s_get_pvs | 列出具有容量和约束声明的持久卷 |
k8s_get_storage_classes | 列出带有配置符和默认状态的StorageClasses |
网络(1个工具)
| 工具 | 说明 |
|---|
k8s_get_network_policies | 列出带有pod选择器和规则计数的网络策略 |
作业管理(2个工具)
| 工具 | 说明 |
|---|
k8s_get_jobs | 列出作业及其完成状态和时间 |
k8s_get_cronjobs | 列出CronJobs及其计划、挂起状态和上次运行时间 |
使用示例
群集运行状况检查
Give me a health overview of my production cluster.
多集群比较
Compare the number of pods running in the 'backend' namespace between my 'prod' and 'staging' contexts.
诊断应用程序问题
My deployment 'my-app' in the 'production' namespace is having issues. Can you diagnose what's wrong?
规模资源
Scale the 'backend' deployment in the 'default' namespace to 5 replicas.
资源管理
Delete the failed job 'data-migration-v1' in the 'batch' namespace.
Create a new namespace called 'staging' with the label environment=staging.
秘密管理
List all secrets in the 'production' namespace and show me the keys in the 'api-credentials' secret.
RBAC检查
Show me all role bindings in the 'default' namespace -- who has access to what?
存储概述
List all PVCs in the cluster and show which ones are Pending.
节点维护
Cordon node 'worker-3', drain it ignoring DaemonSets, then uncordon when maintenance is complete.
回滚部署
Roll back the 'api-gateway' deployment in the 'services' namespace to the previous version.
在Pod中执行
Run 'ls -la /app/config' inside the 'app' container of pod 'web-app-xyz' in the 'default' namespace.
创建资源
Create a new deployment with this YAML:
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.27
ports:
- containerPort: 80
建筑
k8s-multicluster-mcp/
├── app.py # MCP server entry point & tool registration
├── src/
│ ├── utils/
│ │ ├── k8s_client.py # Multi-cluster client with context caching
│ │ └── pluralize.py # Kubernetes resource kind pluralization
│ └── tools/
│ ├── contexts.py # Context listing
│ ├── namespaces.py # Namespace listing
│ ├── namespace_management.py # Namespace create/delete
│ ├── nodes.py # Node listing
│ ├── pods.py # Resource listing & pod logs
│ ├── resources.py # Single resource retrieval
│ ├── events.py # Event listing
│ ├── describe.py # kubectl describe equivalent
│ ├── api_discovery.py # API & CRD discovery
│ ├── metrics.py # Node/pod metrics (top)
│ ├── diagnosis.py # Application diagnostics
│ ├── cluster_health.py # Cluster health summary
│ ├── rollouts.py # Rollout management
│ ├── scaling.py # Scale & autoscale & resource updates
│ ├── resource_management.py # Create, apply, patch, label, annotate
│ ├── delete_resource.py # Resource deletion
│ ├── workload_management.py # Expose, run pod, set resources
│ ├── node_management.py # Cordon, drain, taint
│ ├── pod_operations.py # Exec into pods
│ ├── secret_configmap.py # Secret & ConfigMap management
│ ├── rbac.py # Roles, bindings, service accounts
│ ├── storage_network.py # PVC, PV, StorageClass, NetworkPolicy
│ └── job_management.py # Jobs & CronJobs
├── requirements.txt
├── pyproject.toml
├── Dockerfile
└── smithery.yaml
v2.0.0的新增功能
- 20+新工具:资源删除、命名空间管理、机密和配置、RBAC检查、存储和网络可见性、作业管理、集群健康摘要、pod创建
- 错误修复:固定资源多元化(例如。,
Ingress -> ingresses 不 ingresss),修复了pod exec命令拆分以处理引用参数,修复了超时参数处理 - 演出:上下文发现现在使用具有直接上下文到文件映射的30秒TTL缓存,消除了冗余的文件扫描
- 改进了工具描述:所有60+工具都有详细的描述,以更好地集成人工智能助手
- 依赖关系清理:删除未使用的
fastapi 和 uvicorn 依赖项 - 安全:命名空间删除保护系统命名空间;默认情况下隐藏的秘密值
贡献
欢迎投稿!请随时提交拉取请求。