项目简介
k8s-interactive-mcp 是一个基于 Model Context Protocol (MCP) 构建的服务器,它扩展了 LLM 的能力,使其能够与 Kubernetes 集群进行交互。通过注册 'run_kubectl_command' 工具,该服务器允许 LLM 客户端代表用户执行 'kubectl' 命令,并返回命令执行结果,从而实现通过自然语言控制和查询 Kubernetes 资源。
主要功能点
- kubectl 命令执行: 通过 MCP 工具 'run_kubectl_command',可以执行任何合法的 'kubectl' 命令。
- 灵活的命令管道: 支持 'kubectl' 命令的管道操作。
- 自动 kubectl 安装检查: 服务器在执行命令前会自动检查 'kubectl' 是否已安装,并提供安装指导。
- 自定义 kubeconfig 路径: 允许用户指定 kubeconfig 文件路径,连接到不同的 Kubernetes 集群。
- 错误处理: 提供友好的错误提示信息,方便用户排查问题。
安装步骤
-
安装依赖: 在项目根目录下运行以下命令安装 Node.js 依赖:
npm install -
构建服务器: 运行以下命令编译 TypeScript 代码并生成可执行的 JavaScript 文件:
npm run build构建成功后,会在 'build' 目录下生成 'index.js' 文件。
-
开发模式 (可选): 如果需要开发模式并自动重新构建,可以运行:
npm run watch
服务器配置
要将 'k8s-interactive-mcp' 服务器配置到 MCP 客户端(例如 Claude Desktop),您需要编辑客户端的配置文件。
配置文件路径:
- MacOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%/Claude/claude_desktop_config.json'
添加服务器配置到 'mcpServers' 字段:
在 'claude_desktop_config.json' 文件中,找到 'mcpServers' 字段(如果不存在则创建),并添加 'k8s-interactive' 服务器的配置。
{ "mcpServers": { "k8s-interactive": { "command": "<path-to-k8s-interactive>/build/index.js" // "command": 指向 k8s-interactive-mcp 服务器构建后的 index.js 文件的绝对路径。 // 请将 "<path-to-k8s-interactive>" 替换为您的 k8s-interactive-mcp 项目的实际路径。 } } }
注意:
- 请确保 '<path-to-k8s-interactive>/build/index.js' 是服务器 'index.js' 文件的绝对路径。
- MCP 客户端通过执行 'command' 指定的命令来启动 MCP 服务器。
基本使用方法
- 启动 MCP 客户端: 启动配置了 'k8s-interactive-mcp' 服务器的 MCP 客户端 (例如 Claude Desktop)。
- 调用工具: 在 MCP 客户端中,通过自然语言指示 LLM 调用 'run_kubectl_command' 工具,并提供以下参数:
- 'kubeconfig': Kubernetes kubeconfig 文件的路径。
- 'command': 要执行的 'kubectl' 命令,例如 '"kubectl get pods -n kube-system"'。
- 获取结果: 服务器会执行 'kubectl' 命令,并将命令的输出结果返回给 MCP 客户端,LLM 可以利用这些结果进行后续的自然语言处理和交互。
示例对话 (在 Claude Desktop 中):
用户: "请帮我获取 kube-system 命名空间下的所有 Pod"
Claude (内部会调用 'run_kubectl_command' 工具,参数可能类似):
{ "tool_calls": [ { "id": "call_123", "type": "function", "function": { "name": "run_kubectl_command", "arguments": { "kubeconfig": "/path/to/your/kubeconfig", "command": "kubectl get pods -n kube-system" } } } ] }
服务器返回结果:
title: kubectl get pods -n kube-system output: NAME READY STATUS RESTARTS AGE coredns-6d56c84f9c-2jh9f 1/1 Running 0 20d coredns-6d56c84f9c-kpv6s 1/1 Running 0 20d etcd-minikube 1/1 Running 0 20d kube-apiserver-minikube 1/1 Running 0 20d kube-controller-manager-minikube 1/1 Running 0 20d kube-proxy-hvglz 1/1 Running 0 20d kube-scheduler-minikube 1/1 Running 0 20d storage-provisioner 1/1 Running 0 20d
Claude (接收到结果后,可以以自然语言回复用户): "好的,以下是 kube-system 命名空间下所有 Pod 的列表:\n\nNAME ... (省略 Pod 列表) ..."
信息
分类
开发者工具