使用说明

项目简介

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 作为通信协议,简化部署和集成。

安装步骤

  1. 克隆仓库

    git clone https://github.com/silenceper/mcp-k8s.git
    cd mcp-k8s
  2. 构建服务器

    确保已安装 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' 参数。请谨慎启用写操作,并确保充分理解潜在的安全风险。

基本使用方法

  1. 启动 MCP 服务器

    在安装步骤完成后,你可以通过 MCP 客户端配置中指定的命令和参数来启动 MCP 服务器。通常,MCP 客户端会自动启动并管理 MCP 服务器的生命周期。

  2. 在 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 新手提供更友好的学习体验。

信息

分类

开发者工具