Skip to main content
Glama
ay-garg

OpenShift 4 MCP Server

by ay-garg

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_cluster_infoB

Get high-level cluster information: name, API URL, version, channel, and platform type.

get_cluster_version

Show ClusterVersion history, conditions (Available/Progressing/Degraded), and available updates.

get_cluster_operators

List all ClusterOperators with Available/Progressing/Degraded/Version columns; degraded operators are listed first.

get_cluster_operator_detailsC

Get detailed conditions, versions, and related objects for a single ClusterOperator.

get_infrastructure_configC

Get Infrastructure and Network configuration CRDs from config.openshift.io/v1.

list_nodesC

List all nodes with ROLES, STATUS, OS image, KUBELET version, and AGE.

get_nodeA

Get capacity, allocatable resources, conditions, and taints for a node.

cordon_nodeA

Cordon a node so that no new pods are scheduled on it.

uncordon_nodeA

Uncordon a node to allow new pods to be scheduled on it again.

drain_node

Drain a node by evicting all evictable pods (cordons the node first).

Args: name: Name of the node to drain. ignore_daemonsets: Ignore DaemonSet-managed pods (default True). delete_emptydir_data: Allow deletion of pods with emptyDir volumes (default False). force: Force eviction of pods not managed by a controller (default False). grace_period: Seconds for graceful termination; -1 uses pod default. cluster: Named cluster to target (empty = default).

list_namespacesA

List all namespaces with STATUS, LABELS, and AGE.

create_namespaceB

Create a new namespace, optionally with labels.

Args: name: Namespace name. labels: Comma-separated KEY=VALUE pairs (e.g. "env=prod,team=platform"). cluster: Named cluster to target (empty = default).

delete_namespaceA

DESTRUCTIVE: Delete a namespace and ALL resources within it.

This action is irreversible. All pods, services, persistent volume claims, and other objects in the namespace will be permanently deleted.

Args: name: Namespace to delete. cluster: Named cluster to target (empty = default).

get_namespace_resource_quotaC

List ResourceQuotas and LimitRanges in a namespace.

list_events

List the most recent 50 events, optionally filtered by namespace, field selector, or involved object name.

Args: namespace: Namespace to query (empty = all namespaces). field_selector: Kubernetes field selector (e.g. "reason=BackOff"). involved_object: Filter by involvedObject.name (appended to field_selector). cluster: Named cluster to target (empty = default).

get_etcd_statusC

Get ETCD cluster status from operator.openshift.io/v1 etcds/cluster.

list_cluster_contextsC

Show all configured MCP clusters and the active oc kubeconfig contexts.

list_podsA

List pods with NAMESPACE, NAME, STATUS, READY, RESTARTS, NODE, and AGE columns.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector (e.g. "app=nginx"). field_selector: Field selector (e.g. "status.phase=Running"). cluster: Named cluster to target (empty = default).

get_podA

Show detailed information for a pod: phase, node, IP, QoS class, container states, and conditions.

Args: name: Pod name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

get_pod_logs

Fetch logs from a pod container.

Args: name: Pod name. namespace: Namespace (default: "default"). container: Container name (empty = first/only container). previous: Return logs from the previous container instance. tail_lines: Number of lines from the end (default 100, 0 = unlimited). since_seconds: Only return logs newer than this many seconds. cluster: Named cluster to target (empty = default).

exec_in_podB

Execute a command inside a pod via oc exec. command is split with shlex — shell metacharacters (pipes, redirects) are not interpreted.

delete_podC

Delete a pod.

Args: name: Pod name. namespace: Namespace (default: "default"). force: Force-delete immediately (grace-period=0). cluster: Named cluster to target (empty = default).

describe_pod

Run 'oc describe pod' for detailed pod information including events.

Args: name: Pod name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_deployments

List Deployments with NAMESPACE, NAME, READY, UP-TO-DATE, AVAILABLE, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter deployments. cluster: Named cluster to target (empty = default).

scale_deployment

Scale a Deployment to the specified number of replicas.

Args: name: Deployment name. replicas: Desired replica count. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

rollout_restart_deploymentB

Trigger a rolling restart of a Deployment (equivalent to 'oc rollout restart').

Args: name: Deployment name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

rollout_undo_deployment

Undo a Deployment rollout, optionally to a specific revision.

Args: name: Deployment name. namespace: Namespace (default: "default"). revision: Target revision number (0 = previous revision). cluster: Named cluster to target (empty = default).

rollout_status_deployment

Show the rollout status of a Deployment (equivalent to 'oc rollout status').

Args: name: Deployment name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_statefulsetsA

List StatefulSets with NAMESPACE, NAME, READY, SERVICE, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter StatefulSets. cluster: Named cluster to target (empty = default).

scale_statefulset

Scale a StatefulSet to the specified number of replicas.

Args: name: StatefulSet name. replicas: Desired replica count. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_daemonsets

List DaemonSets with NAMESPACE, NAME, DESIRED, CURRENT, READY, UP-TO-DATE, AVAILABLE, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter DaemonSets. cluster: Named cluster to target (empty = default).

list_jobsA

List Jobs with NAMESPACE, NAME, COMPLETIONS, ACTIVE, SUCCEEDED, FAILED, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter Jobs. cluster: Named cluster to target (empty = default).

list_cronjobs

List CronJobs with NAMESPACE, NAME, SCHEDULE, SUSPEND, ACTIVE, LAST RUN, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter CronJobs. cluster: Named cluster to target (empty = default).

create_job_from_cronjob

Create a Job immediately from a CronJob template (manual trigger).

Args: cronjob_name: Source CronJob name. job_name: Name for the newly created Job. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_deployment_configs

List OpenShift DeploymentConfigs (apps.openshift.io/v1) with NAMESPACE, NAME, REVISION, DESIRED, CURRENT, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). cluster: Named cluster to target (empty = default).

rollout_deployment_config

Trigger a new rollout of an OpenShift DeploymentConfig (oc rollout latest dc/).

Args: name: DeploymentConfig name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_servicesA

List Services with NAMESPACE, NAME, TYPE, CLUSTER-IP, EXTERNAL-IP, PORT(S), and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter Services. cluster: Named cluster to target (empty = default).

get_service

Show detailed info for a Service including selector, ports, and current Endpoints.

Args: name: Service name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

delete_serviceC

Delete a Service.

Args: name: Service name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_routesA

List OpenShift Routes (route.openshift.io/v1) with NAMESPACE, NAME, HOST/PATH, TLS, SERVICE, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). cluster: Named cluster to target (empty = default).

get_routeA

Get detailed information for an OpenShift Route including admitted status and TLS config.

Args: name: Route name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

create_route

Create an OpenShift Route by exposing a Service.

Uses 'oc expose' to create a basic route and then patches TLS termination and path if required.

Args: name: Route name. namespace: Namespace. service: Name of the Service to expose. host: Hostname for the route (empty = let the router assign one). path: URL path prefix (default "/"). tls_termination: TLS termination type: "edge", "passthrough", "reencrypt", or "" (no TLS). port: Target port name or number (empty = first port from Service). cluster: Named cluster to target (empty = default).

delete_routeC

Delete an OpenShift Route.

Args: name: Route name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

list_ingressesA

List Kubernetes Ingress objects with NAMESPACE, NAME, CLASS, HOSTS, ADDRESS, PORTS, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). label_selector: Label selector to filter Ingresses. cluster: Named cluster to target (empty = default).

list_network_policies

List NetworkPolicies with NAMESPACE, NAME, POD-SELECTOR, POLICY-TYPES, and AGE.

Args: namespace: Namespace to query (empty = all namespaces). cluster: Named cluster to target (empty = default).

delete_network_policyB

Delete a NetworkPolicy.

Args: name: NetworkPolicy name. namespace: Namespace (default: "default"). cluster: Named cluster to target (empty = default).

get_cluster_network_config

Get the cluster-wide Network configuration from config.openshift.io/v1 networks/cluster.

Shows network type, cluster networks, service networks, and machine networks.

get_ingress_controller

Get an OpenShift IngressController from operator.openshift.io/v1.

Args: name: IngressController name (default: "default"). cluster: Named cluster to target (empty = default).

list_pvsC

List PersistentVolumes with capacity, access modes, storage class, reclaim policy, status, and claim.

get_pvC

Get detailed PersistentVolume info including CSI, NFS, HostPath, or EBS source.

delete_pvB

Delete a PersistentVolume. WARNING: ensure no PVC is bound before deleting.

list_pvcsB

List PersistentVolumeClaims with status, volume, capacity, access modes, and storage class.

get_pvcB

Get detailed PersistentVolumeClaim info including conditions.

create_pvcB

Create a PersistentVolumeClaim. storage_request example: 10Gi access_mode: ReadWriteOnce, ReadOnlyMany, ReadWriteMany, ReadWriteOncePod.

delete_pvcB

Delete a PersistentVolumeClaim. WARNING: data loss may occur if PVC is in use.

list_storage_classes

List StorageClasses. The cluster default is marked with (default).

list_volume_snapshotsB

List VolumeSnapshots (snapshot.storage.k8s.io/v1) with source PVC, class, and ready status.

create_volume_snapshot

Create a VolumeSnapshot from a PersistentVolumeClaim.

list_configmapsC

List ConfigMaps with namespace, name, key count, and age.

get_configmap

Get ConfigMap keys and values. Values longer than 200 characters are truncated.

create_configmapB

Create a ConfigMap. data is KEY=VALUE pairs separated by newlines or commas. Example: KEY1=value1\nKEY2=value2

update_configmap

Set or update a single key in a ConfigMap using strategic merge patch.

delete_configmapC

Delete a ConfigMap.

list_secretsB

List Secrets showing type and key count only — secret values are never displayed.

get_secret_keysA

List the key names of a Secret. Values are never shown for security.

list_service_accountsC

List ServiceAccounts with number of secrets and image pull secrets.

list_usersB

List OpenShift users with their identities and group memberships.

get_userA

Get OpenShift user details: full name, identities, and group memberships.

list_groups

List OpenShift Groups with member count and up to 5 member names.

create_groupC

Create an empty OpenShift Group.

add_user_to_group

Add a user to an OpenShift Group (atomic — uses oc adm groups add-users).

remove_user_from_group

Remove a user from an OpenShift Group (atomic — uses oc adm groups remove-users).

list_rolesB

List Roles in a namespace with the number of policy rules.

list_cluster_rolesB

List ClusterRoles with the number of policy rules.

list_role_bindings

List RoleBindings in a namespace with role reference and bound subjects.

list_cluster_role_bindingsC

List ClusterRoleBindings with role reference and bound subjects.

create_role_bindingC

Create a RoleBinding in a namespace. subject_kind: User, Group, or ServiceAccount. cluster_role: if True, references a ClusterRole instead of a Role.

delete_role_bindingC

Delete a RoleBinding.

get_user_access

List all actions a user can perform using 'oc auth can-i --list --as='. Specify namespace to scope the check; omit for cluster-wide actions.

list_build_configs

List BuildConfigs with strategy type, source, last version, and age.

get_build_configB

Describe a BuildConfig in detail using oc describe bc.

start_buildC

Start a new build from a BuildConfig. Optionally supply from_dir to use a local directory as the binary source.

list_builds

List Builds with phase, duration, reason, and age.

get_buildC

Get detailed Build information: phase, reason, output image, and timing.

get_build_logsA

Retrieve logs for a Build. Set follow=True to stream (returns available output).

list_image_streamsC

List ImageStreams with their internal Docker repository and tag count.

list_image_stream_tagsC

List tags for an ImageStream with image digest and creation timestamp.

list_installed_operatorsB

List installed operators (ClusterServiceVersions) with display name, version, and phase.

get_operator_statusB

Get ClusterServiceVersion status: phase, conditions, and owned CRDs. If namespace is empty, all namespaces are searched for a CSV whose name matches.

list_subscriptionsC

List OLM Subscriptions with package, channel, source, current CSV, and age.

create_subscription

Create an OLM Subscription to install an operator from a CatalogSource. install_mode is informational only (set via OperatorGroup, not Subscription spec).

delete_subscription

Delete an OLM Subscription. Set also_delete_csv=True to also remove the currently installed CSV.

list_catalog_sourcesC

List CatalogSources with display name, type, publisher, and connection state.

list_operator_groupsC

List OperatorGroups with their target namespaces and service account.

list_install_plansC

List InstallPlans with approval mode, approved status, phase, and CSV names.

approve_install_planC

Approve a Manual InstallPlan by patching spec.approved=True.

list_operator_conditionsC

List OperatorConditions (operators.coreos.com/v2) with active condition summary.

list_machine_setsA

List MachineSets with desired/ready/available replica counts, instance type, and age.

get_machine_set

Describe a MachineSet showing all spec and status details.

scale_machine_setA

Scale a MachineSet to the given number of replicas by patching spec.replicas. WARNING: Scaling down will cause machines (and their nodes) to be deleted.

Prompts

Interactive templates invoked by user choice

NameDescription
troubleshoot_podStep-by-step runbook for diagnosing a failing or misbehaving pod.
debug_network_connectivityStep-by-step runbook for diagnosing network connectivity between pods/services.
investigate_node_pressureStep-by-step runbook for diagnosing and resolving node resource pressure.
plan_cluster_upgradeStep-by-step runbook for safely upgrading an OpenShift cluster to a new version.
setup_new_projectStep-by-step runbook for provisioning a new OpenShift project with proper guardrails.
deploy_ml_modelStep-by-step runbook for deploying an ML model using OpenShift AI (RHOAI).
investigate_cluster_degradationStep-by-step runbook for investigating a degraded or unhealthy cluster.
migrate_vm_workloadStep-by-step runbook for live-migrating a KubeVirt VM to another node.
debug_operator_installStep-by-step runbook for diagnosing a stuck or failed operator installation.
configure_gitops_applicationStep-by-step runbook for deploying an application via OpenShift GitOps (ArgoCD).

Resources

Contextual data attached and managed by the client

NameDescription
cluster_infoCurrent cluster version and infrastructure summary.
cluster_nodesList all cluster nodes with role, ready status, OS image, kubelet version, and age.
cluster_operatorsList all cluster operators sorted degraded-first, with available/progressing/degraded status.
cluster_alertsList currently firing alerts from Alertmanager.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ay-garg/openshift-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server