项目简介

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 集群。
  • 错误处理: 提供友好的错误提示信息,方便用户排查问题。

安装步骤

  1. 安装依赖: 在项目根目录下运行以下命令安装 Node.js 依赖:

    npm install
  2. 构建服务器: 运行以下命令编译 TypeScript 代码并生成可执行的 JavaScript 文件:

    npm run build

    构建成功后,会在 'build' 目录下生成 'index.js' 文件。

  3. 开发模式 (可选): 如果需要开发模式并自动重新构建,可以运行:

    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 服务器。

基本使用方法

  1. 启动 MCP 客户端: 启动配置了 'k8s-interactive-mcp' 服务器的 MCP 客户端 (例如 Claude Desktop)。
  2. 调用工具: 在 MCP 客户端中,通过自然语言指示 LLM 调用 'run_kubectl_command' 工具,并提供以下参数:
    • 'kubeconfig': Kubernetes kubeconfig 文件的路径。
    • 'command': 要执行的 'kubectl' 命令,例如 '"kubectl get pods -n kube-system"'。
  3. 获取结果: 服务器会执行 '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 列表) ..."

信息

分类

开发者工具