使用说明
Kubernetes MCP服务器🚀
Kubernetes MCP服务器是一个 模型上下文协议(MCP) 服务器,提供与Kubernetes API的无缝集成,为开发人员、操作员和人工智能工具提供高级自动化和交互功能。
目录
概述📊
此MCP服务器使AI工具能够使用自然语言与Kubernetes集群交互,提供以下功能:
- 🔍 检索和分析集群资源
- 📈 监控部署、Pod和服务
- 🛠️ 通过AI接口执行常见的kubectl操作
- 🔧 在人工智能的帮助下解决集群问题
先决条件✅
- 具有API访问权限的Kubernetes集群
- 有效的kubeconfig文件或服务帐户凭据
- 为所需操作提供适当的RBAC权限
安装💻
使用Claude Desktop
将以下内容添加到您的Claude Desktop配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"kubernetes": {
"command": "path/to/k8smcp",
"args": [
"stdio",
"--kubeconfig=/path/to/your/kubeconfig"
]
}
}
}
使用VS代码
将以下内容添加到您的VS代码用户设置(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配置文件中(path/to/cline_mcp_settings.json 选择“配置MCP服务器”后):
{
"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 对于大多数用户来说,传输是本地集成的默认和推荐选项:
k8smcp stdio --kubeconfig=/path/to/your/kubeconfig
上海证券交易所
这 sse transport支持基于HTTP的JSON-RPC消息传输。当在需要为客户端连接公开端口的Kubernetes集群中部署服务器时,这可能会很有帮助。
k8smcp sse --in-cluster=true
[!注意] 这
--in-cluster=true如果服务器部署在Kubernetes集群中,则需要设置标志。
访问控制🔒
默认情况下,服务器应用提供的kubeconfig或服务帐户的权限。为了增强安全性,您可以:
- 创建具有受限RBAC权限的专用服务帐户
- 设置命名空间限制以防止跨命名空间操作
- 启用只读模式以防止集群状态的突变
工具🧰
Kubernetes MCP Server为与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_部署 -获取有关特定部署的信息
namespace:部署命名空间(字符串,可选,默认为当前命名空间)name:部署名称(字符串,必填)
-
list_部署 -列出命名空间中的部署
namespace:用于列出部署的命名空间(字符串,可选,默认为当前命名空间)label_selector:按标签选择器筛选部署(字符串,可选)
-
get_service -获取特定服务的信息
namespace:服务命名空间(字符串,可选,默认为当前命名空间)name:服务名称(字符串,必填)
-
list_services -在命名空间中列出服务
namespace:用于列出服务的命名空间(字符串,可选,默认为当前命名空间)label_selector:按标签选择器筛选服务(字符串,可选)
-
get_config映射 -获取有关特定ConfigMap的信息
namespace:ConfigMap命名空间(字符串,可选,默认为当前命名空间)name:ConfigMap名称(字符串,必填)
-
list_config映射 -在命名空间中列出ConfigMaps
namespace:从中列出ConfigMaps的命名空间(字符串,可选,默认为当前命名空间)label_selector:按标签选择器筛选ConfigMaps(字符串,可选)
-
list_namespaces -列出群集中的所有命名空间
- 无需参数
-
list_nodes -列出群集中的所有节点
- 无需参数
管理操作⚙️
-
delete_pod -从命名空间中删除pod
namespace:Pod命名空间(字符串,可选,默认为当前命名空间)name:Pod名称(字符串,必填)grace_period_seconds:删除前的宽限期(数字,可选)
-
规模部署 -将部署扩展到特定数量的副本
namespace:部署命名空间(字符串,可选,默认为当前命名空间)name:部署名称(字符串,必填)replicas:副本数量(数量,必填)
[!重要] 默认情况下,涉及修改集群中资源的工具被禁用。要启用它们,您必须设置
--read-only=false旗帜或K8S_MCP_READ_ONLY=false环境变量。
未来的增强功能🔮
- 增强RBAC集成,实现细粒度访问控制
- 支持更多kubernetes资源
- 支持自定义资源定义(CRD)
- 用于部署的Helm图表管理功能
- 集群监控和警报集成
- 支持多个并发集群连接
贡献👥
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证⚖️
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
内置于❤️ Kubernetes和AI社区。
