K8s MCP服务器

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

  • by alexei-led
  • Python
  • 本地部署
  • 212 星标
  • 更新于
在 GitHub 查看 alexei-led/k8s-mcp-server

使用说明

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访问来修复它。.

演示

运作原理

flowchart 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
    {
      "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"
          ]
        }
      }
    }
    
  2. 重新启动克劳德桌面

    • 重新启动后,您将看到“工具”图标(🔨) 在输入字段的右下角
    • 这表明Claude现在可以通过MCP服务器访问K8s工具
  3. 直接在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传输的示例:

docker 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.

文档

使用示例

连接后,您可以让Claude使用自然语言帮助完成Kubernetes任务:

flowchart 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工作流程:

目标特定集群和命名空间

{
  "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群集

{
  "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集群

{
  "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群集

{
  "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"
      ]
    }
  }
}

许可安全模式

{
  "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许可证获得许可-请参阅 许可证 文件以获取详细信息。