用途
mcp-openshift 是一个 Model Context Protocol(MCP)服务器,用于让 AI 代理安全地探索和操作 OpenShift / Kubernetes 集群。它默认以只读模式启动,更高能力的工具只有在提高模式后才会被注册。
主要能力
代理可访问的资源包括:项目(projects)、Pod 与日志、Deployment 和 DeploymentConfig、Route、Service、Build、ImageStream,以及按 kind 访问的任意资源。在较高模式下,还能扩缩容工作负载、重启 Deployment、应用清单(apply manifests)和删除资源。
认证方式
需要集群的 API URL 和凭据。认证模式可自动选择,也可用 OPENSHIFT_AUTH 覆盖:
- token:使用 OPENSHIFT_TOKEN(bearer)。可从 Web 控制台获取:点击右上角用户名 → Copy login command → Display Token,复制 --token= 后的值(sha256~…)以及 --server= 后的 URL;也可用 oc whoami -t 获取。控制台令牌有效期较短,过期后需重新获取。
- password:使用 OPENSHIFT_USERNAME + OPENSHIFT_PASSWORD,对接集群内置的 OAuth 服务器(HTPasswd / LDAP / 任何支持 challenge 的本地 IdP)。服务器执行与 oc login -u … -p … 相同的请求令牌流程,将令牌缓存到 ~/.mcp-openshift/token.json(权限 0600),并在过期时自动重新登录。密码只发送到集群的 OAuth 端点,不会被记录或写入磁盘。 TLS:集群通常使用私有 CA,可设置 OPENSHIFT_CA_CERT 指向 CA 证书包,或在仅开发环境使用 OPENSHIFT_INSECURE_TLS=true 跳过验证。
安全机制(默认安全)
由 src/security.ts 实施,在账户的集群 RBAC 之上提供纵深防御:
- OPENSHIFT_MODE:read-only(默认)→ read-write → admin。高于当前模式的工具不会被注册。
- OPENSHIFT_NAMESPACE_ALLOWLIST / OPENSHIFT_PROTECTED_NAMESPACES:将写入限制在指定命名空间;系统命名空间(kube-、openshift、openshift-、default)可读但永不可变更。
- OPENSHIFT_ALLOW_APPLY:创建/更新资源除 read-write 模式外还需此标志,并需人工确认。
- OPENSHIFT_ALLOW_DELETE:删除除 admin 模式外还需此标志,并需人工确认。
- OPENSHIFT_DRY_RUN:写入操作以 Kubernetes dryRun=All 发送,经过校验和准入检查,但不持久化。
- 人工介入:apply、delete 和缩容到零会暂停,并通过 MCP elicitation 请求人工批准。
- OPENSHIFT_AUDIT_LOG:每个受保护操作在 stderr 输出一行 JSON 审计记录;所有输出中的 Secret 值都会被脱敏。
可选 AI 风险防护
设置 OPENSHIFT_GUARD_MODE=monitor|enforce 后,apply_resource / delete_resource 会咨询本地 laya-guard 守护进程(安装:pipx install laya-guard && laya-guard),在执行前将操作分类为 allow/confirm/block。该步骤在 apply/delete 门禁之后运行,只会收紧、不会放宽权限,且失败即关闭(fails closed)。
适用场景
适合需要让 AI 代理对 OpenShift / Kubernetes 集群进行日常排查与操作的场景,例如查看项目和 Pod、读取日志、检查 Deployment 与 Route、服务与构建状态,以及在受控条件下执行扩缩容、重启、应用清单和删除等运维动作。
使用方式
需要提供集群 API URL 与凭据,并按需设置上述环境变量。仓库提供 docs/CLIENTS.md(面向 Claude Code / Cursor / Codex / VS Code / Windsurf)以及 .env.example 列出所有变量。仓库内置技能 openshift-safe-operations,用于教导代理如何认证(包括从浏览器控制台获取凭据)、安全规则以及标准排查与运维工作流。另可参阅 SECURITY.md。
限制
具体限制与完整配置细节暂未提供,需参考仓库内文档(docs/CLIENTS.md、SECURITY.md、.env.example)与源码。