K8s MCP服务器

K8s MCP Server是一个基于Docker的服务器,实现了Anthropic的模型上下文协议(MCP),使Claude能够在安全的容器化环境中运行Kubernetes CLI工具(如kubectl、istioctl、helm、argocd)。

作者 By alexei-led
本地部署 Kubernetes工具 容器化服务
GitHub

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"
      ]
    }
  }
}
  1. 重新启动克劳德桌面
  • 重新启动后,您将看到“工具”图标(🔨) 在输入字段的右下角
  • 这表明Claude现在可以通过MCP服务器访问K8s工具
  1. 直接在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-httpHTTP传输(建议用于远程/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许可证获得许可-请参阅 许可证 文件以获取详细信息。