使用说明
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许可证获得许可。
