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

Capabilities

Features and capabilities supported by this server

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