mcp-k8s

mcp-k8s 是一个 MCP Server,允许 AI 模型通过 MCP 协议Kubernetes 集群交互,实现资源的查询和管理。它简化了使用 AI 进行 Kubernetes 运维和开发任务。

mcp-k8s
mcp-k8s能力展示

mcp-k8s 解决方案概述

mcp-k8s 是一款专为 Kubernetes 设计的 MCP 服务器,它充当 AI 模型与 Kubernetes 集群之间的桥梁。通过标准的 MCP 协议,它使大型语言模型 (LLM) 等 AI 能够查询和管理 Kubernetes 资源。其核心功能包括发现集群支持的资源类型,以及对资源执行精细可控的 CRUD (创建、读取、更新、删除) 操作,并使用标准的 kubeconfig 文件进行集群连接认证。这极大地简化了开发和运维人员的工作,允许他们通过自然语言交互来管理复杂的 Kubernetes 环境,替代繁琐的 kubectl 命令。mcp-k8s 基于 Go 语言和 client-go 库构建,可通过标准输入/输出 (stdio) 或 HTTP/SSE 方式与 MCP 客户端无缝集成,为 AI 驱动的 Kubernetes 自动化运维和资源管理提供了强大支持。

mcp-k8s 核心能力

K8s资源类型发现

mcp-k8s 核心功能之一是使 AI 模型能够动态发现目标 Kubernetes 集群所支持的资源类型。这包括 Kubernetes 内置的标准资源(如 Pods, Deployments, Services)以及通过 Custom Resource Definitions (CRDs) 添加的自定义资源。该功能通过 get_api_resources MCP 工具实现。当 AI 模型(通过 MCP 客户端)调用此工具时,mcp-k8s 服务器会利用其内部的 Kubernetes client-go 库与 Kubernetes API 服务器通信,查询 /apis/api 端点以获取完整的可用 API 资源列表。服务器随后将这些信息格式化并通过 MCP 协议返回给 AI 模型。这对 AI 模型至关重要,因为它能在执行具体操作前了解集群的能力范围,避免尝试操作不存在的资源类型。例如,一个运维 AI 助手在被要求“检查所有数据库实例”时,可以先调用 get_api_resources 确认是否存在如 DatabasePostgreSQLCluster 这样的 CRD,然后再进行后续查询。这为 AI 提供了上下文感知能力,使其能更智能、更准确地与特定 Kubernetes 环境交互。

K8s资源查询与读取

mcp-k8s 提供了强大的 Kubernetes 资源查询和读取能力,允许 AI 模型通过标准化的 MCP 接口获取集群状态信息。这主要通过 list_resourcesget_resource 两个 MCP 工具实现。list_resources 工具允许 AI 请求特定类型的所有资源实例列表,可以指定命名空间或查询集群范围的资源。例如,AI 可以请求“列出 'production' 命名空间中的所有 Pod”。get_resource 工具则用于获取单个特定资源的详细信息(通常是其 YAML 或 JSON 定义),例如“获取名为 'nginx-deployment' 的 Deployment 的详细配置”。在后台,mcp-k8s 接收到这些工具调用请求后,会解析参数(资源类型、名称、命名空间等),然后使用 client-go 库向 Kubernetes API 服务器发起相应的 GET 请求。获取到的资源数据经过处理和格式化后,通过 MCP 协议返回给 AI 模型。这项功能使 AI 能够获取实时、准确的集群状态,是进行问题诊断、配置审计或生成报告的基础。开发者可以通过自然语言让 AI 查询资源,而无需记住复杂的 kubectl 命令语法。

可控的K8s资源操作

mcp-k8s 不仅能读取 Kubernetes 资源,还能执行创建(Create)、更新(Update)和删除(Delete)等写操作,但其核心价值在于这些写操作是可配置可控的。管理员在启动 mcp-k8s 服务器时,可以通过命令行参数(-enable-create, -enable-update, -enable-delete)独立地启用或禁用这三类写操作。默认情况下,所有写操作都是禁用的,以确保安全。这为 AI 模型与 Kubernetes 集群的交互提供了一个重要的安全层。例如,一个用于监控和告警的 AI 助手可能只需要读取权限,管理员可以只启用 -enable-list(默认启用)和相关的读取工具,而禁用所有写操作。而一个用于自动化部署或测试环境管理的 AI,则可能需要被授予创建和删除资源的权限,此时管理员可以显式启用 -enable-create-enable-delete。这种精细化的控制允许根据具体用例和信任级别调整 AI 的能力,防止意外或恶意的修改。当 AI 通过 MCP 客户端调用如 create_resource, update_resource, 或 delete_resource 工具时,mcp-k8s 会首先检查对应的启用标志,只有在标志为真时,才会通过 client-go 执行相应的 Kubernetes API 调用。