Token导航 LogoToken导航TokenDH.com
Kubectl MCP logo
运维云端未说明官方级别未说明来源级核验

Kubectl MCP

MCP Server

一个提供通过kubectl对Kubernetes集群进行只读访问的MCP服务器,明确禁止对Secrets的访问。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
安全控制集群管理Kubernetes只读访问JavaScript

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

rkirkendall

提供方

rkirkendall

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

kubectl MCP服务器

一个模型上下文协议(MCP)服务器,通过以下方式提供对Kubernetes集群的只读访问 kubectl,明确阻止Secrets访问。

特性

  • 只读操作:只允许使用安全的只读kubectl动词
  • 秘密被封锁:显式阻止对Kubernetes Secrets的任何访问
  • 壳牌保险箱:不允许使用shell元字符,防止命令注入
  • 可配置的:支持配置文件和环境变量
  • 优雅关闭:正确处理信号情报/信号

安装

npm install

用法

作为HTTP MCP服务器

服务器作为HTTP服务器运行,可以通过网络访问:

node index.js

默认情况下,服务器会监听 http://0.0.0.0:3005

配置

配置可以通过以下方式提供:

  1. 配置文件 (按顺序检查):

- 中指定的路径 KUBECTL_MCP_CONFIG 环境变量 - ./kubectl-mcp.json 在当前目录中 - ~/.kubectl-mcp.json 在主目录中

  1. 环境变量:

- KUBECTL_PATH -kubectl二进制文件的路径(默认: kubectl) - KUBECTL_MCP_LOG_LEVEL -日志级别:调试、信息、警告、错误、静默(默认值: info) - KUBECTL_MCP_CONFIG -配置文件的路径 - PORT -HTTP服务器端口(默认值: 3005) - HOST -HTTP服务器主机(默认值: 0.0.0.0)

示例 kubectl-mcp.json:

{
  "kubectlPath": "kubectl",
  "logLevel": "info",
  "port": 3005,
  "host": "0.0.0.0",
  "additionalResources": [],
  "additionalFlags": []
}

使用MCP客户端(网络接入)

服务器公开以下HTTP端点:

  • 发布 /mcp -主MCP协议端点
  • 获取 /health -健康检查端点
  • 获取 /sse -用于流式传输的服务器发送事件端点

要通过网络从MCP客户端连接:

// Example connection
const mcpEndpoint = 'http://your-server-ip:3005/mcp';

// To list tools
const response = await fetch(mcpEndpoint, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'tools/list',
    params: {}
  })
});

// To call kubectl tool
const response = await fetch(mcpEndpoint, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 2,
    method: 'tools/call',
    params: {
      name: 'kubectl',
      arguments: {
        command: 'get pods -n default'
      }
    }
  })
});

可用工具

kubectl

执行只读kubectl命令。

输入:

  • command (string):kubectl命令为字符串(例如。, "get pods -n default")
  • args (array):kubectl命令作为数组(例如。, ["get", "pods", "-n", "default"])

例子:

{
  "name": "kubectl",
  "arguments": {
    "command": "get pods -n kube-system"
  }
}

kubectl_status

获取kubectl代理服务器的状态信息。

例子:

{
  "name": "kubectl_status",
  "arguments": {}
}

安全策略

允许的动词

  • get -获取资源
  • describe -描述资源
  • logs -查看容器日志
  • top -显示资源使用情况
  • api-resources -列出API资源
  • api-versions -列出API版本
  • cluster-info -显示集群信息
  • version -显示kubectl和Kubernetes版本
  • config view -查看kubeconfig(仅查看子命令)

受阻资源

  • secrets / secret -明确阻止
  • 名称中包含“secret”的任何资源

允许的资源

核心命名空间:

  • Pod、部署、状态集、守护进程、作业、cronjobs
  • 服务、端点、复制集、配置映射
  • 服务帐户、播客中断预算、网络策略
  • 租赁、事件、持续的财产索赔

核心集群范围:

  • 节点、命名空间、组件状态

自定义资源(CRD):

  • Traefik:入口路由、中间件、服务器端口
  • 证书管理器:证书、颁发者、集群颁发者、订单、挑战
  • Calico:ippools、bgppeers、bgp配置、felix配置、阻塞性
  • 自定义:endpointalias(根据需要扩展)

允许的标志

允许使用常见的只读标志:

  • 输出: -o, --output
  • 选择器: -l, --selector, --field-selector
  • 命名空间: -n, --namespace, -A, --all-namespaces
  • 观看: -w, --watch
  • 显示器: --show-labels, --show-kind, --no-headers
  • 日志: --tail, --since, --follow, -f, --previous, --timestamps
  • 集装箱: -c, --container
  • 其他: --context, --kubeconfig, --sort-by等等。

被拒旗帜

任何可能引发突变或危险操作的标志:

  • --force, --grace-period, --cascade
  • --dry-run, --field-manager, --overwrite
  • --patch, --prune, --filename, --from-file
  • --save-config, --record

附加保护

  • 不允许使用shell元字符(|, ;, &,回溯, >等等)
  • 无球形图案
  • 命令直接通过spawn执行,而不是通过shell执行
  • 所有命令都在启动环境中从启动目录执行

示例命令

有效命令

# Get all pods in default namespace
kubectl get pods

# Get deployments with labels
kubectl get deployments -l app=nginx -n production

# Describe a specific node
kubectl describe node worker-1

# View logs with tail
kubectl logs my-pod -n default --tail=100 -f

# Get resource usage
kubectl top nodes

# List API resources
kubectl api-resources

# View cluster info
kubectl cluster-info

# Get services across all namespaces
kubectl get svc -A

# Describe a certificate
kubectl describe certificate my-cert -n cert-manager

被拒绝的命令

# Blocked: mutation verb
kubectl delete pod my-pod

# Blocked: accessing secrets
kubectl get secrets

# Blocked: applying changes
kubectl apply -f config.yaml

# Blocked: shell metacharacters
kubectl get pods | grep nginx

# Blocked: dangerous flag
kubectl get pods --force

发展

项目结构

cluster-info-mcp/
├── index.js           # Main MCP server
├── validator.js       # Command validation logic
├── executor.js        # kubectl command execution
├── config.js          # Configuration management
├── package.json       # Node.js dependencies
└── README.md         # This file

日志记录

通过环境变量或配置文件设置日志级别:

KUBECTL_MCP_LOG_LEVEL=debug node index.js

日志被写入stderr以避免干扰stdio协议。

故障排除

未找到kubectl

确保kubectl在您的PATH中或设置kubectl_PATH环境变量:

export KUBECTL_PATH=/usr/local/bin/kubectl
node index.js

权限不足

确保脚本可执行:

chmod +x index.js

连接问题

检查你的kubeconfig配置是否正确:

kubectl config view
kubectl cluster-info

许可证

麻省理工学院

目录标签

目录标签

安全控制集群管理Kubernetes只读访问JavaScript本地部署MCP协议

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP