OpenShift 4 MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind address for streamable-http transport | 127.0.0.1 |
| MCP_PORT | No | Port for streamable-http transport | 8080 |
| OCP_MODE | No | `server` for MCP server, `ui` for Gradio web UI | server |
| OCP_TOKEN | No | Bearer token for the service account or user | |
| GRADIO_HOST | No | Bind address for the Gradio web UI | 0.0.0.0 |
| GRADIO_PORT | No | Port for the Gradio web UI | 7860 |
| OCP_API_URL | No | API server URL for single-cluster token/password auth | |
| GRADIO_SHARE | No | Set `true` for a temporary public Gradio URL | false |
| OCP_CLUSTERS | No | JSON array of named cluster configs for multi-cluster mode (e.g., [{"name":"prod","api_url":"...","token":"..."}]) | |
| OCP_PASSWORD | No | Password for `oc login` | |
| OCP_USERNAME | No | Username for `oc login` | |
| MCP_TRANSPORT | No | Transport mode: `stdio` or `streamable-http` | stdio |
| OCP_KUBECONFIG | No | Path to a kubeconfig file | ~/.kube/config |
| OCP_VERIFY_SSL | No | Set `false` to skip TLS verification for Prometheus/Alertmanager HTTP calls | true |
| ANTHROPIC_MODEL | No | Model for the AI Chat tab | claude-sonnet-5 |
| ANTHROPIC_API_KEY | No | Required for the AI Chat tab in the Gradio UI | |
| OCP_PROMETHEUS_URL | No | Prometheus/Thanos querier URL (auto-detected if omitted) | |
| OCP_SKIP_TLS_VERIFY | No | Set `true`/`1`/`yes` to skip TLS for the k8s API client | false |
| OCP_ALERTMANAGER_URL | No | Alertmanager URL (auto-derived if omitted) | |
| OCP_PROMETHEUS_TOKEN | No | Token for Prometheus/Alertmanager HTTP calls (defaults to OCP_TOKEN) | |
| OCP_KUBECONFIG_CONTEXT | No | Named context within the kubeconfig |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_cluster_infoB | Get high-level cluster information: name, API URL, version, channel, and platform type. |
| get_cluster_versionB | Show ClusterVersion history, conditions (Available/Progressing/Degraded), and available updates. |
| get_cluster_operatorsB | 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_nodeA | 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_eventsA | 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_logsA | 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_podB | 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_deploymentsA | 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_deploymentB | 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_deploymentA | 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_deploymentA | 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_statefulsetA | 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_daemonsetsA | 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_cronjobsA | 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_cronjobA | 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_configsA | 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_configC | 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_serviceB | 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_routeA | 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_policiesA | 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_configA | 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_controllerA | 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_classesC | 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_snapshotB | Create a VolumeSnapshot from a PersistentVolumeClaim. |
| list_configmapsC | List ConfigMaps with namespace, name, key count, and age. |
| get_configmapA | 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_configmapC | 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_groupsB | List OpenShift Groups with member count and up to 5 member names. |
| create_groupC | Create an empty OpenShift Group. |
| add_user_to_groupB | Add a user to an OpenShift Group (atomic — uses oc adm groups add-users). |
| remove_user_from_groupA | 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_bindingsA | 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_accessB | 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_configsC | 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_buildsC | 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_subscriptionA | Create an OLM Subscription to install an operator from a CatalogSource. install_mode is informational only (set via OperatorGroup, not Subscription spec). |
| delete_subscriptionA | 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_setB | 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. |
| list_machinesC | List Machines with phase, node ref, provider ID, and age. |
| get_machineB | Get detailed Machine info: phase, nodeRef, providerID, addresses, conditions. |
| delete_machineA | Delete a Machine — the Machine controller will drain and terminate the underlying node. WARNING: Destructive. The node will be cordoned, drained, and terminated. |
| list_machine_config_poolsC | List MachineConfigPools with rendered config, machine counts, and status flags. |
| get_machine_config_poolC | Get MachineConfigPool detail: conditions and machine counts. |
| pause_machine_config_poolC | Pause a MachineConfigPool — prevents config updates from rolling out to nodes. |
| unpause_machine_config_poolB | Unpause a MachineConfigPool — allows pending config updates to roll out to nodes. |
| list_machine_configsC | List MachineConfigs with role label (machineconfiguration.openshift.io/role), generation, and age. |
| list_alertsB | List active alerts from Alertmanager, optionally filtered by severity and/or state. severity: critical | warning | info state: active | suppressed | unprocessed |
| get_alert_detailsB | Get full labels, annotations, status, and silence info for all instances of a named alert. |
| list_alerting_rulesB | List PrometheusRules (monitoring.coreos.com/v1) with rule group count. |
| list_prometheus_rulesC | List PrometheusRules with counts of alerting rules and recording rules per resource. |
| query_prometheusA | Execute a PromQL instant query against Thanos Querier and return results as a table. |
| query_prometheus_rangeA | Execute a PromQL range query. start/end in ISO8601 or Unix timestamp; step e.g. '5m'. |
| list_silencesB | List Alertmanager silences with ID, state, matchers, comment, creator, and end time. |
| create_silenceA | Create an Alertmanager silence. matchers: comma-separated key=value or key=~regex pairs. Example: 'alertname=Watchdog,severity=~warning|critical' duration_hours: silence duration in hours (default 4). |
| delete_silenceB | Delete an Alertmanager silence by its ID. |
| get_monitoring_configB | Read the cluster-monitoring-config ConfigMap from the openshift-monitoring namespace. |
| list_sccsB | List all SecurityContextConstraints sorted by priority descending. |
| get_sccA | Get full SCC detail: volumes, capabilities, allowedCapabilities, users, and groups. |
| create_sccB | Create a custom SecurityContextConstraint CR. run_as_any: if True, sets RunAsAny for runAsUser and fsGroup. allow_privilege_escalation: if True, allows processes to gain more privileges than their parent (required for setuid binaries). |
| add_scc_to_service_accountA | Grant an SCC to a ServiceAccount via 'oc adm policy add-scc-to-user'. Equivalent to: oc adm policy add-scc-to-user system:serviceaccount:: |
| remove_scc_from_service_accountC | Revoke an SCC from a ServiceAccount via 'oc adm policy remove-scc-from-user'. |
| add_cluster_role_to_userB | Grant a ClusterRole to a user via 'oc adm policy add-cluster-role-to-user'. |
| add_cluster_role_to_groupB | Grant a ClusterRole to a group via 'oc adm policy add-cluster-role-to-group'. |
| get_oauth_configC | Get the cluster OAuth configuration and identity providers from config.openshift.io/v1. |
| list_pod_security_violationsB | List events that indicate pod security or SCC violations (FailedCreate + security keywords). |
| list_hpasC | List HorizontalPodAutoscalers with min/max/current/desired replicas and metrics. |
| create_hpaC | Create an HPA using 'oc autoscale'. target_ref format: 'Deployment/my-app' or 'DeploymentConfig/my-dc'. cpu_percent: target CPU utilisation percentage (default 80). |
| delete_hpaC | Delete a HorizontalPodAutoscaler. |
| list_vpasB | List VerticalPodAutoscalers with update mode and target workload. |
| get_vpa_recommendationB | Show VPA recommendations per container: lowerBound/target/upperBound/uncappedTarget. |
| get_cluster_autoscalerB | Get the ClusterAutoscaler 'default' resource limits and scale-down configuration. |
| list_machine_autoscalersC | List MachineAutoscalers in openshift-machine-api with target MachineSet, min, max, and age. |
| create_machine_autoscalerA | Create a MachineAutoscaler CR targeting a MachineSet in openshift-machine-api. Requires a ClusterAutoscaler to be configured for this to take effect. |
| list_gitops_applicationsC | List ArgoCD Applications with sync/health status, repo, revision, destination, and age. |
| get_gitops_applicationA | Get ArgoCD Application details: sync/health/repo/path/destination + resources table. |
| sync_gitops_applicationC | Trigger a sync on an ArgoCD Application by patching the operation field. |
| get_gitops_application_healthA | Get per-resource health status for an ArgoCD Application. |
| refresh_gitops_applicationB | Force-refresh an ArgoCD Application by patching the argocd.argoproj.io/refresh annotation. |
| list_app_projectsB | List ArgoCD AppProjects with source repos, destinations, and cluster resource access. |
| list_gitops_clustersB | List ArgoCD registered clusters from Secrets with label argocd.argoproj.io/secret-type=cluster. |
| list_pipelinesB | List Tekton Pipelines with task count and age. |
| get_pipelineB | Get Tekton Pipeline details: tasks with dependencies, params, and workspaces. |
| list_pipeline_runsC | List Tekton PipelineRuns with pipeline name, status, duration, and age. |
| get_pipeline_runC | Get Tekton PipelineRun details: status, duration, and child task run references. |
| start_pipeline_runB | Start a Tekton PipelineRun. params is a comma-separated list of KEY=VALUE pairs. |
| cancel_pipeline_runC | Cancel a running Tekton PipelineRun. |
| list_tasksC | List Tekton Tasks with step count and age. |
| list_task_runsC | List Tekton TaskRuns with task name, status, duration, and age. |
| list_trigger_templatesB | List Tekton TriggerTemplates with template count and age. |
| list_event_listenersB | List Tekton EventListeners with readiness, URL, and age. |
| list_service_mesh_control_planesC | List ServiceMeshControlPlanes with generation, version, readiness, and age. |
| get_smcp_statusA | Get ServiceMeshControlPlane status: conditions and component readiness breakdown. |
| list_virtual_servicesA | List Istio VirtualServices with hosts, gateways, HTTP/TCP route counts, and age. |
| list_destination_rulesC | List Istio DestinationRules with host, subsets, TLS mode, and age. |
| list_peer_authenticationsC | List Istio PeerAuthentications with mTLS mode, selector, and age. |
| list_service_entriesC | List Istio ServiceEntries with hosts, location, ports, and age. |
| list_gatewaysB | List Istio Gateways with selector, ports, servers count, and age. |
| list_service_mesh_membersC | List ServiceMeshMemberRolls and the namespaces enrolled in each mesh. |
| get_dsciC | Get DSCInitialization status: phase, conditions, and component enablement. |
| get_data_science_clusterC | Get DataScienceCluster status: component management states. |
| list_data_science_projectsB | List OpenShift AI Data Science Projects (namespaces with opendatahub.io/dashboard=true label). |
| list_notebooksC | List Kubeflow Notebooks with state, image, CPU/memory requests, and age. |
| start_notebookA | Start a stopped Notebook by removing the kubeflow-resource-stopped annotation. |
| stop_notebookC | Stop a running Notebook by setting the kubeflow-resource-stopped annotation. |
| list_model_serversC | List ServingRuntimes and ClusterServingRuntimes with scope, formats, multi-model, and age. |
| list_inference_servicesC | List InferenceServices with readiness, model format, storage URI, URL, and age. |
| create_inference_serviceC | Create a KServe InferenceService CR. |
| delete_inference_serviceC | Delete a KServe InferenceService. |
| list_data_science_pipelinesB | List DataSciencePipelinesApplications with readiness, storage, and API endpoint. |
| list_model_registriesC | List ModelRegistries with availability, REST port, gRPC port, and age. |
| get_rhoai_component_statusB | Check RHOAI/OpenShift AI overall health: pods in RHOAI namespaces, DSC/DSCI status, CRD presence. |
| list_virtual_machinesC | List VirtualMachines with status, vCPU, memory, and age. |
| get_virtual_machineB | Get detailed VM info: running state, resources, interfaces, disks, conditions. |
| start_virtual_machineB | Start a VirtualMachine by setting spec.running=true. |
| stop_virtual_machineB | Stop a VirtualMachine by setting spec.running=false. |
| restart_virtual_machineC | Restart a VirtualMachine using virtctl. |
| pause_virtual_machineC | Pause a running VirtualMachine using virtctl. |
| unpause_virtual_machineC | Unpause a paused VirtualMachine using virtctl. |
| create_virtual_machineC | Create a VirtualMachine. Provide image_url (HTTP) or pvc_name (existing PVC). |
| delete_virtual_machineC | Delete a VirtualMachine (stop it first if running). |
| list_virtual_machine_instancesA | List running VirtualMachineInstances with node, IP, and phase. |
| live_migrate_vmC | Live migrate a VirtualMachineInstance to another node. |
| list_data_volumesC | List DataVolumes with phase, progress, capacity, and source type. |
| list_vm_snapshotsC | List VirtualMachineSnapshots with phase, source VM, and ready status. |
| create_vm_snapshotC | Create a VirtualMachineSnapshot of a VM. |
| restore_vm_snapshotC | Restore a VM from a VirtualMachineSnapshot. |
| list_konflux_applicationsC | List Konflux Applications in a workspace namespace. |
| get_konflux_applicationC | Get Konflux Application details including conditions. |
| list_componentsB | List Konflux Components with source repo, branch, and build status. |
| get_componentB | Get detailed Konflux Component info including GitOps repo and nudges. |
| create_componentC | Create a Konflux Component. |
| list_snapshotsC | List Konflux Snapshots with components and integration test status. |
| get_snapshot_statusC | Get Snapshot with integration test results and component images. |
| list_integration_test_scenariosC | List Konflux IntegrationTestScenarios. |
| list_release_plansC | List Konflux ReleasePlans with target workspace. |
| list_releasesC | List Konflux Releases with snapshot, status, and target workspace. |
| list_component_pipeline_runsB | List Tekton PipelineRuns associated with Konflux components. |
| list_managed_clustersB | List ACM ManagedClusters with status, OCP version, cloud provider, and region. |
| get_managed_clusterB | Get detailed ManagedCluster info: capacity, conditions, labels. |
| list_cluster_setsC | List ACM ManagedClusterSets. |
| list_cluster_claimsC | List ACM ClusterClaims with pool and resolved cluster. |
| list_placementsC | List ACM Placements with predicates and satisfaction status. |
| get_placement_decisionsA | List PlacementDecisions for a Placement showing selected clusters. |
| list_policiesC | List ACM Policies with remediation action and compliance status. |
| get_policy_complianceC | Show per-cluster compliance status for an ACM Policy. |
| list_manifest_worksB | List ManifestWorks deployed to a ManagedCluster (namespace=cluster_name). |
| create_manifest_workC | Create a ManifestWork to deploy resources to a ManagedCluster. |
| list_managed_cluster_addonsC | List ManagedClusterAddons on a specific managed cluster. |
| apply_manifestC | Apply a YAML or JSON manifest to the cluster via 'oc apply -f -'. WARNING: This applies resources directly. Review manifests before applying. |
| delete_resourceC | Delete any Kubernetes/OpenShift resource by type and name. WARNING: Destructive operation. Confirm the resource name before proceeding. |
| get_resourceB | Get any resource in YAML, JSON, or wide format. Use output='describe' for oc describe. |
| list_custom_resourcesC | List any custom resource by group/version/plural — works for any CRD. |
| run_oc_commandA | Escape hatch: run any oc command. args is a space-separated string of arguments. WARNING: Use carefully. Destructive commands should be confirmed first. |
| list_crdsB | List all CustomResourceDefinitions with group, stored versions, and scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| troubleshoot_pod | Step-by-step runbook for diagnosing a failing or misbehaving pod. |
| debug_network_connectivity | Step-by-step runbook for diagnosing network connectivity between pods/services. |
| investigate_node_pressure | Step-by-step runbook for diagnosing and resolving node resource pressure. |
| plan_cluster_upgrade | Step-by-step runbook for safely upgrading an OpenShift cluster to a new version. |
| setup_new_project | Step-by-step runbook for provisioning a new OpenShift project with proper guardrails. |
| deploy_ml_model | Step-by-step runbook for deploying an ML model using OpenShift AI (RHOAI). |
| investigate_cluster_degradation | Step-by-step runbook for investigating a degraded or unhealthy cluster. |
| migrate_vm_workload | Step-by-step runbook for live-migrating a KubeVirt VM to another node. |
| debug_operator_install | Step-by-step runbook for diagnosing a stuck or failed operator installation. |
| configure_gitops_application | Step-by-step runbook for deploying an application via OpenShift GitOps (ArgoCD). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| cluster_info | Current cluster version and infrastructure summary. |
| cluster_nodes | List all cluster nodes with role, ready status, OS image, kubelet version, and age. |
| cluster_operators | List all cluster operators sorted degraded-first, with available/progressing/degraded status. |
| cluster_alerts | List currently firing alerts from Alertmanager. |
TDQS
Scored across 216 tools
Every tool name includes a specific action and resource type (e.g., list_pods, get_pod, scale_deployment), making each tool's purpose clear and distinct. Even with 216 tools, the consistent naming prevents ambiguity, and generic escape hatches like run_oc_command are explicitly labeled.
All tools follow a consistent verb_noun pattern (list_, get_, create_, delete_, scale_, rollout_*, etc.), with resource types as the noun. Deviations like apply_manifest and get_resource still adhere to the same structure, ensuring predictability.
216 tools is extreme and far exceeds any reasonable scope for an MCP server. Even for a comprehensive OpenShift management platform, this count is overwhelming and will likely confuse agents, making tool selection difficult. It falls into the 'extreme mismatch' category.
The tool set covers an extensive range of OpenShift domains including compute, networking, storage, security, operators, machine management, monitoring, service mesh, OpenShift AI, virtualization, GitOps, Tekton, and ACM. However, some resource types lack individual get/update/delete operations (e.g., Deployments have no get or delete), relying on generic tools like get_resource and delete_resource, creating minor gaps.