ocm-mcp-server
GitHub

Security self-assessment

Security self-assessment

This self-assessment follows the structure used by the CNCF TAG-Security self-assessment template. It is a living document, maintained by the project, describing what the project does, its security posture, and where the boundaries of its guarantees lie. It is written to be honest about limits, not to market.

Metadata #

Software https://github.com/sandeepbazar/ocm-mcp-server
Security provider No. The project is a control point that adds safety to agent-driven fleet operations; it is not a security product in itself.
Languages Python
SBOM Dependencies are bounded in pyproject.toml and hash-pinned in requirements.lock; the release container image is published to GHCR with a generated SBOM, build provenance, and a keyless Cosign signature.
Document URL
Security policy SECURITY.md
Guardrail model and threat model docs/guardrails.md
Architecture docs/architecture.md
RBAC deploy/rbac.yaml

Overview #

ocm-mcp-server is a Model Context Protocol (MCP) server that lets AI agents operate a multi-cluster Kubernetes fleet through an Open Cluster Management (OCM) hub. Its purpose is to make that operation safe by construction: agents can read the whole fleet freely, but any change must be proposed, pass policy admission, and be approved by a human before it reaches a cluster.

Background #

Fleets managed by OCM (and its downstream ACM/MCE) expose a hub with an inventory (ManagedCluster), a scheduler (Placement), and a delivery channel (ManifestWork). The server exposes this hub to agents as a small, typed set of MCP tools and interposes four independent controls between the model and the clusters.

Actors #

Actions #

  1. Read (ungated): the agent lists/gets OCM resources and, where a spoke context is configured, reads events, logs, and health. Most reads are summarized; the generic reader returns full allow-listed OCM objects (never Secrets or core kinds).
  2. Propose (mutates nothing): the agent proposes a ManifestWork or a lifecycle action. It passes static guardrails and a Kyverno dry-run on the hub, then is stored pending.
  3. Approve (human, out of band): the operator runs ocm-mcp approve <id> on a trusted terminal, which signs an Ed25519 token bound to the proposal's content hash and the intended operation. The server holds only the public verification key.
  4. Apply (gated): the agent submits the token; the server re-checks content integrity and re-runs guardrails, verifies the token, and applies through least-privilege RBAC.

Goals #

Non-goals #

Security functions and features #

Critical #

Security-relevant #

Project compliance #

The project does not currently claim compliance with a specific external standard (for example NIST SSDF or FedRAMP). It aligns with common cloud native security practices: least privilege, defense in depth, no secrets in code, signed-off commits, and a documented threat model.

Secure development practices #

Security issue resolution #

Appendix #