关于 mcp-openshift
mcp-openshift 是供操作 OpenShift 和 Kubernetes 集群的 Agent 使用的 MCP 服务。它将资源检查与工作负载操作结合,并提供访问模式、命名空间限制和审批控制。
主要功能
- 01查看项目、资源、日志和事件
- 02扩缩工作负载并重启部署
- 03经开关控制应用清单和删除资源
- 04按命名空间限制写入
- 05记录操作并隐藏 Secret 值
适用场景
- 01查看 Pod 日志和集群事件
- 02检查资源状态和规格
- 03扩缩或重启部署
- 04获批后应用资源清单
MCP 相关
向 MCP 客户端提供 OpenShift 和 Kubernetes 集群工具,包括资源、工作负载及日志操作。高影响工具受模式、开关和人工审批控制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @dockndevai/mcp-openshiftOPENSHIFT_SERVERCluster API server URL, e.g. https://api.cluster.example.com:6443.OPENSHIFT_TOKEN密钥Bearer token (console → user menu → Copy login command → Display Token, or `oc whoami -t`).OPENSHIFT_USERNAMEUsername for the cluster's local identity provider (alternative to a token).OPENSHIFT_PASSWORD密钥Password for the local identity provider. Sent only to the cluster's OAuth server.OPENSHIFT_CA_CERTPath to the cluster CA bundle (PEM) for TLS verification.OPENSHIFT_MODEAccess mode: read-only | read-write | admin. Starts read-only; writes need read-write.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-openshift
一个默认安全的 Model Context Protocol 服务,适用于 OpenShift / Kubernetes。它让 Agent 能够探索和操作集群,包括项目、Pod 和日志、部署和 deploymentconfig、路由、服务、构建、imagestream,以及任何指定类型的资源;在更高权限模式下,还可以扩缩工作负载、重启部署、应用清单和删除资源。
使用你已有的网页控制台令牌连接,或通过集群的本地身份提供程序,使用用户名/密码连接。
它是 dockndevai MCP 服务套件的一部分——所有服务均采用统一的治理模式。
为 Agent 提供的功能
默认以只读模式启动(参见默认安全);只有提高模式后才会注册更高权限的工具。
| 工具 | 用途 | 所需模式 |
|---|---|---|
whoami | 确认已认证的身份 | 只读 |
list_projects | 列出你可以查看的项目/命名空间 | 只读 |
list_resources | 列出任意类型的资源(± 命名空间、标签选择器) | 只读 |
get_resource | 获取单个资源的完整规格/状态 | 只读 |
pod_logs | 获取 Pod 的容器日志 | 只读 |
list_events | 列出命名空间中的近期事件 | 只读 |
scale | 设置 Deployment/DeploymentConfig 的副本数 | 读写 |
rollout_restart | 重启 Deployment | 读写 |
apply_resource | 从清单创建/更新资源(SSA) | 读写 + OPENSHIFT_ALLOW_APPLY |
delete_resource | 删除资源 | 管理员 + OPENSHIFT_ALLOW_DELETE |
安装
npx -y @dockndevai/mcp-openshift
你需要集群的API URL和凭据。最快的方法是使用你已有的浏览器控制台:
在 OpenShift 网页控制台中,点击你的用户名(右上角)→ Copy login command → Display Token。复制
--token=后面的值(sha256~…)以及--server=后面的 URL。
然后设置 OPENSHIFT_SERVER + OPENSHIFT_TOKEN。(控制台令牌有效期较短;过期后获取新令牌,或使用下方的用户名/密码方式,它会自动重新登录。)
配置
{
"mcpServers": {
"openshift": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-openshift"],
"env": {
"OPENSHIFT_SERVER": "https://api.cluster.example.com:6443",
"OPENSHIFT_TOKEN": "sha256~...",
"OPENSHIFT_MODE": "read-only"
}
}
}
}
关于 Claude Code / Cursor / Codex / VS Code / Windsurf,请参阅 docs/CLIENTS.md;关于所有变量,请参阅 .env.example。
身份验证
身份验证模式会自动选择(可通过 OPENSHIFT_AUTH 覆盖):
- token —
OPENSHIFT_TOKEN(Bearer 令牌)。可从控制台获取(见上文),或使用oc whoami -t。 - password — 使用
OPENSHIFT_USERNAME+OPENSHIFT_PASSWORD,通过集群内置的 OAuth 服务端进行身份验证(HTPasswd / LDAP / 任何支持质询的本地 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— 创建或更新资源,除读写模式外还需要启用此标志,并获得人工确认。OPENSHIFT_ALLOW_DELETE— 删除操作需要管理员模式、此标志以及确认。OPENSHIFT_DRY_RUN— 使用 KubernetesdryRun=All发送写入请求:会进行验证和准入检查,但不会持久化任何内容。- 人工介入 — 应用、删除和缩容至零操作会暂停,并通过 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 安装并运行。)它在应用/删除检查之后运行,只会收紧限制,不会授予权限;发生故障时默认拒绝。
项目内置了一个技能 openshift-safe-operations,用于指导 Agent 如何进行身份验证(包括通过浏览器控制台进行身份验证)、遵循安全规则以及执行标准的分诊/操作工作流。另请参阅 SECURITY.md。
开发
npm install
npm run build
# list the tools without a live cluster:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | OPENSHIFT_SERVER=https://x:6443 OPENSHIFT_TOKEN=x node dist/index.js
npm test
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。