项目介绍
MCP Kubernetes Server

这是一个用于Kubernetes的MCP(模型上下文协议)服务器,通过与大型语言模型(LLMs)的交互来控制Kubernetes集群。
概述
此客户端允许您通过MCP工具执行常见的Kubernetes操作。它封装了kubectl命令,提供了一个简单的接口来管理Kubernetes资源。模型上下文协议(MCP)使语言模型与Kubernetes操作之间的无缝交互成为可能。
什么是MCP?
模型上下文协议(MCP)是一个框架,它使语言模型能够以结构化的方式与外部工具和服务进行交互。它提供了:
- 向语言模型暴露功能的标准方法
- 操作的上下文管理
- 工具发现和文档
- 模型与工具之间的类型安全交互
使用示例
- 在生产命名空间中为我创建一个名为nginx-app的新部署,并使用镜像nginx:latest,副本数为3。
- 将生产命名空间中的nginx-app部署更新到版本1.19。
- 将生产命名空间中的nginx-app部署扩展到5个副本。
- 获取生产命名空间中的所有Pod。
- 获取集群中的所有命名空间。
- 获取集群中的所有节点。
- 获取集群中的所有服务。
- 获取集群中的所有部署。
- 获取集群中的所有作业。
- 获取集群中的所有CronJob。
- 获取集群中的所有StatefulSet。
- 获取集群中的所有DaemonSet。
- 当前上下文是什么?
- 列出所有上下文。
- 切换到上下文<上下文名称>。
- 获取生产命名空间中<pod-name> Pod的日志。
- 获取生产命名空间中的所有事件。
- 在生产命名空间中用key1=value1标注<pod-name> Pod。
- 从生产命名空间中的<pod-name> Pod中移除标注key1。
- 在生产命名空间中向<pod-name> Pod添加标签key1=value1。
- 从生产命名空间中的<pod-name> Pod中移除标签key1。
- 在生产命名空间中将nginx-app部署暴露在80端口上。
- 将生产命名空间中名为<resource-name>的Pod、部署或服务端口转发到本地端口8080。
- 删除生产命名空间中名为<resource-name>的Pod、部署、服务、作业、CronJob、StatefulSet或DaemonSet。
即将推出的功能
- 创建集群角色。
- 删除集群角色。
- 创建集群角色绑定。
- 删除集群角色绑定。
- 创建命名空间。
- 删除命名空间。
- 创建服务账户。
- 删除服务账户。
- 创建角色。
- 删除角色。
- 创建角色绑定。
- 删除角色绑定。
大型语言模型集成
此MCP客户端设计为与大型语言模型(LLMs)无缝协作。函数被装饰为@mcp.tool(),使其可以通过模型上下文协议框架访问。
示例LLM提示
LLMs可以使用自然语言与您的Kubernetes集群进行交互。以下是一些示例提示:
- “在生产命名空间中创建一个新的nginx部署,副本数为3”
- “将nginx-app部署扩展到5个副本”
- “将nginx-app的镜像更新到版本1.19”
LLM会解释这些自然语言请求并调用适当的MCP函数,使用正确的参数。
LLM集成的好处
- 自然语言界面:使用对话语言管理Kubernetes资源
- 减少命令复杂性:无需记住确切的kubectl语法
- 防止错误:LLMs可以验证输入并提供有用的错误消息
- 上下文感知:LLMs可以在多个操作之间维护上下文
- 结构化交互:MCP确保LLMs与工具之间的类型安全和文档化的交互
要求
- 通过
kubectl配置的Kubernetes集群访问权限
- Python 3.x
- 安装并配置了MCP框架
安全注意事项
当与LLMs一起使用此客户端时,请确保:
- 对您的Kubernetes集群设置了适当的操作权限
- MCP服务器运行在一个安全的环境中
- API访问已正确认证和授权
与Claude Desktop的使用
{
"mcpServers": {
"Kubernetes": {
"command": "uv",
"args": [
"--directory",
"~/mcp/mcp-k8s-server",
"run",
"kubernetes.py"
]
}
}
}
贡献
我们欢迎对MCP Kubernetes Server的贡献!如果您想贡献:
- 分叉仓库
- 为您的特性创建一个新的分支(
git checkout -b feature/amazing-feature)
- 进行更改
- 根据需要编写或更新测试
- 提交更改(
git commit -m 'Add some amazing feature')
- 推送到您的分支(
git push origin feature/amazing-feature)
- 打开一个Pull Request
对于重大变更,请先打开一个问题来讨论您想要改变的内容。
通过Smithery安装
要通过Smithery自动安装Kubernetes Server for Claude Desktop:
npx -y @smithery/cli install @abhijeetka/mcp-k8s-server --client claude