SuperAPI AI 工具集

mcp-k8s

mcp-k8s 是一个基于 MCP(Model Control Protocol)的 Kubernetes 服务器,让用户通过自然语言与 Kubernetes 集群交互。它支持查询内置资源与 CRD、对资源进行读写操作(写操作可独立开关),并集成 Helm 的发布与仓库管理。服务器默认以 stdio 模式运行,也支持 SSE 和 Streamable HTTP 模式,可通过 kubeconfig 连接集群,适合运维、开发测试及教学场景。

访问官网

工具介绍

mcp-k8s 是一个基于 stdio 的 MCP(Model Control Protocol)服务器,用于连接 Kubernetes 集群,并通过 MCP 工具与集群交互。它允许用户使用自然语言管理 Kubernetes 资源,包括原生资源和 CRD,同时提供 Helm 支持。

主要能力

  • 查询 Kubernetes 支持的资源类型(内置资源与 CRD)。
  • 对 Kubernetes 资源进行细粒度控制的操作:
    • 读操作:获取资源详情、按类型列出资源并支持过滤选项。
    • 写操作:创建、更新、删除资源,每项可独立启用或禁用。
  • 支持所有 Kubernetes 资源类型,包括自定义资源。
  • 通过 kubeconfig 连接 Kubernetes 集群。
  • Helm 支持,具备细粒度控制:
    • Helm 发布管理(列出、获取、安装、升级、卸载)。
    • Helm 仓库管理(列出、添加、移除)。
    • 每项操作可独立启用或禁用。

可用工具

  • get_api_resources:获取集群中所有支持的 API 资源类型。
  • get_resource:获取特定资源的详细信息。
  • list_resources:列出某资源类型的所有实例。
  • create_resource:创建新资源(可禁用)。
  • update_resource:更新现有资源(可禁用)。
  • delete_resource:删除资源(可禁用)。
  • list_helm_releases:列出集群中所有 Helm 发布。
  • get_helm_release:获取特定 Helm 发布的详细信息。
  • install_helm_chart:安装 Helm chart(可禁用)。
  • upgrade_helm_chart:升级 Helm 发布(可禁用)。
  • uninstall_helm_chart:卸载 Helm 发布(可禁用)。
  • list_helm_repositories:列出已配置的 Helm 仓库。
  • add_helm_repository:添加新的 Helm 仓库(可禁用)。
  • remove_helm_repository:移除 Helm 仓库(可禁用)。

使用方式

mcp-k8s 支持三种通信模式:

  1. Stdio 模式(默认):通过标准输入/输出流与客户端通信,适用于大多数场景。
  2. SSE 模式:向 MCP 客户端暴露 HTTP 端点,可部署在远程服务器(需注意安全)。配置参数:
    • --transport:设为 "sse" 启用 SSE 模式。
    • --port:HTTP 服务器端口(默认 8080)。
    • --host:HTTP 服务器主机(默认 "localhost")。
  3. Streamable HTTP 模式:暴露支持直接 HTTP 响应和 SSE 流的 HTTP 端点,提供更好的灵活性并支持流式输出。配置参数:
    • --transport:设为 "streamable-http" 启用该模式。
    • --endpoint-path:MCP 服务器的端点路径(默认 "/mcp")。

命令行参数

可使用 mcp-k8s --help 查看所有可用选项,或 mcp-k8s --version 查看版本。

  • --kubeconfig:Kubernetes 配置文件路径(未指定则使用默认配置)。
  • --enable-create:启用资源创建操作(默认 false)。
  • --enable-update:启用资源更新操作(默认 false)。
  • --enable-delete:启用资源删除操作(默认 false)。
  • --enable-list:启用资源列表操作(默认 true)。
  • --enable-helm-release-list:启用 Helm 发布列表操作(默认 true)。
  • --enable-helm-release-get:启用 Helm 发布获取操作(默认 true)。
  • --enable-helm-install:启用 Helm chart 安装(默认 false)。
  • --enable-helm-upgrade:启用 Helm chart 升级(默认 false)。
  • --enable-helm-uninstall:启用 Helm chart 卸载(默认 false)。
  • --enable-helm-repo-list:启用 Helm 仓库列表操作(默认 true)。
  • --enable-helm-repo-add:启用 Helm 仓库添加操作(默认 false)。
  • --enable-helm-repo-remove:启用 Helm 仓库移除操作(默认 false)。
  • --transport:传输类型(stdio、sse 或 streamable-http)(默认 "stdio")。
  • --host:HTTP 传输的主机(SSE 或 Streamable HTTP)(默认 "localhost")。
  • --port:HTTP 传输的 TCP 端口(SSE 或 Streamable HTTP)(默认 8080)。
  • --endpoint-path:Streamable HTTP 传输的端点路径(默认 "/mcp")。
  • --version:显示版本信息,包括版本、提交哈希和构建日期。
  • --help 或 -h:显示帮助信息。

获取与构建

可从 releases 页面直接下载对应平台的二进制文件并使用。Makefile 会自动从 VERSION 文件注入版本信息;直接构建时版本显示为 "dev",除非手动指定 ldflags。

Docker 环境

假设镜像名为 mcp-k8s,需要映射端口并设置环境参数,可运行相应命令(具体命令未在资料中提供)。

测试 Streamable HTTP

可使用提供的测试脚本测试 Streamable HTTP 模式是否正常工作。详细测试说明见 TEST_STREAMABLE_HTTP.md。

与 MCP 客户端集成

mcp-k8s 是一个基于 stdio 的 MCP 服务器,可与任何兼容 MCP 的 LLM 客户端集成。集成说明请参考所用 MCP 客户端的文档。

适用场景

  1. 通过 LLM 管理 Kubernetes 资源
    • 交互式资源管理:通过自然语言与 LLM 交互管理 Kubernetes 资源,无需记忆复杂的 kubectl 命令。
    • 批量操作:用自然语言描述复杂的批量操作需求,由 LLM 转换为具体的资源操作。
    • 资源状态查询:用自然语言查询集群资源状态,并获得易于理解的响应。
  2. 自动化运维场景
    • 智能运维助手:作为运维人员日常集群管理任务的智能助手。
    • 问题诊断:通过自然语言描述问题,辅助进行集群问题诊断。
    • 配置审查:利用 LLM 的理解能力帮助审查和优化 Kubernetes 资源配。
  3. 开发与测试支持
    • 快速原型验证:开发者可通过自然语言快速创建和验证资源配置。
    • 环境管理:简化测试环境资源管理,快速创建、修改和清理测试资源。
    • 配置生成:根据需求描述自动生成遵循最佳实践的资源配。
  4. 教育与培训场景
    • 交互式学习:新手可通过自然语言交互学习 Kubernetes 概念和操作。
    • 最佳实践指导:LLM 在资源操作过程中提供最佳实践建议。
    • 错误解释:操作失败时提供易于理解的错误解释和修正建议。

技术栈与核心组件

  • Kubernetes client-go 库。
  • Helm v3 客户端库。
  • 使用 stdio 进行通信。
  • MCP 服务器:使用 mcp-go 的 mcp-k8s 包创建基于 stdio 的 MCP 服务器。
  • K8s 客户端:使用 client-go 连接 Kubernetes 集群。
  • Helm 客户端:使用 Helm v3 库进行 Helm 操作。
  • 工具实现:实现各种 MCP 工具以执行不同的 Kubernetes 操作。

安全考虑

  • 写操作通过独立配置开关严格控制。
  • 使用 RBAC 确保 K8s 客户端仅具有必要权限。
  • 验证所有用户输入以防止注入攻击。
  • Helm 操作遵循相同的安全原则,读操作默认启用,写操作默认禁用。

限制

资料中未提供关于收费、价格、平台支持范围、性能指标或具体效果的信息。