项目简介

KubeSphere MCP 服务器是基于 Model Context Protocol (MCP) 标准实现的后端服务,旨在将大型语言模型 (LLM) 客户端与 KubeSphere 容器平台集成。它通过将 KubeSphere 的 API 功能封装为 MCP 工具,使 LLM 能够理解和访问 KubeSphere 中的各种资源和状态信息。

主要功能点

该服务器通过实现多个工具模块,使 LLM 客户端能够:

  • 工作空间管理: 获取工作空间列表、工作空间详情、工作空间成员、工作空间配额、应用仓库列表、应用列表及应用版本信息。
  • 集群管理: 获取集群列表、集群详情、集群标签、集群成员、节点列表以及集群内的各种工作负载和服务资源信息(如 Deployments, StatefulSets, DaemonSets, Pods, Services, Ingresses, Secrets, ConfigMaps, Service Accounts, CRDs, PVCs, PVs, StorageClasses 等)。
  • 用户与角色: 获取用户列表、用户详情、角色列表及权限列表。
  • 扩展中心: 获取扩展列表及其状态信息。

安装步骤

要运行 KubeSphere MCP 服务器并与 MCP 客户端连接,您需要:

  1. 具备 KubeSphere 集群环境:确保您可以访问一个 KubeSphere 集群,并拥有其访问地址、用户名和密码。
  2. 获取 'ks-mcp-server' 可执行文件
    • 您可以从项目的 GitHub Releases 页面下载预编译的二进制文件。
    • 或者,如果您有 Go 开发环境,可以在项目根目录运行 'go build -o ks-mcp-server cmd/main.go' 自行构建。
    • 将生成(或下载)的 'ks-mcp-server' 二进制文件移动到系统的 '$PATH' 环境变量指定的目录中,以便终端能够直接找到并运行它。
  3. 生成 KubeSphere 访问配置 ('KSConfig'):创建一个 YAML 文件,格式类似于 Kubernetes 的 'kubeconfig'。该文件包含连接 KubeSphere API 的地址、用户名和密码信息。
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: # CA证书数据 (可选,取决于您的KubeSphere设置)
        server: https://your-kubesphere-api # KubeSphere API 服务器地址 (通常是 HTTPS)
      name: kubesphere # 集群名称
    contexts:
    - context:
        cluster: kubesphere
        user: admin-user # 用户认证信息名称
      name: admin-context # 上下文名称
    current-context: admin-context # 当前使用的上下文
    kind: Config
    preferences: {}
    users:
    - name: admin-user # 用户认证信息名称
      user:
        username: your-username # 登录KubeSphere的用户名
        password: your-password # 登录KubeSphere的密码
    请替换上述文件中的占位符信息,并将文件保存在一个安全的位置,例如 '~/.kube/ksconfig' 或项目的某个目录。
  4. 准备 MCP 客户端:例如 Claude Desktop 或 Cursor 等支持 MCP 协议的 LLM 客户端。

服务器配置(供 MCP 客户端使用)

您需要在 MCP 客户端的配置中添加一个 MCP 服务器条目,指向 'ks-mcp-server' 可执行文件。配置信息通常是一个 JSON 对象,包含服务器的名称、启动命令和参数。

以下是配置示例中关键参数的说明,您需要根据您的环境修改路径和地址:

{
  "mcpServers": {
    "KS-MCP-Server": { // 您为这个服务器定义的名称
      "command": "ks-mcp-server", // 指向已添加到PATH的可执行文件名称
      "args": [ // 启动服务器时传递的参数列表
        "stdio", // 启动Stdio传输模式的服务器
        "--ksconfig", "[to-be-replace]/kubeconfig", // 指定您创建的KSConfig文件的路径
        "--ks-apiserver", "http://[to-be-replace]:30880" // 可选:覆盖KSConfig中的KubeSphere API地址,如果您的API是HTTP或其他端口
      ]
    }
  }
}
  • '"command"': 指定如何启动 'ks-mcp-server' 程序。由于您已将其添加到 '$PATH',这里通常只需要写程序名。
  • '"args"': 指定启动 'ks-mcp-server' 时需要传递的参数。
    • '"stdio"': 告诉服务器使用标准输入/输出来与客户端通信(这是许多桌面客户端支持的方式)。
    • '"--ksconfig", "[to-be-replace]/kubeconfig"': 指定您在步骤 3 中创建的 KubeSphere 配置文件的完整路径。请务必替换 '[to-be-replace]/kubeconfig' 为实际路径。
    • '"--ks-apiserver", "http://[to-be-replace]:30880"': (可选) 如果需要覆盖 'KSConfig' 文件中指定的 KubeSphere API 地址,使用此参数。例如,如果您的 KubeSphere API 通过 NodePort 在 HTTP 端口暴露,可以使用这个参数。请替换 'http://[to-be-replace]:30880' 为实际地址和端口。

请将这些信息添加到您的 MCP 客户端的 MCP 服务器配置中。具体操作方法请参考您使用的 MCP 客户端(如 Claude Desktop, Cursor)的文档。

基本使用方法

在 MCP 客户端中配置并启用 KubeSphere MCP 服务器后,您就可以在与 LLM 的聊天交互中直接提及 KubeSphere 的相关概念。LLM 客户端会识别您的请求,并自动调用 'ks-mcp-server' 提供的工具来获取您需要的 KubeSphere 信息,例如:

  • "列出我所有工作空间的信息"
  • "获取集群 'kubernetes' 中的所有节点"
  • "查看工作空间 'devops' 的配额使用情况"
  • "列出项目 'my-project' 中的所有 Pod"

服务器会返回 KubeSphere API 提供的 JSON 格式的原始数据,LLM 客户端会解析这些数据并以自然语言的方式呈现给您。

信息

分类

开发者工具