Kubernetes集群管理服务

MCP Server Kubernetes是一个能够连接并管理Kubernetes集群的服务,支持多种Kubernetes操作和Helm图表管理。

  • by kmathur
  • 本地部署
  • 更新于
在 GitHub 查看 kmathur/mcp-server-kubernetes

使用说明

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上下文。确保你有:

  1. kubectl已安装并位于您的PATH中
  2. 已配置上下文的有效kubeconfig文件
  3. 访问为kubectl配置的Kubernetes集群(例如minikube、Rancher Desktop、GKE等)
  4. 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

开发工作流程

  1. 在开发模式下启动服务器(监视文件更改):
bun run dev
  1. 运行单元测试:
bun run test
  1. 构建项目:
bun run build
  1. 本地测试 检查员
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
  1. 使用Claude Desktop进行本地测试
{
  "mcpServers": {
    "mcp-server-kubernetes": {
      "command": "node",
      "args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
    }
  }
}
  1. 本地测试 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添加集群。