使用说明
项目简介
mcp-k8s 是一个基于 Model Context Protocol (MCP) 构建的 Kubernetes 集群管理服务器。它允许大型语言模型 (LLM) 通过标准化的 MCP 协议,安全、可控地与 Kubernetes 集群进行交互。该服务器提供了一系列工具,使 LLM 能够查询集群信息、管理 Kubernetes 资源,从而实现基于自然语言的 Kubernetes 运维和自动化场景。
主要功能点
- 资源类型查询: 支持查询 Kubernetes 集群中所有可用的资源类型,包括内置资源和自定义资源 (CRD)。
- 资源CRUD操作: 提供对 Kubernetes 资源进行创建 (Create)、读取 (Read)、更新 (Update)、删除 (Delete) 的能力。写操作(创建、更新、删除)可以独立配置启用或禁用,保证安全性。
- 灵活配置: 通过 kubeconfig 文件连接 Kubernetes 集群,支持集群外部和集群内部署。
- 安全控制: 读写操作分离,并可配置禁用写操作;基于 Kubernetes RBAC 进行权限控制;输入参数校验,防止注入攻击。
- 标准MCP协议: 基于 'mcp-go' SDK 开发,遵循 MCP 协议标准,易于与任何兼容 MCP 协议的 LLM 客户端集成。
- Stdio通信: 使用 Stdio 作为通信协议,简化部署和集成。
安装步骤
-
克隆仓库
git clone https://github.com/silenceper/mcp-k8s.git cd mcp-k8s -
构建服务器
确保已安装 Go 语言环境。执行以下命令编译代码:
go build -o bin/mcp-k8s cmd/server/main.go这将在 'bin' 目录下生成可执行文件 'mcp-k8s'。
服务器配置
MCP 服务器需要以下配置信息才能被 MCP 客户端调用。请将以下 JSON 配置填入到 MCP 客户端的服务器配置中。
{ "server_name": "k8s-mcp-server", "command": "./bin/mcp-k8s", "args": [ "--kubeconfig", "/path/to/your/kubeconfig" ], "description": "Kubernetes MCP Server", "capabilities": [ "tool_call" ], "tool_names": [ "get_api_resources", "get_resource", "list_resources", "create_resource", "update_resource", "delete_resource" ] }
配置参数说明:
- '"server_name"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
- '"command"': MCP 服务器的启动命令。这里假设 'mcp-k8s' 可执行文件位于当前目录的 'bin' 子目录下。请根据实际情况修改路径。
- '"args"': 启动命令的参数列表。
- '"kubeconfig"': Kubernetes 配置文件路径。请将 '/path/to/your/kubeconfig' 替换为实际的 kubeconfig 文件路径。如果你的 kubeconfig 文件位于默认路径 '~/.kube/config',则可以省略此参数,程序会自动尝试使用默认配置。
- 其他可选参数:
- '--enable-create': 启用资源创建操作。默认禁用。
- '--enable-update': 启用资源更新操作。默认禁用。
- '--enable-delete': 启用资源删除操作。默认禁用。 例如,要启用所有写操作,可以将 'args' 修改为:
"args": [ "--kubeconfig", "/path/to/your/kubeconfig", "--enable-create", "--enable-update", "--enable-delete" ]
- '"description"': 服务器描述,用于在 MCP 客户端中显示服务器的用途。
- '"capabilities"': 服务器提供的能力,'tool_call' 表示该服务器支持工具调用。
- '"tool_names"': 服务器提供的工具名称列表,MCP 客户端会根据此列表展示可用的工具。
注意:
- 请确保 MCP 客户端能够访问到 'mcp-k8s' 可执行文件,或者将 'command' 配置为可执行文件的绝对路径。
- '/path/to/your/kubeconfig' 必须替换为有效的 Kubernetes kubeconfig 文件路径,该文件包含了连接 Kubernetes 集群所需的认证信息。
- 默认情况下,服务器以只读模式启动,不启用资源创建、更新和删除操作。如果需要启用写操作,请根据需要添加 '--enable-create', '--enable-update', '--enable-delete' 参数。请谨慎启用写操作,并确保充分理解潜在的安全风险。
基本使用方法
-
启动 MCP 服务器
在安装步骤完成后,你可以通过 MCP 客户端配置中指定的命令和参数来启动 MCP 服务器。通常,MCP 客户端会自动启动并管理 MCP 服务器的生命周期。
-
在 LLM 中使用工具
在 LLM 应用中,你可以指示 LLM 调用该 MCP 服务器提供的工具来与 Kubernetes 集群交互。例如,你可以让 LLM 执行以下操作:
- 查询 Pod 列表: 调用 'list_resources' 工具,指定 'kind' 为 'Pod'。
- 获取 Deployment 详情: 调用 'get_resource' 工具,指定 'kind' 为 'Deployment' 和具体的 'name'。
- 创建 Service: 调用 'create_resource' 工具,指定 'kind' 为 'Service' 和 Service 的 YAML/JSON 'manifest'。 (如果服务器已启用 'create_resource' 工具)
- 删除 Deployment: 调用 'delete_resource' 工具,指定 'kind' 为 'Deployment' 和具体的 'name'。 (如果服务器已启用 'delete_resource' 工具)
具体的工具调用方式和参数,请参考 MCP 客户端的文档和工具的描述信息。
通过 mcp-k8s,你可以构建基于 LLM 的智能 Kubernetes 管理应用,例如:
- 自然语言 Kubernetes 运维助手: 用户可以使用自然语言指令,让 LLM 自动执行 Kubernetes 集群操作。
- 自动化巡检和问题诊断: LLM 可以调用工具查询集群状态,进行自动化巡检和问题诊断。
- 基于自然语言的 Kubernetes 教程: 结合 LLM 的理解和生成能力,可以为 Kubernetes 新手提供更友好的学习体验。
信息
分类
开发者工具