使用说明
项目简介
mcp-k8s-eye 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,专注于 Kubernetes 集群的管理和监控。它通过 MCP 协议向 LLM 客户端暴露 Kubernetes 集群的各种操作和分析能力,使得 LLM 能够理解和操作 Kubernetes 环境。
主要功能点
- 连接 Kubernetes 集群: 允许 MCP 服务器连接到 Kubernetes 集群,作为操作 Kubernetes 资源的基础。
- Pod 管理: 提供对 Kubernetes Pod 的基本操作能力,包括:
- 列出 Pod: 获取指定命名空间下的 Pod 列表。
- 获取 Pod 详情: 查看指定 Pod 的详细信息。
- 获取 Pod 日志: 获取指定 Pod 的容器日志,用于排查问题。
- 删除 Pod: 删除指定的 Pod。
- 在 Pod 中执行命令: 在 Pod 的容器中执行 shell 命令,进行更深入的诊断和操作。
- Pod 分析: 自动分析 Pod 的状态,检测潜在的错误和异常,为 LLM 提供集群健康状况的上下文信息。
- 节点信息 (部分实现): 初步支持列出和获取节点信息,为集群概览提供基础。
待完成功能 (仓库中标记为 '[ ]' 的 Feature): 服务 (Service)、Deployment、节点 (Node)、Ingress 等资源的列表和分析功能仍在开发中。
安装步骤
- 安装 Go 环境: 确保你的机器上已安装 Go 语言环境 (版本要求请参考项目 'go.mod' 文件)。
- 下载仓库: 使用 'git clone https://github.com/wenhuwang/mcp-k8s-eye' 命令克隆仓库到本地。
- 编译: 在仓库根目录下,执行 'go install' 命令编译项目,将生成可执行文件 'mcp-k8s-eye' (默认在 '$GOPATH/bin' 或 '$HOME/go/bin' 目录下)。
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下 JSON 格式的信息来连接和使用 'mcp-k8s-eye' 服务器。这些配置应在 MCP 客户端的配置文件中设置,而不是修改 'mcp-k8s-eye' 服务器的代码或配置文件。
{ "mcpServers": { "kubernetes": { // 服务器名称,客户端可以自定义,用于在客户端中标识和引用该服务器 "command": "/path/to/mcp-k8s-eye", // mcp-k8s-eye 可执行文件的绝对路径。请替换为实际路径,例如 /Users/yourname/go/bin/mcp-k8s-eye "env": { "HOME": "/Users/yourname" // 可选:设置 HOME 环境变量,某些 Kubernetes 客户端库可能依赖 HOME 目录下的 kubeconfig 文件。请替换为你的 Home 目录的实际路径。 }, // "args": ["--flag", "value"] // 可选:如果 mcp-k8s-eye 服务器需要命令行参数,可以在这里配置。当前版本似乎不需要额外的参数。 } } }
配置说明:
- '"kubernetes"': MCP 服务器的名称,可以自定义,用于在客户端配置中引用。
- '"command"': 必须配置。指向 'mcp-k8s-eye' 可执行文件的路径。请根据你的实际安装路径进行修改。
- '"env"': 可选配置。用于设置 'mcp-k8s-eye' 运行时需要的环境变量。例如,如果 'mcp-k8s-eye' 需要访问 'kubeconfig' 文件,可能需要设置 'HOME' 环境变量,使其能够找到默认路径下的 'kubeconfig' 文件。
- '"args"': 可选配置。用于传递给 'mcp-k8s-eye' 服务器的命令行参数。当前版本 'mcp-k8s-eye' 似乎不需要额外的命令行参数。
重要提示:
- 确保 'mcp-k8s-eye' 可执行文件具有执行权限 ('chmod +x /path/to/mcp-k8s-eye')。
- 'mcp-k8s-eye' 依赖于 Kubernetes 客户端库,它会尝试使用默认的 'kubeconfig' 文件连接 Kubernetes 集群。请确保你的 'kubeconfig' 文件配置正确,并且当前环境可以访问到 Kubernetes 集群。 通常 'kubeconfig' 文件默认位于 '$HOME/.kube/config'。
基本使用方法
- 启动 MCP 客户端: 配置好上述服务器信息后,启动你的 MCP 客户端应用。客户端会根据配置连接到 'mcp-k8s-eye' 服务器。
- 调用工具: 在 MCP 客户端中,你可以通过工具名称和参数来调用 'mcp-k8s-eye' 提供的 Kubernetes 管理工具。
例如,在 MCP 客户端中,你可以调用以下工具来操作 Kubernetes Pod:
-
'pod list': 列出 Pod
- 参数: 'namespace' (命名空间,字符串类型,可选。如果不提供,则可能列出所有命名空间的 Pod,具体行为取决于服务器实现。根据代码,该工具要求必须提供 namespace 参数)
- 示例调用 (JSON-RPC 请求示例,具体客户端调用方式请参考 MCP 客户端文档):
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod list", "arguments": { "namespace": "default" } }, "id": 1 }
-
'pod get': 获取 Pod 详情
- 参数: 'namespace' (命名空间,字符串类型,必填), 'pod' (Pod 名称,字符串类型,必填)
- 示例调用:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod get", "arguments": { "namespace": "default", "pod": "my-pod-name" } }, "id": 2 }
-
'pod logs': 获取 Pod 日志
- 参数: 'namespace' (命名空间,字符串类型,必填), 'pod' (Pod 名称,字符串类型,必填)
- 示例调用:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod logs", "arguments": { "namespace": "default", "pod": "my-pod-name" } }, "id": 3 }
-
'pod delete': 删除 Pod
- 参数: 'namespace' (命名空间,字符串类型,必填), 'pod' (Pod 名称,字符串类型,必填)
- 警告: 删除 Pod 是一个高危操作,请谨慎使用。
- 示例调用:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod delete", "arguments": { "namespace": "default", "pod": "my-pod-name" } }, "id": 4 }
-
'pod exec': 在 Pod 中执行命令
- 参数: 'namespace' (命名空间,字符串类型,必填), 'pod' (Pod 名称,字符串类型,必填), 'command' (要执行的命令,字符串类型,必填)
- 示例调用:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod exec", "arguments": { "namespace": "default", "pod": "my-pod-name", "command": "kubectl get pod" } }, "id": 5 }
-
'pod analyze': 分析 Pod 状态
- 参数: 'namespace' (命名空间,字符串类型,必填)
- 示例调用:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "pod analyze", "arguments": { "namespace": "default" } }, "id": 6 }
请注意: 上述 JSON-RPC 请求示例仅供参考,实际 MCP 客户端的调用方式可能有所不同。请参考你使用的 MCP 客户端的文档来了解如何正确配置和调用 MCP 服务器提供的工具。
信息
分类
开发者工具