关于 Kubernetes MCP Server 🚀
Kubernetes MCP Server 为开发者、运维人员和 AI 工具提供与 Kubernetes 集群交互的接口。它支持资源查询、日志读取和部分管理操作,并可通过只读模式限制变更。
主要功能
- 01查询集群资源与状态
- 02读取 Pod 日志
- 03删除 Pod 和扩缩部署
- 04stdio 与 SSE 传输
- 05只读模式和命名空间限制
适用场景
- 01检查 Pod、部署和服务状态
- 02排查 Pod 日志与集群问题
- 03通过 AI 工具执行集群操作
MCP 相关
该 MCP 服务将 Kubernetes 资源查询、日志读取及管理操作作为工具提供给 MCP 客户端。支持 stdio 和 SSE 传输,并可启用只读模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Kubernetes MCP 服务 🚀
Kubernetes MCP 服务是一个 Model Context Protocol (MCP) 服务,可与 Kubernetes API 无缝集成,为开发者、运维人员和 AI 工具提供高级自动化与交互能力。
目录
概览 📊
此 MCP 服务支持 AI 工具使用自然语言与 Kubernetes 集群交互,并提供以下能力:
- 🔍 获取并分析集群资源
- 📈 监控部署、Pod 和服务
- 🛠️ 通过 AI 接口执行常见的 kubectl 操作
- 🔧 借助 AI 助手排查集群问题
先决条件 ✅
- 可访问 API 的 Kubernetes 集群
- 有效的 kubeconfig 文件或服务账号凭据
- 执行所需操作的适当 RBAC 权限
安装 💻
与 Claude Desktop 配合使用
将以下内容添加到 Claude Desktop 配置文件(macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上为 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"kubernetes": {
"command": "path/to/k8smcp",
"args": [
"stdio",
"--kubeconfig=/path/to/your/kubeconfig"
]
}
}
}
与 VS Code 配合使用
将以下内容添加到 VS Code 用户设置(JSON)文件或工作区中的 .vscode/mcp.json:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "kubeconfig_path",
"description": "Path to kubeconfig file",
"default": "${env:HOME}/.kube/config"
}
],
"servers": {
"kubernetes": {
"command": "path/to/k8smcp",
"args": [
"stdio",
"--kubeconfig=/path/to/your/kubeconfig"
]
}
}
}
}
与 Cline 配合使用
将以下内容添加到 Cline 配置文件(选择“Configure MCP Servers”后,该文件路径为 path/to/cline_mcp_settings.json):
{
"mcpServers": {
"kubernetes": {
"disabled": false,
"timeout": 60,
"command": "path/to/k8smcp",
"args": [
"stdio",
"--read-only=false"
"--kubeconfig=/path/to/your/kubeconfig"
],
"env": {
"K8S_MCP_TOOLSETS": "all"
},
"transportType": "stdio"
}
}
}
请务必将 command 的值更新为 k8smcp 可执行文件的路径。你可以通过 args 或 env 设置服务配置。
从源代码构建
克隆仓库并构建二进制文件:
git clone https://github.com/briankscheong/k8s-mcp-server.git
cd k8s-mcp-server
make build
也可以直接使用 Go 安装:
go install github.com/briankscheong/k8s-mcp-server/cmd/k8s-mcp-server@latest
命令行选项 ⌨️
A Kubernetes MCP Server that provides tools for interacting with Kubernetes clusters.
Environment Variables:
K8S_MCP_KUBECONFIG Path to kubeconfig file
K8S_MCP_NAMESPACE Default Kubernetes namespace
K8S_MCP_IN_CLUSTER Use in-cluster config (true/false)
K8S_MCP_READ_ONLY Restrict to read-only operations (true/false)
K8S_MCP_RESOURCE_TYPES Comma-separated list of resource types
K8S_MCP_TOOLSETS Comma-separated list of toolsets to enable
K8S_MCP_EXPORT_TRANSLATIONS Export translations (true/false)
Usage:
k8smcp [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
sse Start sse server
stdio Start stdio server
Flags:
--export-translations Save translations to a JSON file
-h, --help help for k8smcp
--in-cluster Use in-cluster config instead of kubeconfig file
--kubeconfig string Path to the kubeconfig file (default "/Users/briancheong/.kube/config")
--namespace string Default Kubernetes namespace to target (default "default")
--read-only Restrict operations to read-only (no create, update, delete) (default true)
--resource-types strings Comma separated list of Kubernetes resource types to enable (pods,deployments,services,configmaps,namespaces,nodes) (default [all])
--toolsets strings Comma separated list of tools to enable (default [all])
-v, --version version for k8smcp
Use "k8smcp [command] --help" for more information about a command.
服务传输选项 🔄
stdio
stdio 传输是默认选项,也是大多数用户进行本地集成时的推荐选项:
k8smcp stdio --kubeconfig=/path/to/your/kubeconfig
SSE
sse 传输支持基于 HTTP 的 JSON-RPC 消息传输。将服务部署在 Kubernetes 集群中且需要开放端口供客户端连接时,此选项会很有用。
k8smcp sse --in-cluster=true
说明
如果服务部署在 Kubernetes 集群中,需要设置
--in-cluster=true标志。
访问控制 🔒
默认情况下,服务使用所提供的 kubeconfig 或服务账号的权限。为了增强安全性,你可以:
- 创建具有受限 RBAC 权限的专用服务账号
- 设置命名空间限制,防止跨命名空间操作
- 启用只读模式,防止修改集群状态
工具 🧰
Kubernetes MCP 服务提供了一套全面的工具,用于与 Kubernetes 集群交互。
资源操作 📦
-
get_pod - 获取特定 Pod 的详细信息
namespace:Pod 命名空间(字符串,可选,默认使用当前命名空间)name:Pod 名称(字符串,必需)
-
list_pods - 列出命名空间中的 Pod
namespace:要列出 Pod 的命名空间(字符串,可选,默认使用当前命名空间)label_selector:按标签选择器筛选 Pod(字符串,可选)field_selector:按字段选择器筛选 Pod(字符串,可选)
-
get_pod_logs - 获取 Pod 日志
namespace:Pod 命名空间(字符串,可选,默认使用当前命名空间)name:Pod 名称(字符串,必需)container:容器名称(字符串,可选,默认使用第一个容器)tail_lines:从末尾获取的行数(数字,可选)previous:获取上一个容器实例的日志(布尔值,可选)
-
get_deployment - 获取特定部署的信息
namespace:部署命名空间(字符串,可选,默认使用当前命名空间)name:部署名称(字符串,必需)
-
list_deployments - 列出命名空间中的部署
namespace:要列出部署的命名空间(字符串,可选,默认使用当前命名空间)label_selector:按标签选择器筛选部署(字符串,可选)
-
get_service - 获取特定服务的信息
namespace:服务命名空间(字符串,可选,默认使用当前命名空间)name:服务名称(字符串,必需)
-
list_services - 列出命名空间中的服务
namespace:要列出服务的命名空间(字符串,可选,默认使用当前命名空间)label_selector:按标签选择器筛选服务(字符串,可选)
-
get_configmap - 获取特定 ConfigMap 的信息
namespace:ConfigMap 命名空间(字符串,可选,默认使用当前命名空间)name:ConfigMap 名称(字符串,必需)
-
list_configmaps - 列出命名空间中的 ConfigMap
namespace:要列出 ConfigMap 的命名空间(字符串,可选,默认使用当前命名空间)label_selector:按标签选择器筛选 ConfigMap(字符串,可选)
-
list_namespaces - 列出集群中的所有命名空间
- 无需参数
-
list_nodes - 列出集群中的所有节点
- 无需参数
管理操作 ⚙️
-
delete_pod - 从命名空间中删除 Pod
namespace:Pod 命名空间(字符串,可选,默认使用当前命名空间)name:Pod 名称(字符串,必需)grace_period_seconds:删除前的宽限期(数字,可选)
-
scale_deployment - 将部署扩缩容至指定副本数
namespace:部署命名空间(字符串,可选,默认使用当前命名空间)name:部署名称(字符串,必需)replicas:副本数(数字,必需)
重要
默认情况下,涉及修改集群资源的工具处于禁用状态。要启用这些工具,必须设置
--read-only=false标志或K8S_MCP_READ_ONLY=false环境变量。
后续增强 🔮
- 增强 RBAC 集成,实现精细化访问控制
- 支持更多 kubernetes 资源
- 支持自定义资源定义(CRD)
- 支持部署的 Helm chart 管理功能
- 集群监控和告警集成
- 支持同时连接多个集群
参与贡献 👥
欢迎贡献!请随时提交 Pull Request。
- 复刻此仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 创建 Pull Request
许可证 ⚖️
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
用 ❤️ 为 Kubernetes 和 AI 社区打造。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。