Skip to content
Agentmart
Submit a tool

Ocm MCP Server

Guardrailed fleet ops for AI agents: multi-cluster Kubernetes via OCM with policy, approval, audit.

Connector by ocm-mcp-server · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 17
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/ocm-mcp-server-ocm-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Guardrailed fleet ops for AI agents: multi-cluster Kubernetes via OCM with policy, approval, audit.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
31 read · 2 write · 2 delete · 2 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 37

Read from the source code; the running server may list different tools.

Read 31 · Look things up without changing anything.

  • get_addon_health
  • get_audit_trail
  • get_cluster
  • get_cluster_health
  • get_cluster_info
  • get_fleet_health
  • get_hosted_cluster
  • get_manifestwork
  • get_placement_decision
  • get_pod_logs
  • get_resource
  • list_addon_placement_scores
Show 19 more tools
  • list_addons_for_cluster
  • list_applied_manifestworks
  • list_cluster_claims
  • list_cluster_management_addons
  • list_cluster_permissions
  • list_cluster_set_bindings
  • list_cluster_sets
  • list_clusters
  • list_hosted_clusters
  • list_manifestworkreplicasets
  • list_manifestworks
  • list_node_pools
  • list_pending_csrs
  • list_pending_proposals
  • list_placements
  • list_policies
  • list_policy_violations
  • list_resources
  • query_events

Write 2 · Create, change, send or run things.

  • apply_cluster_action
  • apply_manifestwork

Delete 2 · Delete, drop, revoke or wipe things.

  • propose_rollback
  • rollback_manifestwork

Not yet classified 2 · We could not tell from the name and description.

  • propose_cluster_action
  • propose_manifestwork

Secrets and settings it asks for

Other settings (environment variables or headers).

  • KUBECONFIG
  • OCM_MCP_HUB_CONTEXT
  • OCM_MCP_READ_ONLY

Network hosts it talks to 5

  • github.com · found in code
  • kyverno.github.io · found in code
  • ocm-mcp-server.github.io · found in code
  • raw.githubusercontent.com · found in code
  • sitemaps.org · found in code

Files it touches

  • Your home directory (~)
  • ~/.ocm-mcp

Tools (37)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • apply_cluster_action

    Apply a previously proposed cluster lifecycle action. Requires a human-minted token. Args: proposal_id: id returned by propose_cluster_action. approval_token: token the operator produced with `ocm-mcp approve <id>`.

  • apply_manifestwork

    Apply a previously proposed ManifestWork. Requires a human-minted approval token. Args: proposal_id: id returned by propose_manifestwork. approval_token: token the operator produced with `ocm-mcp approve <id>`.

  • get_addon_health

    Per-cluster add-on health across the fleet (ManagedClusterAddOn Available / Degraded).

  • get_audit_trail

    Return the last N entries of this server's own tool-call audit log. Args: last_n: number of trailing audit entries to return (default 30). Use this at the end of an incident to write an accurate post-incident report of what was inspected, proposed, approved, and applied - from the record, not from memory.

  • get_cluster

    Full view of one ManagedCluster. Args: cluster: managed cluster name as the hub knows it (see list_clusters). Returns acceptance (hubAcceptsClient), taints, hub conditions, Kubernetes version, capacity/allocatable, and the cluster's ClusterClaims.

  • get_cluster_health

    Health summary for one cluster: hub conditions, unhealthy pods, degraded deployments. Args: cluster: managed cluster name. Pod/deployment detail requires a read-only spoke context (OCM_MCP_SPOKE_CONTEXTS); hub conditions work without one.

  • get_cluster_info

    Extended inventory for one cluster from the hub: OpenShift version, nodes, console URL. Args: cluster: managed cluster name. Reads ManagedClusterInfo on the hub, so it needs no spoke access and works for any spoke - external OpenShift, HCP, or cloud. Needs the ACM/MCE multicloud-operators-foundation add-on; reports clearly if it is not present.

  • get_fleet_health

    Health of the WHOLE fleet in one call: hub conditions for every cluster plus concurrent pod/deployment scans of each spoke that has a read context. Args: clusters: optional comma-separated managed-cluster names to scope the sweep; empty means every cluster on the hub. Clusters with problems sort first. A broken spoke shows an 'error' entry instead of failing the sweep. Prefer this over calling get_cluster_health in a loop.

  • get_hosted_cluster

    Detailed HostedCluster: version, conditions, and its NodePools. Args: name: HostedCluster name. namespace: the namespace the HostedCluster lives in (its hosting namespace).

  • get_manifestwork

    Detailed ManifestWork status: top-level conditions and per-resource status feedback. Args: cluster: managed cluster name. name: ManifestWork name. Use this to answer 'why is this ManifestWork not Applied/Available' and to read status feedback (for example replica counts) reported back from the spoke.

  • get_placement_decision

    Which clusters a Placement actually selected (reads its PlacementDecisions). Args: placement: Placement name. namespace: the namespace the Placement lives in.

  • get_pod_logs

    Tail logs from a pod on a managed cluster. Args: cluster: managed cluster name. namespace: pod namespace. pod: pod name. container: container name; empty picks the default container. lines: number of trailing log lines (default 80, clamped to 1..2000). Falls back to the previous container instance if the current one is crashing.

  • get_resource

    Generic get of one allow-listed OCM resource, in full. Args: resource: an OCM resource type (see list_resources for the allow-list). name: object name. namespace: required for namespaced types (usually the cluster namespace). Never returns a Secret: Secrets are not on the allow-list, so this capability does not exist rather than being merely restricted.

  • list_addon_placement_scores

    List AddOnPlacementScores in a cluster's namespace (custom scores prioritizers consume). Args: cluster: managed cluster name (its hub namespace holds the scores).

  • list_addons_for_cluster

    Every add-on installed on one cluster, with health (ManagedClusterAddOn in its namespace). Args: cluster: managed cluster name.

Show 22 more tools
  • list_applied_manifestworks

    What a managed cluster actually applied, read from the spoke itself. The hub's ManifestWork status reports what the hub believes; AppliedManifestWork is the agent's own record on the cluster of the resources it created. Use it to verify a fix really landed, and is still present, rather than trusting hub status alone. Args: cluster: managed cluster name (needs a configured spoke read context).

  • list_cluster_claims

    Every cluster's ClusterClaims (id, platform, region, version) rolled up from status.

  • list_cluster_management_addons

    List fleet-level add-on definitions (ClusterManagementAddOn) and their install strategy.

  • list_cluster_permissions

    ClusterPermission objects distributing RBAC to a managed cluster. This is what grants or withholds permission on the spoke, so it is where to look when an apply is refused by RBAC rather than by policy or guardrails. Args: cluster: managed cluster name (its hub namespace).

  • list_cluster_set_bindings

    List ManagedClusterSetBindings (which ClusterSets a namespace's Placements may use). Args: namespace: limit to one namespace; empty lists bindings across all namespaces.

  • list_cluster_sets

    List ManagedClusterSets with their selector type and member clusters.

  • list_clusters

    List all managed clusters with availability, version, labels, and capacity.

  • list_hosted_clusters

    List HyperShift HostedClusters, when the hub is the HCP hosting cluster. Args: namespace: limit to one namespace; empty lists across all namespaces. HostedCluster objects live on whichever cluster hosts the control plane. If your HCPs are hosted on a separate management cluster, they are not on this hub - this reports that clearly, and the spokes still appear via list_clusters.

  • list_manifestworkreplicasets

    List ManifestWorkReplicaSets (a template fanned across a Placement) with rollout summary. Args: namespace: limit to one namespace; empty lists across all namespaces.

  • list_manifestworks

    List ManifestWorks targeting a cluster (what the hub is managing there). Args: cluster: managed cluster name.

  • list_node_pools

    List HyperShift NodePools (worker groups), optionally filtered to one HostedCluster. Args: namespace: limit to one namespace; empty lists across all namespaces. cluster: optional HostedCluster name to filter node pools by.

  • list_pending_csrs

    List pending cluster-join / add-on registration CSRs awaiting hub approval.

  • list_pending_proposals

    List proposals (ManifestWorks and cluster actions) waiting for human approval.

  • list_placements

    List Placements and how many clusters each currently selects. Args: namespace: limit to one namespace; empty lists across all namespaces.

  • list_policies

    List governance Policies and per-cluster compliance (only if the add-on is installed). Args: namespace: limit to one namespace; empty lists across all namespaces.

  • list_policy_violations

    Only the NonCompliant / Pending Policy-cluster pairs across the fleet - the open risks.

  • list_resources

    Generic list over an allow-list of OCM API types (identity + conditions only). Args: resource: an OCM resource type, e.g. managedclusters, placements, placementdecisions, manifestworks, managedclusteraddons, clustermanagementaddons, managedclustersets, policies, klusterlets. namespace: for namespaced types, limit to one namespace; empty lists all. Only Open Cluster Management types are allowed. Secrets and other credential resources are not on the allow-list and cannot be read through this tool.

  • propose_cluster_action

    Propose an OCM cluster lifecycle action. Does NOT apply anything. Args: cluster: target managed cluster name. action: one of 'cordon' (taint out of scheduling), 'uncordon' (undo cordon), 'set_label' (params: {"key","value"}; empty value removes the label), 'accept' (set hubAcceptsClient=true and approve pending join CSRs), 'enable_addon' (params: {"addon","install_namespace"?}; create a ManagedClusterAddOn), 'disable_addon' (params: {"addon"}; delete it). summary: one or two sentences the human approver will read. params_json: JSON object of act…

  • propose_manifestwork

    Propose a change to one cluster as an OCM ManifestWork. Does NOT apply anything. Args: cluster: target managed cluster name. name: a short kebab-case name for the ManifestWork. summary: one or two sentences a human approver will read. Be precise about what changes and why. manifests_json: JSON array of complete Kubernetes manifests (allowed kinds only; all namespaced; images pinned). The proposal must pass static guardrails and a Kyverno dry-run on the hub. On success it is stored pending and the human operator must run `ocm-mcp approve <id>` to mint an approv…

  • propose_rollback

    Propose rolling back an applied ManifestWork. Applies nothing; needs its own approval. Args: proposal_id: id of an already-applied ManifestWork proposal. Creates a distinct rollback proposal bound to the exact ManifestWork name and UID. The human approves it separately (`ocm-mcp approve <rollback-id>`), and the token can only authorize a rollback - an old apply token can never delete a workload.

  • query_events

    Recent Kubernetes events from a managed cluster, newest first. Args: cluster: managed cluster name. namespace: optional namespace filter; empty means all namespaces. limit: maximum number of events to return (default 40). Use this to find the 'why' behind unhealthy pods.

  • rollback_manifestwork

    Delete a ManifestWork after a rollback proposal has been approved. Args: rollback_proposal_id: id returned by propose_rollback. approval_token: a rollback token from `ocm-mcp approve <rollback-id>`.

Signals

Stars
17
Forks
3
Open issues
0
Weekly downloads
56
Last commit
Oct 8, 2026 (20 days ago)
Last release
Aug 29, 2026 (2 months ago)
Last package publish
Aug 29, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.ocm-mcp-server/ocm-mcp-server
Version
0.6.0
Auth
No auth
Packages
pypi ocm-mcp-serveroci ghcr.io/ocm-mcp-server/ocm-mcp-server:0.6.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Ocm MCP Server. Agent Mart. https://agentmart.dev/connectors/ocm-mcp-server-ocm-mcp-server (last updated 2026-10-24)