Kubernetes MCP服务器

Kai是一个Kubernetes MCP服务器,通过自然语言让LLM客户端管理Kubernetes集群,包括工作负载、网络、配置、存储、RBAC和自定义资源等。

  • by basebandit
  • Go
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 basebandit/kai

使用说明

Kai-Kubernetes MCP服务器

一个模型上下文协议(MCP)服务器,用于从兼容MCP的客户端(如Claude Desktop、Cursor和Continue)管理Kubernetes集群。

概述

Kai将Kubernetes操作作为MCP工具公开,让LLM客户端通过自然语言管理您的集群——工作负载、网络、配置、存储、RBAC、自定义资源和原始清单。

特性

核心工作量

  • [x] 容器组 -创建、列出、获取、删除和流式传输日志
  • [x] 部署 -创建、列出、描述和更新
  • [x] 工作 -批量工作负载管理(创建、获取、列出、删除)
  • [x] Cronjobs -计划批处理工作负载(创建、获取、列出、删除)

网络

  • [x] 服务 -创建、获取、列出和删除
  • [x] 入口 -HTTP/HTTPS路由、TLS配置(创建、获取、列出、更新、删除)

配置

  • [x] ConfigMaps -配置管理(创建、获取、列表、更新、删除)
  • [x] 秘密 -秘密管理(创建、获取、列出、更新、删除)
  • [x] 命名空间 -命名空间管理(创建、获取、列出、删除)

集群操作

  • [x] 上下文管理 -切换上下文、列出上下文、重命名、删除
  • [x] 节点 -节点监控、警戒和排水(列表、获取、警戒、解锁、排水)
  • [x] 群集运行状况 -集群状态和资源指标(集群健康状况、节点/吊舱指标)

存储

  • [x] 持久容量 -PV管理(列表、获取、删除)和PVC管理(创建、列表、获取和删除)
  • [x] 存储类 -存储类操作(列表、获取)

安全

  • [x] 基于角色的访问控制 -角色、角色绑定、集群角色、集群角色绑定和服务帐户(列表、获取)

公用事业

  • [x] 端口转发 -将端口转发到Pod和服务(启动、停止、列出会话)

高级

  • [x] 应用/删除清单 -应用或删除原始YAML/JSON、多文档和任何类型的CRD(Apply_YAML、delete_YAML)
  • [x] 自定义资源 -CRD和自定义资源操作(列出/获取CRD,列出/获取/删除自定义资源)
  • [x] 事件 -事件列表和筛选(按命名空间、类型、涉及对象)
  • [x] API发现 -API资源勘探(list_API_resources)

需求

默认情况下,服务器会连接到当前的kubectl上下文。确保您可以访问为kubectl配置的Kubernetes集群(例如,minikube、Rancher Desktop、kind、EKS、GKE、AKS)。

安装

go install github.com/basebandit/kai/cmd/kai@latest

容器图片

Docker Hub上发布了一个多拱形映像(linux/amd64、linux/arm64):

docker pull cyclon/kai:v1.0.0
docker run --rm cyclon/kai:v1.0.0 -version

CLI选项

kai [options]

Options:
  -kubeconfig string        Path to kubeconfig file (default "~/.kube/config")
  -context string           Name for the loaded context (default "local")
  -in-cluster               Use in-cluster config (when running inside a pod)
  -transport string         stdio (default), streamable-http, or sse-legacy
  -sse-addr string          HTTP listen address for streamable-http/sse-legacy (default ":8080")
  -tls-cert string          Path to TLS certificate (enables HTTPS)
  -tls-key string           Path to TLS private key (enables HTTPS)
  -request-timeout duration Timeout for Kubernetes API requests (default 30s)
  -metrics                  Expose Prometheus metrics at /metrics (default true)
  -log-format string        json (default) or text
  -log-level string         debug, info, warn, error (default "info")
  -version                  Show version information

默认情况下,日志以结构化JSON格式写入stderr,使其易于解析:

{"time":"2024-01-15T10:30:00Z","level":"INFO","msg":"kubeconfig loaded","path":"/home/user/.kube/config","context":"local"}
{"time":"2024-01-15T10:30:00Z","level":"INFO","msg":"starting server","transport":"stdio"}

配置

克劳德桌面版

编辑您的Claude Desktop配置:

# macOS
code ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Linux
code ~/.config/Claude/claude_desktop_config.json

添加服务器配置:

{
  "mcpServers": {
    "kubernetes": {
      "command": "/path/to/kai"
    }
  }
}

使用自定义kubeconfig:

{
  "mcpServers": {
    "kubernetes": {
      "command": "/path/to/kai",
      "args": ["-kubeconfig", "/path/to/custom/kubeconfig"]
    }
  }
}

光标

添加到光标MCP设置中:

{
  "mcpServers": {
    "kubernetes": {
      "command": "/path/to/kai"
    }
  }
}

继续

添加到“继续”配置(~/.continue/config.json):

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "/path/to/kai"
        }
      }
    ]
  }
}

HTTP模式(web客户端,远程使用)

对于非stdio客户端,运行流式HTTP传输:

kai -transport=streamable-http -sse-addr=:8080

MCP端点为 http://localhost:8080/mcp。健康调查位于 /healthz 和 /readyz,以及Prometheus指标 /metrics.传统的苏格兰和南方能源运输 (-transport=sse-legacy,端点 /sse)仍然有效,但已弃用。

自定义Kubeconfig

默认情况下,Kai使用 ~/.kube/config.您可以指定不同的kubeconfig:

kai -kubeconfig=/path/to/custom/kubeconfig -context=my-cluster

在Kubernetes集群内运行

在Kubernetes集群内部署Kai时,请使用 -in-cluster 标志自动使用pod的服务帐户凭据:

kai -in-cluster -transport=streamable-http -sse-addr=:8080

在集群中运行Kai的推荐方法是 kmcp (从 凯根特),它将MCP服务器作为 MCPServer 资源:

apiVersion: kagent.dev/v1alpha1
kind: MCPServer
metadata:
  name: kai
spec:
  transportType: http
  httpTransport:
    targetPort: 8080
    path: /mcp
  deployment:
    image: cyclon/kai:v1.0.0
    port: 8080
    cmd: /kai
    args: ["-in-cluster", "-transport=streamable-http", "-sse-addr=:8080"]
    serviceAccountName: kai

kmcp为您创建部署和服务。服务帐户需要RBAC来管理Kai管理的资源——广泛 get/list/watch,加 create/update/delete 在那里你使用变异工具。请参阅 kmcp部署指南.

可运行示例: deploy/kagent/kai.example.yaml (仅限测试——拨款 cluster-admin;缩小范围以供实际使用)。

使用示例

配置后,您可以使用自然语言与集群交互:

  • “列出默认命名空间中的所有Pod”
  • “使用nginx:最新映像创建一个名为nginx的部署,其中包含3个副本”
  • “显示pod我的应用程序的日志”
  • “删除名为backend的服务”
  • “创建每5分钟运行一次的cronjob”
  • “在启用TLS的情况下为我的应用程序创建入口”
  • “端口8080:80上的端口转发服务nginx”
  • “应用此清单: "

贡献

欢迎投稿!请参阅我们的投稿指南以获取更多信息。

许可证

该项目根据MIT许可证获得许可。