使用说明
Kubernetes MCP 服务器
这个项目提供了一个模型上下文协议(MCP)服务器,作为连接您Kubernetes(K8s)集群的桥梁。它利用了 fastmcp 框架,用于将您的K8s API作为工具和资源集公开,使您能够从任何兼容MCP的客户端(如Cursor)与您的集群进行交互。
一旦连接成功,您就可以使用自然语言管理您的集群——列出Pod、检查部署状态、阅读日志等,所有这些操作都可以在您的编辑器内完成。
概述
服务器通过连接到您的Kubernetes集群的API服务器,读取其OpenAPI规范,并为API端点动态生成MCP工具和资源来工作。这意味着,集群API中可用的任何资源,包括自定义资源(CRDs),都可以提供给您的MCP客户端使用。
它使用您本地的 kubeconfig 用于身份验证的文件,因此它可以与任何您可以通过(相应方式)访问的Kubernetes集群一起工作 kubectl。
先决条件
在开始之前,请确保已安装以下内容:
- Python 3.11+(或可译为“Python 3.11及以上版本”)
- 紫外线一个极其快速的Python包安装器和解析器。服务器的运行命令是基于它构建的。
- **`kubectl` 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。**Kubernetes 命令行工具。
- 一个已配置的
~/.kube/config指向正在运行的 Kubernetes 集群的文件。 - Node.js 和 npx运行MCP Inspector所需的
fastmcp dev命令。
安装
-
克隆仓库:
git clone <your-repository-url> cd k8s-mcp-server -
使用以下方式安装依赖项:
uv: 假设你有一个pyproject.toml或者requirements.txt. 如果它是pyproject.toml带有可编辑安装选项:uv pip install -e .
配置
Kubernetes 配置
服务器将自动使用您当前的上下文信息 ~/.kube/config 文件用于连接到您的 Kubernetes 集群。
要切换到不同的集群,只需在运行服务器之前更改您的当前 kubectl 上下文即可:
kubectl config use-context <your-cluster-context>
JWT 认证
这个MCP服务器现在包含了基于JWT的身份验证。所有API调用都需要在Authorization头中传递有效的JWT令牌。
生成JWT令牌
使用随附的令牌生成器来创建用于测试的JWT令牌:
# Generate a token for default user (expires in 1 hour)
python generate_token.py
使用JWT令牌
在调用MCP服务器时,客户端必须在Authorization头中包含JWT令牌:
Authorization: Bearer <your-jwt-token>
令牌有效载荷结构
生成的令牌包含以下声明:
user用户名iat在时间戳时发布exp到期时间戳permissions权限数组(例如,["k8s:read", "k8s:write"])
运行服务器
你可以以开发模式或生产模式运行服务器。假设你的主服务器文件名为 main.py。
开发模式
对于开发,请使用 fastmcp dev 命令。这将启动服务器和MCP Inspector,后者提供了一个网页用户界面,用于测试和检查您的服务器工具及资源。
fastmcp dev main.py
这将启动 Inspector 用户界面,您可以将其在浏览器中打开以与 K8s MCP 服务器进行交互。
生产模式
要运行服务器以供常规使用,请使用 fastmcp run 命令。
fastmcp run main.py
服务器将启动并监听来自MCP客户端的连接请求。
在MCP客户端(例如,Cursor)中安装
这个(或“它”) fastmcp CLI 提供了一种简单的方法,将您的运行中的服务器安装到 MCP 客户端中。
自动安装(推荐)
将服务器安装到Cursor中最简单的方法是使用 install cursor 命令。此命令生成一个特殊 cursor:// 深度链接及尝试打开它的操作,这将提示您在Cursor中添加该服务器。
-
确保MCP服务器已(启动/配置/准备就绪等,具体根据上下文确定) 不是 跑步。
-
运行以下命令:
fastmcp install cursor main.py -n "K8s MCP Cluster"- 你可以改变
-n "My K8s Cluster"根据您喜欢的任何名字。
- 你可以改变
-
Cursor 应该会弹出一个对话框以确认新的 MCP 服务器。Cursor 将自动启动该服务器
uv在背景中。
如果Cursor没有自动打开,请复制以下内容: cursor:// 在你的终端中打印出链接,并将其粘贴到 Cursor 的命令面板中Cmd+K 或者 Ctrl+K并运行它。
手动安装
如果您使用的是不同的MCP客户端,或者自动安装失败,您可以生成原始的JSON配置。
-
运行
install mcp-config命令:fastmcp install mcp-config main.py -n "K8s MCP Cluster" --copy -
这会将配置JSON复制到您的剪贴板。
-
将JSON粘贴到您的MCP客户端的自定义服务器配置部分。
在AI聊天中的示例用法
一旦服务器安装在您的客户端上,您就可以发出如下请求:
列出该(集群/命名空间/等)中的所有Pod
default命名空间
获取该Pod的日志
my-app-pod-12345
描述部署情况
my-nginx-deployment
获取该服务的YAML文件
my-service在……中production命名空间
其工作原理
这台服务器是使用……构建的 FastMCPOpenAPI 来自(某处的)班级 fastmcp 库。在启动时,它执行以下步骤:
- 使用本地初始化一个Kubernetes API客户端
kubeconfig。 - 从您的集群API服务器获取实时的OpenAPI v3规范。
- 解析OpenAPI规范,并智能地将API端点映射到MCP组件:
GET单个资源的端点(例如。,/api/v1/namespaces/{namespace}/pods/{name}) 变成ResourceTemplatesGET资源列表的端点(例如。,/api/v1/pods) 变成ResourcesPOST,PUT,DELETE,以及其他以行动为导向的终点(或目标)变为Tools
- 将所有生成的组件暴露给连接的MCP客户端,随时准备使用。
贡献
欢迎贡献!请随时提出问题或提交拉取请求。
这个README文件是基于服务器生成的 fastmcp 框架。
