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

P5 MCP K8s

MCP Server

MCP::K8s是一款基于RBAC的Kubernetes工具服务,为AI助手提供动态权限感知的集群管理能力。

工具数

10

提示词数

0

GitHub Stars

0

资源数

0
权限控制ClaudeKubernetes管理Claude

安装说明

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

作者 / 组织

Getty

提供方

Getty

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

MCP::K8s-Kubernetes的MCP服务器

面向AI助手的RBAC感知Kubernetes工具

](https://metacpan.org/release/MCP-K8s) ![License](https://metacpan.org/release/MCP-K8s)

MCP::K8s提供了一种 主控程序 (模型上下文协议)服务器,允许像Claude这样的AI助手访问Kubernetes集群。

关键创新: 服务器通过RBAC动态发现连接的服务帐户可以做什么 并且仅将这些功能作为MCP工具公开。只读服务帐户获得只读工具;集群管理员获取一切。

快速开始

# Install
cpanm MCP::K8s

# Run (uses current kubeconfig context)
mcp-k8s

# Or with direct token authentication
MCP_K8S_TOKEN=$(kubectl create token my-sa) MCP_K8S_SERVER=https://my-cluster:6443 mcp-k8s

克劳德桌面版

增添 ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "kubernetes": {
      "command": "mcp-k8s",
      "env": {
        "MCP_K8S_CONTEXT": "my-cluster",
        "MCP_K8S_NAMESPACES": "default,production"
      }
    }
  }
}

克劳德代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "kubernetes": {
      "command": "mcp-k8s",
      "env": {
        "MCP_K8S_CONTEXT": "dev-cluster"
      }
    }
  }
}

运作原理

  1. 连接 --通过直接令牌、集群服务帐户或kubeconfig进行身份验证
  2. 发现 --提交 SelfSubjectRulesReview 发现每个命名空间的RBAC权限的请求
  3. 注册 --创建具有反映实际权限的动态描述的MCP工具
  4. 服务 --在stdio上运行MCP协议,检查每次工具调用的权限

MCP工具

工具说明
k8s_permissions显示RBAC权限-- 先叫这个
k8s_list列出资源(Pod、部署、服务等)
k8s_get获取单个资源(摘要、JSON或YAML)
k8s_create从清单创建资源
k8s_patch部分更新资源(战略/合并/JSON补丁)
k8s_delete删除资源
k8s_logs获取pod容器日志
k8s_events获取调试事件(按对象筛选,字段选择器)
k8s_rollout_restart触发部署/StatefulSet/DaemonSet的滚动重启
k8s_apply创建或更新资源(如 kubectl apply)

为什么是10个通用工具而不是数百个?

Kubernetes有50多种内置资源类型和无限的CRD。而不是创建特定的工具(list_pods, get_deployment, delete_configmap…),MCP::K8s使用通用工具 resource 参数——与相同的模式 kubectl get , kubectl delete 这使得MCP客户端可以管理工具数量,同时支持包括CRD在内的每种资源类型。

动态工具说明

工具描述包括基于RBAC的可用特定资源和命名空间。例如:

列出Kubernetes资源。可用:默认:Pod、部署、服务、配置映射;生产:Pod、服务

这告诉LLM它可以在不需要调用的情况下做什么 k8s_permissions 首先(尽管从全局来看应该如此)。

CRD支持

MCP::K8s支持开箱即用的自定义资源定义(CRD)。资源复数是通过API服务器发现动态解决的,因此像Cilium这样的CRD CiliumNetworkPolicy 无需任何配置即可工作。

认证

MCP::K8s支持三种身份验证方法,按顺序尝试:

方法配置用例
直接代币MCP_K8S_TOKEN + MCP_K8S_SERVERCI/CD、脚本、显式令牌
集群内从SA挂载中自动检测到作为Kubernetes pod运行
KubeconfigKUBECONFIG + MCP_K8S_CONTEXT本地开发(默认)

集群内身份验证从以下位置读取服务帐户令牌 /var/run/secrets/kubernetes.io/serviceaccount/token 并自动使用集群内CA证书。

环境变量

变量描述默认值
KUBECONFIGkubeconfig文件的路径~/.kube/config
MCP_K8S_CONTEXT要使用的Kubeconfig上下文当前上下文
MCP_K8S_TOKEN承载令牌(绕过kubeconfig)--
MCP_K8S_SERVERAPI服务器URL集群内默认值
MCP_K8S_NAMESPACES逗号分隔的命名空间自动发现

RBAC设置

使用具有最小权限的专用ServiceAccount。示例清单包含在 examples/:

# Apply the readonly example
kubectl apply -f examples/readonly-serviceaccount.yaml

# Get a token
MCP_K8S_TOKEN=$(kubectl create token mcp-k8s-readonly -n mcp-k8s)
MCP_K8S_SERVER=https://$(kubectl config view -o jsonpath='{.clusters[0].cluster.server}')
mcp-k8s

RBAC是唯一的事实来源——如果服务帐户不应该有访问权限,就不要授予它。MCP::K8s有 实现应用层权限过滤。

集群内部署

当在集群内将MCP::K8s作为pod运行时,身份验证是自动的:

  1. 安装服务帐户(例如,来自上述示例)
  2. MCP_K8S_NAMESPACES 如果需要(否则会从装载的SA命名空间自动发现)
  3. 自动读取群集中令牌和CA证书

安全

  • 服务器从其身份验证方法继承权限。使用具有最小RBAC的专用服务帐户进行AI访问。
  • 所有工具调用都验证RBAC权限 之前 执行API调用。
  • 如果服务帐户可以读取Secrets,LLM也可以。考虑排除 secrets 来自AI服务帐户角色。

Langertha Raider集成

构建一个自主的AI代理,使用 兰格塔:袭击者:

use IO::Async::Loop;
use Future::AsyncAwait;
use Net::Async::MCP;
use Langertha::Engine::Anthropic;
use Langertha::Raider;
use MCP::K8s;

my $k8s = MCP::K8s->new(namespaces => ['default', 'production']);

my $loop = IO::Async::Loop->new;
my $mcp = Net::Async::MCP->new(server => $k8s->server);
$loop->add($mcp);

async sub main {
  await $mcp->initialize;

  my $engine = Langertha::Engine::Anthropic->new(
    api_key     => $ENV{ANTHROPIC_API_KEY},
    model       => 'claude-sonnet-4-6',
    mcp_servers => [$mcp],
  );

  my $raider = Langertha::Raider->new(
    engine  => $engine,
    mission => 'You are a Kubernetes operations assistant. '
             . 'Always check permissions first, then help the user '
             . 'investigate and manage their cluster.',
  );

  my $r1 = await $raider->raid_f('What can I do on this cluster?');
  say $r1;

  # Follow-up raid — has context from the first
  my $r2 = await $raider->raid_f('List all pods and check for any issues.');
  say $r2;
}

main()->get;

突袭者在突袭中维护对话历史,因此LLM可以在后续交互中引用早期上下文(例如它发现的RBAC权限)。

现场演示

中包含一个可运行的演示脚本 examples/raider-configmap-demo.pl。它有一个AI创建、读取、更新和删除ConfigMap——完全无害:

LANGERTHA_ANTHROPIC_API_KEY=sk-ant-... perl -Ilib examples/raider-configmap-demo.pl

AI决定调用哪些MCP工具,报告每个步骤,并在自己之后进行清理。有关详细信息和要求,请参阅脚本的POD。

依赖项

也可用作

MCP::Kubernetes --用于CPAN上可发现性的Alias模块。

作者

托斯滕·劳德苏斯

许可证

这是一个自由软件,其许可条款与Perl本身相同(艺术许可证2.0/GPL)。

目录标签

目录标签

权限控制ClaudeKubernetes管理Perl本地部署RBAC工具AI集成集群运维

支持客户端

Claude

接入字段

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

未说明

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

token

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明token部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP