Kubernetes MCP服务器

Kubernetes MCP服务器是一个基于模型上下文协议(MCP)的服务,提供与Kubernetes API的无缝集成,支持开发者、操作员和AI工具进行高级自动化和交互操作。

  • by briankscheong
  • Go
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 briankscheong/k8s-mcp-server

使用说明

Kubernetes MCP服务器🚀

Kubernetes MCP服务器是一个 模型上下文协议(MCP) 服务器,提供与Kubernetes API的无缝集成,为开发人员、操作员和人工智能工具提供高级自动化和交互功能。

目录

概述📊

此MCP服务器使AI工具能够使用自然语言与Kubernetes集群交互,提供以下功能:

  • 🔍 检索和分析集群资源
  • 📈 监控部署、Pod和服务
  • 🛠️ 通过AI接口执行常见的kubectl操作
  • 🔧 在人工智能的帮助下解决集群问题

先决条件✅

  1. 具有API访问权限的Kubernetes集群
  2. 有效的kubeconfig文件或服务帐户凭据
  3. 为所需操作提供适当的RBAC权限

安装💻

使用Claude Desktop

将以下内容添加到您的Claude Desktop配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "kubernetes": {
      "command": "path/to/k8smcp",
      "args": [
        "stdio",
        "--kubeconfig=/path/to/your/kubeconfig"
      ]
    }
  }
}

使用VS代码

将以下内容添加到您的VS代码用户设置(JSON)文件中,或 .vscode/mcp.json 在您的工作空间中:

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "kubeconfig_path",
        "description": "Path to kubeconfig file",
        "default": "${env:HOME}/.kube/config"
      }
    ],
    "servers": {
      "kubernetes": {
        "command": "path/to/k8smcp",
        "args": [
          "stdio",
          "--kubeconfig=/path/to/your/kubeconfig"
        ]
      }
    }
  }
}

与Cline一起使用

将以下内容添加到Cline配置文件中(path/to/cline_mcp_settings.json 选择“配置MCP服务器”后):

{
  "mcpServers": {
    "kubernetes": {
      "disabled": false,
      "timeout": 60,
      "command": "path/to/k8smcp",
      "args": [
        "stdio",
        "--read-only=false"
        "--kubeconfig=/path/to/your/kubeconfig"
      ],
      "env": {
        "K8S_MCP_TOOLSETS": "all"
      },
      "transportType": "stdio"
    }
  }
}

确保更新 command 值与k8smcp可执行文件的路径。您可以使用以下方式设置服务器配置 args 或 env.

从源代码构建

克隆存储库并构建二进制文件:

git clone https://github.com/briankscheong/k8s-mcp-server.git
cd k8s-mcp-server
make build

或者直接用Go安装:

go install github.com/briankscheong/k8s-mcp-server/cmd/k8s-mcp-server@latest

命令行选项⌨️

A Kubernetes MCP Server that provides tools for interacting with Kubernetes clusters.

Environment Variables:
  K8S_MCP_KUBECONFIG            Path to kubeconfig file
  K8S_MCP_NAMESPACE             Default Kubernetes namespace
  K8S_MCP_IN_CLUSTER            Use in-cluster config (true/false)
  K8S_MCP_READ_ONLY             Restrict to read-only operations (true/false)
  K8S_MCP_RESOURCE_TYPES        Comma-separated list of resource types
  K8S_MCP_TOOLSETS              Comma-separated list of toolsets to enable
  K8S_MCP_EXPORT_TRANSLATIONS   Export translations (true/false)

Usage:
  k8smcp [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  sse         Start sse server
  stdio       Start stdio server

Flags:
      --export-translations      Save translations to a JSON file
  -h, --help                     help for k8smcp
      --in-cluster               Use in-cluster config instead of kubeconfig file
      --kubeconfig string        Path to the kubeconfig file (default "/Users/briancheong/.kube/config")
      --namespace string         Default Kubernetes namespace to target (default "default")
      --read-only                Restrict operations to read-only (no create, update, delete) (default true)
      --resource-types strings   Comma separated list of Kubernetes resource types to enable (pods,deployments,services,configmaps,namespaces,nodes) (default [all])
      --toolsets strings         Comma separated list of tools to enable (default [all])
  -v, --version                  version for k8smcp

Use "k8smcp [command] --help" for more information about a command.

服务器传输选项🔄

标准

这 stdio 对于大多数用户来说,传输是本地集成的默认和推荐选项:

k8smcp stdio --kubeconfig=/path/to/your/kubeconfig

上海证券交易所

这 sse transport支持基于HTTP的JSON-RPC消息传输。当在需要为客户端连接公开端口的Kubernetes集群中部署服务器时,这可能会很有帮助。

k8smcp sse --in-cluster=true

[!注意] 这 --in-cluster=true 如果服务器部署在Kubernetes集群中,则需要设置标志。

访问控制🔒

默认情况下,服务器应用提供的kubeconfig或服务帐户的权限。为了增强安全性,您可以:

  1. 创建具有受限RBAC权限的专用服务帐户
  2. 设置命名空间限制以防止跨命名空间操作
  3. 启用只读模式以防止集群状态的突变

工具🧰

Kubernetes MCP Server为与Kubernetes集群交互提供了一套全面的工具。

资源操作📦

  • get_pod -获取特定pod的详细信息

    • namespace:Pod命名空间(字符串,可选,默认为当前命名空间)
    • name:Pod名称(字符串,必填)
  • list_pods -在命名空间中列出Pod

    • namespace:用于列出Pod的命名空间(字符串,可选,默认为当前命名空间)
    • label_selector:按标签选择器过滤Pod(字符串,可选)
    • field_selector:按字段选择器过滤Pod(字符串,可选)
  • get_pod_logs -从pod获取日志

    • namespace:Pod命名空间(字符串,可选,默认为当前命名空间)
    • name:Pod名称(字符串,必填)
    • container:容器名称(字符串,可选,默认为第一个容器)
    • tail_lines:从末尾检索的行数(数字,可选)
    • previous:从上一个容器实例获取日志(布尔值,可选)
  • get_部署 -获取有关特定部署的信息

    • namespace:部署命名空间(字符串,可选,默认为当前命名空间)
    • name:部署名称(字符串,必填)
  • list_部署 -列出命名空间中的部署

    • namespace:用于列出部署的命名空间(字符串,可选,默认为当前命名空间)
    • label_selector:按标签选择器筛选部署(字符串,可选)
  • get_service -获取特定服务的信息

    • namespace:服务命名空间(字符串,可选,默认为当前命名空间)
    • name:服务名称(字符串,必填)
  • list_services -在命名空间中列出服务

    • namespace:用于列出服务的命名空间(字符串,可选,默认为当前命名空间)
    • label_selector:按标签选择器筛选服务(字符串,可选)
  • get_config映射 -获取有关特定ConfigMap的信息

    • namespace:ConfigMap命名空间(字符串,可选,默认为当前命名空间)
    • name:ConfigMap名称(字符串,必填)
  • list_config映射 -在命名空间中列出ConfigMaps

    • namespace:从中列出ConfigMaps的命名空间(字符串,可选,默认为当前命名空间)
    • label_selector:按标签选择器筛选ConfigMaps(字符串,可选)
  • list_namespaces -列出群集中的所有命名空间

    • 无需参数
  • list_nodes -列出群集中的所有节点

    • 无需参数

管理操作⚙️

  • delete_pod -从命名空间中删除pod

    • namespace:Pod命名空间(字符串,可选,默认为当前命名空间)
    • name:Pod名称(字符串,必填)
    • grace_period_seconds:删除前的宽限期(数字,可选)
  • 规模部署 -将部署扩展到特定数量的副本

    • namespace:部署命名空间(字符串,可选,默认为当前命名空间)
    • name:部署名称(字符串,必填)
    • replicas:副本数量(数量,必填)

[!重要] 默认情况下,涉及修改集群中资源的工具被禁用。要启用它们,您必须设置 --read-only=false 旗帜或 K8S_MCP_READ_ONLY=false 环境变量。

未来的增强功能🔮

  • 增强RBAC集成,实现细粒度访问控制
  • 支持更多kubernetes资源
  • 支持自定义资源定义(CRD)
  • 用于部署的Helm图表管理功能
  • 集群监控和警报集成
  • 支持多个并发集群连接

贡献👥

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证⚖️

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


内置于❤️ Kubernetes和AI社区。