使用说明
MCP服务器Kubernetes
MCP服务器,可以连接到Kubernetes集群并对其进行管理。
https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed
使用Claude Desktop
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
服务器将自动连接到您当前的kubectl上下文。确保你有:
- kubectl已安装并位于您的PATH中
- 已配置上下文的有效kubeconfig文件
- 访问为kubectl配置的Kubernetes集群(例如minikube、Rancher Desktop、GKE等)
- Helm v3已安装并位于您的PATH中(不需要Tiller)。如果您不打算使用Helm,则可以选择。
您可以通过让Claude列出您的Pod或创建测试部署来验证您的连接。
如果有错误,请打开标准终端并运行 kubectl get pods 查看您是否可以在没有凭据问题的情况下连接到集群。
使用mcp聊天
mcp聊天 是MCP服务器的CLI聊天客户端。您可以使用它与Kubernetes服务器进行交互。
npx mcp-chat --server "npx mcp-server-kubernetes"
或者,将上面的现有Claude Desktop配置文件传递给它(Linux应将正确的路径传递给config):
雨衣:
npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"
窗户:
npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"
特性
- [x] 连接到Kubernetes集群
- [x] 列出所有Pod、服务、部署和节点
- [x] 创建、描述、删除pod
- [x] 列出所有命名空间,创建命名空间
- [x] 创建自定义pod和部署配置,更新部署副本
- [x] 创建服务
- [x] 从pod获取日志以进行调试(支持pod、部署、作业和标签选择器)
- [x] 支持Helm v3安装图表
- 安装具有自定义值的图表
- 卸载版本
- 升级现有版本
- 对命名空间的支持
- 支持版本规范
- 支持自定义存储库
- [x] kubectl解释和kubectl api资源支持
- [x] 从集群获取Kubernetes事件
- [x] 端口转发到吊舱或服务
- [x] 创建、列出和描述cronjobs
- [x] 用于读取和仅创建/更新群集访问的无损模式
地方发展
确保你有 bun已安装克隆仓库并安装依赖关系:
git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
开发工作流程
- 在开发模式下启动服务器(监视文件更改):
bun run dev
- 运行单元测试:
bun run test
- 构建项目:
bun run build
- 本地测试 检查员
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
- 使用Claude Desktop进行本地测试
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}
- 本地测试 mcp聊天
bun run chat
贡献
请参阅 贡献.md 文件以获取详细信息。
高级
其他高级功能
有关使用SSE传输、无损模式和 ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS,请参阅 高级_ README.md.
建筑
本节介绍MCP Kubernetes服务器的高级架构。
请求流
下面的序列图说明了请求如何在系统中流动:
sequenceDiagram
participant Client
participant Transport as StdioTransport
participant Server as MCP Server
participant Handler as Request Handler
participant K8sManager as KubernetesManager
participant K8s as Kubernetes API
Client->>Transport: Send Request via STDIO
Transport->>Server: Forward Request
alt Tools Request
Server->>Handler: Route to tools handler
Handler->>K8sManager: Execute tool operation
K8sManager->>K8s: Make API call
K8s-->>K8sManager: Return result
K8sManager-->>Handler: Process response
Handler-->>Server: Return tool result
else Resource Request
Server->>Handler: Route to resource handler
Handler->>K8sManager: Get resource data
K8sManager->>K8s: Query API
K8s-->>K8sManager: Return data
K8sManager-->>Handler: Format response
Handler-->>Server: Return resource data
end
Server-->>Transport: Send Response
Transport-->>Client: Return Final Response
发布新版本
转到 发布页面,单击“草稿新版本”,单击“选择标签”,然后使用“v{major}.{minor}.{patch}”semver格式键入新版本号来创建新标签。然后,如有必要,写一个发布标题“release v{major}.{minor}.{patch}”和描述/更改日志,然后单击“发布发布”。
这将创建一个新标记,该标记将通过cd.yml工作流触发新的版本构建。一旦成功,新版本将发布到 npm请注意,不需要手动更新package.json版本,因为工作流会自动更新package.json文件中的版本号并将提交推送到main。
未计划的
身份验证/向kubectx添加集群。
