About mcp-openshift
mcp-openshift is an MCP server for agents working with OpenShift and Kubernetes clusters. It combines resource inspection and workload operations with configurable access modes, namespace restrictions, and approval gates.
Key features
- 01Inspect projects, resources, logs, and events
- 02Scale and restart workloads
- 03Apply manifests and delete resources with gates
- 04Restrict writes by namespace
- 05Audit operations and redact Secret values
Use cases
- 01Review pod logs and cluster events
- 02Inspect resource status and specifications
- 03Scale or restart a deployment
- 04Apply a manifest after authorization
MCP support
Exposes OpenShift and Kubernetes cluster tools to MCP clients, including resource, workload, and log operations. Higher-impact tools are gated by mode, flags, and human approval.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @dockndevai/mcp-openshiftOPENSHIFT_SERVERCluster API server URL, e.g. https://api.cluster.example.com:6443.OPENSHIFT_TOKENSecretBearer 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_PASSWORDSecretPassword 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.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmcp-openshift
A safe-by-default Model Context Protocol server for OpenShift / Kubernetes. It lets an agent explore and operate a cluster — projects, pods and logs, deployments and deploymentconfigs, routes, services, builds, imagestreams, and any resource by kind — and, in higher modes, scale workloads, restart deployments, apply manifests, and delete.
Connect with a token from the web console you already use, or your username/password against the cluster's local identity provider.
Part of the dockndevai MCP server suite — one governance model across all of them.
What it gives an agent
Starts read-only (see Safe by default); higher-capability tools are only registered when you raise the mode.
| Tool | For | Needs mode |
|---|---|---|
whoami | confirm the authenticated identity | read-only |
list_projects | projects/namespaces you can see | read-only |
list_resources | list any kind (± namespace, label selector) | read-only |
get_resource | one resource with full spec/status | read-only |
pod_logs | a pod's container logs | read-only |
list_events | recent events in a namespace | read-only |
scale | set replicas on a Deployment/DeploymentConfig | read-write |
rollout_restart | restart a Deployment | read-write |
apply_resource | create/update from a manifest (SSA) | read-write + OPENSHIFT_ALLOW_APPLY |
delete_resource | delete a resource | admin + OPENSHIFT_ALLOW_DELETE |
Install
npx -y @dockndevai/mcp-openshift
You need your cluster's API URL and a credential. The quickest, since you use the browser console:
In the OpenShift web console, click your username (top-right) → Copy login command → Display Token. Copy the value after
--token=(sha256~…) and the URL after--server=.
Then set OPENSHIFT_SERVER + OPENSHIFT_TOKEN. (Console tokens are short-lived; grab a fresh one when it expires, or use username/password below, which re-logs in automatically.)
Configure
{
"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"
}
}
}
}
See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf, and .env.example for every variable.
Authentication
Auth mode is chosen automatically (override with OPENSHIFT_AUTH):
- token —
OPENSHIFT_TOKEN(bearer). From the console (above) oroc whoami -t. - password —
OPENSHIFT_USERNAME+OPENSHIFT_PASSWORDagainst the cluster's built-in OAuth server (HTPasswd / LDAP / any challenge-capable local IdP). The server runs the same request-token flowoc login -u … -p …uses, caches the token at~/.mcp-openshift/token.json(0600), and re-logs in on expiry. The password is sent only to your cluster's OAuth endpoint and is never logged or written to disk.
TLS: clusters usually use a private CA — set OPENSHIFT_CA_CERT to the CA bundle, or (dev only) OPENSHIFT_INSECURE_TLS=true to skip verification.
Safe by default
Enforced by src/security.ts — defence in depth on top of your account's cluster RBAC:
OPENSHIFT_MODE—read-only(default) →read-write→admin. Tools above the mode aren't registered.OPENSHIFT_NAMESPACE_ALLOWLIST/OPENSHIFT_PROTECTED_NAMESPACES— confine writes to named namespaces; system namespaces (kube-*,openshift,openshift-*,default) are readable but never mutable.OPENSHIFT_ALLOW_APPLY— creating/updating resources needs this flag on top of read-write, plus a human confirmation.OPENSHIFT_ALLOW_DELETE— deletes need admin mode plus this flag, plus confirmation.OPENSHIFT_DRY_RUN— sends writes with KubernetesdryRun=All: validated and admission-checked, but nothing persists.- Human-in-the-loop — apply, delete, and scale-to-zero pause and ask a person to approve via MCP elicitation.
OPENSHIFT_AUDIT_LOG— a JSON audit line per guarded op on stderr; Secret values are redacted from all output.
Optional AI risk guard. Set OPENSHIFT_GUARD_MODE=monitor|enforce to have apply_resource / delete_resource consult a local laya-guard daemon (pipx install laya-guard && laya-guard) that classifies the operation allow/confirm/block before it runs. Runs after the apply/delete gates; only tightens, never grants; fails closed.
There is a bundled skill, openshift-safe-operations, that teaches an agent how to authenticate (including from the browser console), the safety rules, and the standard triage/operate workflows. See also SECURITY.md.
Developing
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
Licence
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.