返回市场
k8s-MCP服务器

k8s-MCP服务器

作者:alexei-led174 星标更新:2025-04-29

项目介绍

K8s MCP Server

CI 状态 发布状态 测试覆盖率 镜像标签 镜像大小 Python 版本 MIT 许可证

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

演示:部署并排查 WordPress

会话 1: 使用 k8s-mcp-server 和 Helm CLI 在 claude-demo 命名空间中部署 WordPress 应用程序,然后故意通过将 MariaDB StatefulSet 缩放至零来破坏它。

会话 2: 排查会话,我们使用 k8s-mcp-server 通过 kubectl 命令诊断损坏的 WordPress 站点,识别缺失数据库问题,并通过扩展 StatefulSet 并配置入口访问来修复它。

演示

工作原理

flowchart LR
    A[用户] --> |询问 K8s 问题| B[Claude]
    B --> |通过 MCP 发送命令| C[K8s MCP Server]
    C --> |执行 kubectl, helm 等| D[Kubernetes 集群]
    D --> |返回结果| C
    C --> |返回格式化的结果| B
    B --> |分析并解释| A

Claude 可以帮助用户:

  • 解释复杂的 Kubernetes 概念
  • 对集群运行命令
  • 排查问题
  • 提供建议优化
  • 制作 Kubernetes 清单文件

快速开始使用 Claude Desktop

在不到两分钟内让 Claude 帮助您管理 Kubernetes 集群:

  1. 创建或更新您的 Claude Desktop 配置文件

    • macOS:编辑 $HOME/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:编辑 %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 Desktop

    • 重启后,您将在输入框右下角看到工具图标 (🔨)
    • 这表示 Claude 现在可以通过 MCP 服务器访问 K8s 工具
  3. 直接在 Claude Desktop 中使用 K8s 工具

    • "我有哪些可用的 Kubernetes 上下文?"
    • "显示默认命名空间中的所有 Pod"
    • "创建一个具有 3 个副本的 nginx:1.21 部署"
    • "解释我的 'prod' 命名空间中的 'database' StatefulSet 有什么问题"
    • "使用 Helm 部署 bitnami/wordpress 图表并将服务类型设置为 LoadBalancer"

注意:Claude Desktop 将自动通过 MCP 服务器路由 K8s 命令,允许您在不离开 Claude 界面的情况下进行关于集群的自然对话。

云提供商:对于 AWS EKS、GKE 或 Azure AKS,您需要额外配置。请参阅 云提供商支持 指南。

功能

  • 多个 Kubernetes 工具:在一个容器中提供 kubectl, helm, istioctlargocd
  • 云提供商:原生支持 AWS EKS、Google GKE 和 Azure AKS
  • 安全性:作为非 root 用户运行,并有严格的命令验证
  • 命令管道:支持常见的 Unix 工具如 jq, grepsed
  • 简单配置:通过简单的环境变量进行定制

文档

使用示例

连接后,您可以使用自然语言请求 Claude 帮助处理 Kubernetes 任务:

flowchart TB
    subgraph "基本命令"
        A1["显示默认命名空间中的所有 Pod"]
        A2["获取所有命名空间中的所有服务"]
        A3["显示 nginx Pod 的日志"]
    end
    
    subgraph "排查问题"
        B1["为什么我的部署没有启动?"]
        B2["描述失败的 Pod 并解释错误"]
        B3["检查我的服务是否正确连接到 Pod"]
    end
    
    subgraph "部署与配置"
        C1["部署 Nginx Helm 图表"]
        C2["创建一个具有 3 个副本的 nginx:latest 部署"]
        C3["为我的服务设置入口"]
    end
    
    subgraph "高级操作"
        D1["检查我的 Istio 服务网格的状态"]
        D2["设置 20% 流量到 v2 的金丝雀部署"]
        D3["为我的仓库创建一个 ArgoCD 应用"]
    end

Claude 可以理解您的意图,并根据您的请求运行适当的 kubectl, helm, istioctl 或 argocd 命令。然后它可以以简单的语言解释输出或帮助您排查问题。

高级 Claude Desktop 配置

配置 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"
      ]
    }
  }
}

连接到 Google 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 许可证 - 详情见 LICENSE 文件。