使用说明
k8s mcp
面向代理和快速移动团队的AI原生Kubernetes操作。
k8s mcp是一款轻量级 主控程序 该服务器允许AI助手通过高级工作流工具而不是原始kubectl命令部署、检查和操作Kubernetes工作负载,并具有结构化输出,大大减少了令牌的使用。
适用于 克劳德代码 · Codex CLI · Gemini CLI · 开放代码 ·以及任何MCP兼容的代理。
少一些kubectl。做得更多。
演示
为什么存在
今天的人工智能助手可以提供建议 kubectl 命令。但实际操作集群仍然意味着切换上下文、复制粘贴命令、手动调试故障以及反复检查日志和事件。这造成了一个缓慢的人在循环中的循环。
k8s-mcp通过提供AI代理来缩小这一差距 任务完成工具 而不是低级原语。而不是链接:
kubectl get pod
kubectl describe pod
kubectl logs
代理可以调用以下工具 diagnose_pod() 或 wait_for_ready() --一次性获得结构化结果。
是什么让它与众不同
k8s mcp的设计围绕 工作流,而不是原始资源访问——针对以下方面进行了优化:
- AI代理执行循环 --部署、观察、诊断、重试、验证
- 较低的令牌使用率 --结构化输出而不是长shell转录
- 初学者友好操作 --减少手动命令链
- 更快的迭代 --“请部署此”和工作结果之间的移动部件更少
关键能力
- 比外壳工具更快、更轻 --原生MCP工具将结构化数据直接返回给AI,避免了shell生成、CLI输出解析和大文本流
- 一次性诊断问题 —
diagnose_pod将状态、条件、事件和失败容器日志组合到一个报告中 - 自主部署循环 --应用清单、等待准备就绪、检测故障并迭代,无需手动来回
- 生成部署清单 --自动创建一个可用的Kubernetes起点,而不是从头开始编写YAML
- 查询并采取行动 --列出Pod、读取日志、检查配置、扩展部署、重新启动工作负载、应用清单以及从对话中删除资源
- 检测配置漂移 --将实时资源导出为YAML并与本地清单进行比较
- 设计安全 --重复使用您的
~/.kube/config以及您组织现有的身份验证流(SSO、OIDC、证书)。从不存储或管理凭据 - 与任何MCP客户端一起工作 --支持stdio、HTTP和SSE传输
如何比较
一些Kubernetes MCP服务器专注于广泛的资源级API访问。k8s mcp专注于 为AI代理设计的工作流级工具.
| k8s-mcp | 传统mcp服务器 | |
|---|---|---|
| 聚焦 | 工作流级工具 | 原始资源API |
| 可用性 | 初学者友好 | 需要Kubernetes专业知识 |
| 输出 | 摘要、结构化 | 原始API响应 |
| 代理效率 | 高——调用更少,令牌使用率更低 | 需要更多的推理和链接 |
这是给谁的
- 人工智能工程师 构建与Kubernetes交互的代理工作流
- 研究人员 在没有深厚k8s专业知识的情况下在Kubernetes上部署模型
- 开发者 希望从IDE自动化集群操作的人员
- 团队 尝试人工智能驱动的DevOps
如果您想要广泛、低级别的Kubernetes API访问,还有其他MCP服务器更适合这样做。如果你想要一个真正能 操作 一个手动开销较少的集群,这个项目适合你。
快速开始
1.安装
git clone git@github.com:jingyanjiang/k8s-mcp.git
cd k8s-mcp
pipx install .
这使得 k8s-mcp 在您的PATH中,可以从任何目录运行。
您还可以使用 uv tool install . 或 pip install ..为了开发,请使用 poetry install.
2.验证您的Kubernetes访问权限
k8s mcp读取您现有的 ~/.kube/config.使用前,请验证:
kubectl auth whoami
kubectl get all -n <your-namespace>
服务器会继承kubeconfig用户拥有的任何权限。不需要其他凭据。
注: 一些操作(例如。,
list_namespaces,list_nodes)需要集群范围的权限。如果请求失败403 Forbidden,向您的集群管理员询问必要的RBAC角色。
3.添加到您的MCP客户端
克劳德代码/克劳德桌面
添加 .mcp.json (项目层面)或 ~/.claude.json (全球):
{
"mcpServers": {
"k8s": {
"type": "stdio",
"command": "k8s-mcp",
"args": ["--transport", "stdio"]
}
}
}
OpenAI Codex命令行界面
添加 ~/.codex/config.toml (用户级别)或 .codex/config.toml (项目层面):
[mcp_servers.k8s]
command = "k8s-mcp"
args = ["--transport", "stdio"]
Gemini CLI
添加 ~/.gemini/settings.json (用户级别)或 .gemini/settings.json (项目层面):
{
"mcpServers": {
"k8s": {
"command": "k8s-mcp",
"args": ["--transport", "stdio"]
}
}
}
开放代码
添加 opencode.json 在项目根目录中:
{
"mcp": {
"k8s": {
"type": "local",
"command": ["k8s-mcp", "--transport", "stdio"]
}
}
}
如果您的MCP客户端找不到
k8s-mcp在PATH中,使用绝对路径(运行which k8s-mcp找到它)。
当您的MCP客户端连接时,服务器会自动启动,无需手动命令。
Using Poetry instead of a global install?
替换 "command": "k8s-mcp" 随着 "command": "poetry" 并将args设置为 ["run", "k8s-mcp", "--transport", "stdio"]。您还必须添加 "cwd": "/absolute/path/to/k8s-mcp" 这样诗才能找到项目。
Other transport modes
服务器支持三种传输模式:
# stdio (for local MCP clients like Claude Code)
k8s-mcp --transport stdio
# Streamable HTTP (for remote/networked clients)
k8s-mcp --transport streamable-http
# SSE (Server-Sent Events)
k8s-mcp --transport sse
对于HTTP传输,通过环境变量配置绑定地址和端口:
export K8S_MCP_HOST=0.0.0.0 # default: localhost
export K8S_MCP_PORT=8000 # default: 8000
4.(可选)安装 k8s-ops Claude Code的技能
对于Claude Code用户来说,这个仓库提供了一种固执己见的工作流技能 技能/k8s操作/。它对多步骤剧本进行编码 部署, 调试, 推出,以及 审计 在原始MCP工具之上,当您希望代理遵循测试序列(例如,调试决策树、飞行前部署检查)而不是即兴创作时,这很有用。
使用符号链接安装,以便从更新 git pull 自动流过:
ln -s "$(pwd)/skills/k8s-ops" ~/.claude/skills/k8s-ops
然后在Claude Code中,用以下命令调用它 /k8s-ops (例如。, /k8s-ops debug, /k8s-ops audit NAMESPACE=foo).该技能也是模型调用的——当您要求代理部署、诊断、重启或审计Kubernetes工作负载时,它会自动激活。
如果您使用的是其他MCP客户端,请跳过此步骤。MCP服务器本身在没有它的情况下工作。
5.试试看
Please check the status of my namespace: <namespace>
Please deploy the app in this repo to my k8s cluster. Make a plan first, then implement it.
My pods in namespace X keep crashing. Can you figure out what's wrong?
示例用例
检查集群状态
“请检查我的命名空间的状态:xxxxx”
助手将列出命名空间中的Pod、部署、服务和事件,并发现任何问题。
部署应用程序
“请为我将此仓库中的应用程序/服务器部署到k8s集群。先制定计划,然后实施。”
代理人将:
- 分析回购结构
- 确认目标集群、命名空间、映像注册表和标记
- 生成Kustomize清单
- 应用部署
- 等待准备就绪并返回结构化健康结果
诊断失败的工作负载
“我在命名空间X中的Pod一直崩溃。你能找出问题所在吗?”
代理将检查pod状态、条件、事件和容器日志,然后返回一个结构化的解释和建议的修复。不再手动运行 describe 和 logs 在一个循环中。
工具
签名工具
这些最能代表项目的面向工作流的设计:
| 工具 | 说明 |
|---|---|
diagnose_pod |
一次性诊断——结合状态、条件、事件和故障容器日志 |
wait_for_ready |
轮询pod或部署,直到就绪或超时(启用自主部署循环) |
apply_manifest |
应用YAML清单(创建或更新,支持多文档) |
apply_kustomize |
渲染并应用Kustomize目录(相当于 kubectl apply -k) |
get_resource_yaml |
将实时资源导出为干净的YAML(用于配置漂移检测) |
generate_deploy_manifests |
生成Kubernetes清单,用于将k8s-mcp本身部署到集群 |
Full tool reference
所有操作都以MCP工具的形式公开——您可以通过AI助手与它们进行对话式交互。
集群上下文
| 工具 | 说明 |
|---|---|
get_contexts |
列出可用的kubeconfig上下文 |
get_current_context |
显示活动上下文、集群和用户 |
命名空间
| 工具 | 说明 |
|---|---|
list_namespaces |
列出群集中的所有命名空间 |
容器组
| 工具 | 说明 |
|---|---|
list_pods |
列出Pod(按命名空间、标签或所有命名空间) |
get_pod |
获取详细的pod信息 |
get_pod_logs |
获取容器日志(带尾部,支持以前的容器) |
delete_pod |
删除一个pod(具有可配置的宽限期) |
diagnose_pod |
一次性诊断——结合故障容器的状态、条件、事件和日志 |
exec_command |
在正在运行的容器内执行命令(例如。, curl, env, nslookup) |
部署
| 工具 | 说明 |
|---|---|
list_deployments |
列出部署(按命名空间、标签或所有命名空间) |
get_deployment |
获取详细的部署信息 |
scale_deployment |
将部署扩展到N个副本 |
restart_deployment |
滚动重启(相当于 kubectl rollout restart) |
get_rollout_status |
检查卷展是否已完成、正在进行或卡住 |
服务
| 工具 | 说明 |
|---|---|
list_services |
列出服务(按命名空间、标签或所有命名空间) |
get_service |
获取详细的服务信息 |
ConfigMaps
| 工具 | 说明 |
|---|---|
list_configmaps |
列出ConfigMgraps(按命名空间、标签或所有命名空间) |
get_configmap |
获取ConfigMgr的元数据和数据内容 |
秘密
| 工具 | 说明 |
|---|---|
list_secrets |
列出带有类型和密钥计数的秘密 |
get_secret |
获取Secret元数据和密钥名称;可选地使用掩码对值进行解码 |
服务帐户
| 工具 | 说明 |
|---|---|
list_service_accounts |
列出ServiceAccounts(按命名空间、标签或所有命名空间) |
get_service_account |
获取ServiceAccount详细信息,包括机密和自动挂载配置 |
RBAC(角色和绑定)
| 工具 | 说明 |
|---|---|
list_roles |
列出角色(按命名空间或全部);可选地包括ClusterRoles |
get_role |
获取角色或ClusterRole详细信息,包括权限规则 |
list_role_bindings |
列出角色绑定(按命名空间或全部);可选地包括ClusterRoleBinding |
get_role_binding |
获取RoleBinding或ClusterRoleBinding详细信息,包括主题和角色参考 |
节点
| 工具 | 说明 |
|---|---|
list_nodes |
列出具有状态和角色的群集节点 |
get_node |
获取详细的节点信息 |
事件
| 工具 | 说明 |
|---|---|
list_events |
列出事件,可选择按资源名称筛选 |
工作
| 工具 | 说明 |
|---|---|
list_jobs |
列出具有完成状态和持续时间的作业 |
进入
| 工具 | 说明 |
|---|---|
list_ingresses |
列出带有主机、类和TLS信息的入口 |
get_ingress |
获取详细的入口信息,包括路由规则 |
通用操作
| 工具 | 说明 |
|---|---|
apply_manifest |
应用YAML清单(创建或更新,支持多文档) |
apply_kustomize |
渲染并应用Kustomize目录(相当于 kubectl apply -k) |
delete_resource |
按类型和名称删除任何资源(支持缩写,如 po, svc, deploy) |
describe_resource |
描述任何资源——将规范/状态与相关事件(如 kubectl describe) |
get_resource_yaml |
将实时资源导出为干净的YAML(用于配置漂移检测) |
资源指标
| 工具 | 说明 |
|---|---|
top_pods |
显示每个pod的CPU/内存使用情况(需要指标服务器) |
top_nodes |
用容量百分比显示每个节点的CPU/内存使用情况 |
准备就绪
| 工具 | 说明 |
|---|---|
wait_for_ready |
轮询pod或部署,直到就绪或超时(启用自主部署循环) |
部署生成
| 工具 | 说明 |
|---|---|
generate_deploy_manifests |
生成Kubernetes清单,用于将k8s-mcp本身部署到集群 |
安全
k8s mcp的设计具有实用的保障措施:
- 命名空间范围 --代理在采取行动之前确认目标命名空间
- 破坏性行动确认 --删除、缩放到零和重新启动操作需要明确的用户批准
- 默认情况下为只读查询 --大多数工具都是非破坏性的
在生产环境中应用更改之前,始终审查操作。
项目状态
该项目正在积极维护和发展。欢迎反馈、建议和贡献。
贡献
欢迎提出请求和想法。如果你正在尝试人工智能驱动的DevOps,我很想知道哪些工作流程会有用。
许可证
麻省理工学院
