SuperAPI AI 工具集

mkp

MKP 是面向 Kubernetes 的 Model Context Protocol(MCP)服务器,由 StacklokLabs 开发。它让 LLM 驱动的应用能够直接与 Kubernetes 集群交互,通过 MCP 协议提供资源列举、获取、创建更新、删除以及在 Pod 中执行命令等工具,无需依赖 kubectl、helm 等外部 CLI。MKP 以 Go 语言实现,直接调用 Kubernetes API,支持任意资源类型及 CRD,内置速率限制,默认只读,可通过 --read-write 开启写操作。

访问官网

工具介绍

用途

MKP 是一个面向 Kubernetes 的 Model Context Protocol(MCP)服务器,用于让 LLM 驱动的应用与 Kubernetes 集群进行交互。它通过 MCP 协议暴露操作 Kubernetes 资源的工具,使 AI 应用可以在受控范围内列举、获取、创建或更新资源,并在 Pod 中执行命令。

主要能力

  • 列举 Kubernetes API 服务器支持的资源,包括集群级资源和命名空间级资源。
  • 获取资源及其子资源(包括 status、scale、logs 等)。
  • 应用(创建或更新)集群级资源与命名空间级资源。
  • 在 Pod 中执行命令,并支持超时控制。
  • 基于 API Machinery 的 unstructured client 实现通用、可插拔的资源操作,不硬编码资源模式,自动支持自定义资源定义(CRD)。
  • 内置速率限制,用于防止过多的 API 调用。
  • 提供 MCP 资源访问,URI 格式为:集群级资源 k8s://clustered/{group}/{version}/{resource}/{name};命名空间级资源 k8s://namespaced/{namespace}/{group}/{version}/{resource}/{name}。

工具说明

MKP 提供以下 MCP 工具:

  • get_resource:获取 Kubernetes 资源或其子资源。必需参数包括 resource_type、version、resource、name;可选参数有 group、namespace、subresource、parameters。对于 Pod 日志,支持 container、previous、sinceSeconds、sinceTime、timestamps、limitBytes、tailLines 等参数,默认仅返回最后 100 行且不超过 32KB,可通过参数覆盖。常规资源支持 resourceVersion 参数。
  • list_resources:列举指定类型的 Kubernetes 资源。必需参数 resource_type;可选参数包括 label_selector、include_annotations(默认 true)、exclude_annotation_keys、include_annotation_keys。支持注解过滤,默认排除 kubectl.kubernetes.io/last-applied-configuration;exclude_annotation_keys 支持末尾通配符 *;指定 include_annotation_keys 时仅包含这些注解;include_annotations 设为 false 可完全移除注解。
  • apply_resource:应用(创建或更新)Kubernetes 资源。必需参数 resource_type、manifest。
  • post_resource:向 Kubernetes 资源或其子资源发送 POST 请求,尤其适用于在 Pod 中执行命令。必需参数 resource_type、name、body;可选参数 subresource、parameters。Pod exec 的 body 支持 command(必需,字符串或字符串数组)、container(可选,默认第一个容器)、timeout(可选,默认 15 秒,最大 60 秒)。超时命令会被终止并返回超时错误;响应包含 stdout、stderr 和错误信息。
  • delete_resource:资料中未单独列出该工具的详细参数,但在速率限制说明中被提及。

使用方式

前置要求:Go 1.24 或更高版本;Kubernetes 集群及 kubeconfig;Task 用于运行任务。

构建步骤:

  1. 克隆仓库:git clone https://github.com/StacklokLabs/mkp.git && cd mkp
  2. 安装依赖:task install
  3. 构建服务器:task build

运行服务器时可使用默认 kubeconfig、指定 kubeconfig 或指定端口(具体命令资料未提供完整示例)。

MKP 也可通过 ToolHive 作为 MCP 服务器运行,ToolHive 可简化 MCP 服务器的部署和管理;具体设置可参考 ToolHive 文档中的 UI、CLI 或 Kubernetes operator 说明。

传输协议:支持 Streamable HTTP(默认,适用于多数场景)和 SSE(旧版传输协议,主要用于兼容旧客户端)。可通过 CLI 标志或环境变量配置;在 ToolHive 环境中运行 MKP 时,MCP_TRANSPORT 环境变量由 ToolHive 自动设置。

默认情况下,MKP 将所有 Kubernetes 资源作为 MCP 资源提供,为 LLM 提供上下文;在大型集群中可能占用大量上下文空间,可通过 --serve-resources 标志禁用资源发现。即使禁用资源发现,MCP 工具仍可正常使用。

默认以只读模式运行,不允许写操作,apply_resource、delete_resource、post_resource 工具不可用;可通过 --read-write 标志启用写操作。

速率限制:内置令牌桶算法,按操作类型区分限制——读操作(list_resources、get_resource)每分钟 120 次;写操作(apply_resource、delete_resource)每分钟 30 次;其他操作默认每分钟 60 次。速率限制按客户端会话应用,可通过命令行标志启用或禁用,也可通过环境变量自定义:MKP_RATE_LIMIT_DEFAULT(默认 60)、MKP_RATE_LIMIT_READ(默认 120)、MKP_RATE_LIMIT_WRITE(默认 30)。

适用场景

  • 需要让 LLM 应用安全、受控地读取 Kubernetes 集群资源信息的场景。
  • 需要在 AI 工作流中查看 Pod 日志、执行 Pod 内命令(带超时控制)的场景。
  • 需要在大型集群中对注解输出进行过滤以避免 LLM 上下文溢出的场景。
  • 需要通过 MCP 资源为 LLM 提供集群上下文,或需要兼容旧 MCP 客户端的场景。

限制

  • 默认只读,写操作需显式启用 --read-write。
  • Pod exec 命令超时最大 60 秒,超时会被终止。
  • 默认 Pod 日志仅返回最后 100 行且不超过 32KB。
  • 速率限制按客户端会话生效,超过限制的调用会被限制。
  • 大集群中默认提供全部资源作为 MCP 资源可能占用大量 LLM 上下文,需要手动禁用资源发现。
  • 资料未提供具体的安装包、收费方案、价格、平台支持范围或使用效果数据。

许可与贡献

采用 Apache v2 许可证。欢迎贡献,可查阅 CONTRIBUTING 指南;遇到问题或功能请求可在仓库提交 issue 或加入社区 Discord 的 #mcp-servers 频道。