K8s MCP服务器
K8s MCP Server是一个基于Docker的服务器,实现 Anthropic模型上下文协议(MCP) 使Claude能够运行Kubernetes CLI工具(kubectl, istioctl, helm, argocd)在安全的容器化环境中。
演示:部署WordPress并排除故障
第1节: 使用k8s mcp服务器和Helm CLI在claude-demo命名空间中部署WordPress应用程序,然后通过将MariaDB StatefulSet扩展为零来故意破坏它。
第2节: 故障排除会话,我们使用k8s mcp服务器通过kubectl命令诊断损坏的WordPress站点,识别缺失的数据库问题,并通过扩展StatefulSet和配置ingress访问来修复它。.
运作原理
MERMAID``` 1 2 3 4 5 6 7flowchart LR A[User] —> |Asks K8s question| B[Claude] B —> |Sends command via MCP| C[K8s MCP Server] C —> |Executes kubectl, helm, etc.| D[Kubernetes Cluster] D —> |Returns results| C C —> |Returns formatted results| B B —> |Analyzes & explains| A
Claude可以通过以下方式帮助用户:
- 解释复杂的Kubernetes概念
- 对集群运行命令
- 故障排除问题
- 建议优化
- 制作Kubernetes清单
## Claude Desktop快速入门
让Claude在2分钟内帮助您处理Kubernetes集群:
1. **创建或更新您的Claude Desktop配置文件**:
- **macOS**:编辑 `$HOME/Library/Application Support/Claude/claude_desktop_config.json`
- **视窗**:编辑 `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**:编辑 `$HOME/.config/Claude/claude_desktop_config.json`
JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"mcpServers": {
"kubernetes": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro",
"ghcr.io/alexei-led/k8s-mcp-server:latest"
]
}
}
}
- 重新启动克劳德桌面
- 重新启动后,您将看到“工具”图标(🔨) 在输入字段的右下角
- 这表明Claude现在可以通过MCP服务器访问K8s工具
- 直接在Claude Desktop中开始使用K8s工具:
- “我有哪些可用的Kubernetes上下文?”
- “显示默认命名空间中的所有Pod”
- “使用nginx的3个副本创建部署:1.21”
- “解释命名空间’prod’中的StatefulSet’database’有什么问题”
- “使用Helm部署bitnami/wordpress图表,并将服务类型设置为LoadBalancer”
备注:Claude Desktop将自动通过MCP服务器路由K8s命令,允许在不离开Claude界面的情况下就集群进行自然对话。
云提供商:对于AWS EKS、GKE或Azure AKS,您需要额外的配置。看 云提供商支持 导游。
特性
- 多种Kubernetes工具:
kubectl,helm,istioctl,以及argocd在一个容器中 - 云提供商:对AWS EKS、Google GKE和Azure AKS的原生支持
- 安全:以非root用户身份运行,并进行严格的命令验证
- 命令管道:支持常见的Unix工具,如
jq,grep,以及sed - 易于配置:用于自定义的简单环境变量
传输协议
服务器支持三种传输协议,通过配置 K8S_MCP_TRANSPORT:
| 运输 | 描述 | 默认 |
|---|---|---|
stdio | 标准I/O(Claude Desktop默认) | 是 |
streamable-http | HTTP传输(建议用于远程/web客户端,MCP规范2025-11-25) | 否 |
sse | 服务器发送事件(已弃用,请使用 streamable-http 相反) | 否 |
使用流式HTTP传输的示例:
BASH```
1
2
3
4docker run —rm -p 8000:8000
-v ~/.kube:/home/appuser/.kube:ro
-e K8S_MCP_TRANSPORT=streamable-http
ghcr.io/alexei-led/k8s-mcp-server:latest
> **备注**:使用HTTP传输在Docker中运行时,服务器会自动绑定到 `0.0.0.0` 用于正确的端口映射。在Docker之外,它绑定到 `127.0.0.1`.
## 文档
- 入门指南 -详细的设置说明
- 云提供商支持 -EKS、GKE和AKS配置
- 支持的工具 -所有包含的CLI工具的完整列表
- 环境变量 -配置选项
- 安全功能 -安全模式和自定义规则
- 克劳德集成 -详细的Claude桌面设置
- 建筑 -系统架构和组件
- 详细规格 -完整的技术规格
## 使用示例
连接后,您可以让Claude使用自然语言帮助完成Kubernetes任务:
MERMAID```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21flowchart TB
subgraph "Basic Commands"
A1["Show me all pods in the default namespace"]
A2["Get all services across all namespaces"]
A3["Display the logs for the nginx pod"]
end
subgraph "Troubleshooting"
B1["Why is my deployment not starting?"]
B2["Describe the failing pod and explain the error"]
B3["Check if my service is properly connected to the pods"]
end
subgraph "Deployments & Configuration"
C1["Deploy the Nginx Helm chart"]
C2["Create a deployment with 3 replicas of nginx:latest"]
C3["Set up an ingress for my service"]
end
subgraph "Advanced Operations"
D1["Check the status of my Istio service mesh"]
D2["Set up a canary deployment with 20% traffic to v2"]
D3["Create an ArgoCD application for my repo"]
end
Claude可以理解您的意图,并根据您的请求运行相应的kubectl、helm、istioctl或argocd命令。然后,它可以用简单的术语解释输出,或帮助您解决问题。
高级Claude桌面配置
配置Claude Desktop以优化您的Kubernetes工作流程:
目标特定集群和命名空间
JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15{ “mcpServers”: { “kubernetes”: { “command”: “docker”, “args”: [ “run”, “-i”, “—rm”, “-v”, “/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro”, “-e”, “K8S_CONTEXT=production-cluster”, “-e”, “K8S_NAMESPACE=my-application”, “-e”, “K8S_MCP_TIMEOUT=600”, “ghcr.io/alexei-led/k8s-mcp-server:latest” ] } } }
### 连接到AWS EKS群集
JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"mcpServers": {
"kubernetes": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro",
"-v", "/Users/YOUR_USER_NAME/.aws:/home/appuser/.aws:ro",
"-e", "AWS_PROFILE=production",
"-e", "AWS_REGION=us-west-2",
"ghcr.io/alexei-led/k8s-mcp-server:latest"
]
}
}
}
连接到谷歌GKE集群
JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15{ “mcpServers”: { “kubernetes”: { “command”: “docker”, “args”: [ “run”, “-i”, “—rm”, “-v”, “/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro”, “-v”, “/Users/YOUR_USER_NAME/.config/gcloud:/home/appuser/.config/gcloud:ro”, “-e”, “CLOUDSDK_CORE_PROJECT=my-gcp-project”, “-e”, “CLOUDSDK_COMPUTE_REGION=us-central1”, “ghcr.io/alexei-led/k8s-mcp-server:latest” ] } } }
### 连接到Azure AKS群集
JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14{
"mcpServers": {
"kubernetes": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro",
"-v", "/Users/YOUR_USER_NAME/.azure:/home/appuser/.azure:ro",
"-e", "AZURE_SUBSCRIPTION=my-subscription-id",
"ghcr.io/alexei-led/k8s-mcp-server:latest"
]
}
}
}
许可安全模式
JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13{ “mcpServers”: { “kubernetes”: { “command”: “docker”, “args”: [ “run”, “-i”, “—rm”, “-v”, “/Users/YOUR_USER_NAME/.kube:/home/appuser/.kube:ro”, “-e”, “K8S_MCP_SECURITY_MODE=permissive”, “ghcr.io/alexei-led/k8s-mcp-server:latest” ] } } }
> 有关详细的安全配置选项,请参阅 安全文档.
## 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。