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
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.
About
Reviews
Write a reviewNo 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_healthget_audit_trailget_clusterget_cluster_healthget_cluster_infoget_fleet_healthget_hosted_clusterget_manifestworkget_placement_decisionget_pod_logsget_resourcelist_addon_placement_scores
Show 19 more tools
list_addons_for_clusterlist_applied_manifestworkslist_cluster_claimslist_cluster_management_addonslist_cluster_permissionslist_cluster_set_bindingslist_cluster_setslist_clusterslist_hosted_clusterslist_manifestworkreplicasetslist_manifestworkslist_node_poolslist_pending_csrslist_pending_proposalslist_placementslist_policieslist_policy_violationslist_resourcesquery_events
Write 2 · Create, change, send or run things.
apply_cluster_actionapply_manifestwork
Delete 2 · Delete, drop, revoke or wipe things.
propose_rollbackrollback_manifestwork
Not yet classified 2 · We could not tell from the name and description.
propose_cluster_actionpropose_manifestwork
Secrets and settings it asks for
Other settings (environment variables or headers).
KUBECONFIGOCM_MCP_HUB_CONTEXTOCM_MCP_READ_ONLY
Network hosts it talks to 5
github.com· found in codekyverno.github.io· found in codeocm-mcp-server.github.io· found in coderaw.githubusercontent.com· found in codesitemaps.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_actionApply 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_manifestworkApply 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_healthPer-cluster add-on health across the fleet (ManagedClusterAddOn Available / Degraded).
get_audit_trailReturn 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_clusterFull 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_healthHealth 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_infoExtended 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_healthHealth 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_clusterDetailed HostedCluster: version, conditions, and its NodePools. Args: name: HostedCluster name. namespace: the namespace the HostedCluster lives in (its hosting namespace).
get_manifestworkDetailed 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_decisionWhich clusters a Placement actually selected (reads its PlacementDecisions). Args: placement: Placement name. namespace: the namespace the Placement lives in.
get_pod_logsTail 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_resourceGeneric 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_scoresList AddOnPlacementScores in a cluster's namespace (custom scores prioritizers consume). Args: cluster: managed cluster name (its hub namespace holds the scores).
list_addons_for_clusterEvery add-on installed on one cluster, with health (ManagedClusterAddOn in its namespace). Args: cluster: managed cluster name.
Show 22 more tools
list_applied_manifestworksWhat 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_claimsEvery cluster's ClusterClaims (id, platform, region, version) rolled up from status.
list_cluster_management_addonsList fleet-level add-on definitions (ClusterManagementAddOn) and their install strategy.
list_cluster_permissionsClusterPermission 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_bindingsList ManagedClusterSetBindings (which ClusterSets a namespace's Placements may use). Args: namespace: limit to one namespace; empty lists bindings across all namespaces.
list_cluster_setsList ManagedClusterSets with their selector type and member clusters.
list_clustersList all managed clusters with availability, version, labels, and capacity.
list_hosted_clustersList 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_manifestworkreplicasetsList ManifestWorkReplicaSets (a template fanned across a Placement) with rollout summary. Args: namespace: limit to one namespace; empty lists across all namespaces.
list_manifestworksList ManifestWorks targeting a cluster (what the hub is managing there). Args: cluster: managed cluster name.
list_node_poolsList 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_csrsList pending cluster-join / add-on registration CSRs awaiting hub approval.
list_pending_proposalsList proposals (ManifestWorks and cluster actions) waiting for human approval.
list_placementsList Placements and how many clusters each currently selects. Args: namespace: limit to one namespace; empty lists across all namespaces.
list_policiesList 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_violationsOnly the NonCompliant / Pending Policy-cluster pairs across the fleet - the open risks.
list_resourcesGeneric 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_actionPropose 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_manifestworkPropose 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_rollbackPropose 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_eventsRecent 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_manifestworkDelete 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
- Repository
- github.com/ocm-mcp-server/ocm-mcp-server
- 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)