Skip to main content
Glama

ocp-mcp

An MCP (Model Context Protocol) server for managing multiple OpenShift Container Platform (OCP) clusters through AI assistants like GitHub Copilot, Windsurf, or any MCP-compatible client.

Features

  • Multi-cluster management — register and switch between dev, UAT, and production clusters

  • Built-in org cluster map — pre-configured aliases for standard environments

  • Dedicated OAuth support — works with separate oauth-openshift.* hostnames

  • 60+ tools covering the full range of OpenShift/Kubernetes operations

  • Real-time metrics — CPU/memory usage for pods and nodes (top_pods, top_nodes)

  • Observability — PrometheusRules, ServiceMonitors, PodMonitors, AlertmanagerConfigs

  • OCP-native — Routes, DeploymentConfigs, Builds, BuildConfigs, ImageStreams

  • Operational — force-delete stuck pods, find failing pods, rollback deployments

  • Secure — secrets are never returned in plain text; tokens are in-memory only

Related MCP server: OpenShift SRE Copilot

Prerequisites

  • Python 3.11+

  • uv package manager

  • Access to one or more OpenShift 4.x clusters

Installation

# Clone the repository
git clone <repo-url>
cd ocp-mcp

# Install dependencies
uv sync

Corporate Artifactory Setup

If your organization requires downloading packages through Artifactory:

Option 1: Environment variables

export UV_INDEX_URL="https://<artifactory-host>/artifactory/api/pypi/<pypi-repo>/simple"
export UV_INDEX_USERNAME="<your-username>"
export UV_INDEX_PASSWORD="<your-password-or-token>"
uv sync

Option 2: Project-level config (add to pyproject.toml)

[[tool.uv.index]]
name = "artifactory"
url = "https://<artifactory-host>/artifactory/api/pypi/<pypi-repo>/simple"
default = true

Then run uv sync as normal.

Running the MCP Server

uv run ocp-mcp

The server runs over stdio transport, which is what VS Code, Windsurf, and other MCP clients expect.

Client Configuration

VS Code (GitHub Copilot)

Add to your VS Code MCP settings (.vscode/mcp.json or user settings):

{
  "mcpServers": {
    "ocp-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ocp-mcp", "ocp-mcp"]
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration:

{
  "mcpServers": {
    "ocp-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ocp-mcp", "ocp-mcp"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ocp-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ocp-mcp", "ocp-mcp"]
    }
  }
}

Replace /path/to/ocp-mcp with the absolute path to this repository.

Built-in Cluster Map

The server ships with pre-configured aliases for standard org environments:

Alias

API URL

OAuth URL

dev

https://api.ocp.dev.com:6443

https://oauth-openshift.ocp.dev.com:6443

uat-g1

https://api.ocp-uat-g1.com:6443

https://oauth-openshift.ocp-uat-g1.com:6443

uat-g2

https://api.ocp-uat-g2.com:6443

https://oauth-openshift.ocp-uat-g2.com:6443

prod-g1

https://api.ocp-prod-g1.com:6443

https://oauth-openshift.ocp-prod-g1.com:6443

prod-g2

https://api.ocp-prod-g2.com:6443

https://oauth-openshift.ocp-prod-g2.com:6443

Quick Start

Once the MCP server is connected to your AI client, use these commands in chat:

Register all standard clusters at once

register_standard_clusters(username="your-user", password="your-pass", set_default_alias="dev")

Register with per-environment credentials

register_standard_clusters(
    username="shared-user",
    password="shared-pass",
    credentials_by_alias={
        "prod-g1": {"username": "prod-admin", "password": "prod-pass"},
        "prod-g2": {"username": "prod-admin", "password": "prod-pass"}
    },
    set_default_alias="dev"
)

Register a single custom cluster

register_cluster(
    alias="custom",
    api_url="https://api.my-cluster.com:6443",
    oauth_url="https://oauth-openshift.my-cluster.com:6443",
    username="admin",
    password="secret"
)

Switch default cluster

set_default_cluster(alias="uat-g1")

Target a specific cluster (any tool)

list_pods(namespace="my-app", cluster_alias="prod-g1")

Available Tools

Cluster Management

Tool

Description

register_cluster

Register an OpenShift cluster with credentials and optional OAuth URL

register_standard_clusters

Register all built-in org clusters in one call

list_clusters

List all registered clusters

list_standard_clusters

List built-in cluster aliases and URLs

set_default_cluster

Set the default cluster for subsequent commands

remove_cluster

Remove a registered cluster

refresh_cluster_token

Re-authenticate and refresh an expired OAuth token

Namespaces / Projects

Tool

Description

list_namespaces

List all namespaces (projects) in a cluster

Pods

Tool

Description

list_pods

List all Pods in a namespace

get_pod

Get detailed Pod info (status, containers, IPs, resource requests/limits)

get_pod_logs

Get logs from a Pod (container, tail lines, since_seconds, timestamps, previous)

get_all_container_logs

Get logs from ALL containers in a multi-container Pod

get_previous_pod_logs

Get logs from the previous crashed/terminated instance

get_pod_events

Get events for a specific Pod

Pod Operations

Tool

Description

list_terminating_pods

List pods stuck in Terminating state

force_delete_pod

Force-delete a single stuck Terminating pod (grace_period=0)

force_delete_all_terminating_pods

Force-delete ALL stuck Terminating pods in a namespace

list_failing_pods

Find pods in CrashLoopBackOff, ImagePullBackOff, OOMKilled, etc.

list_pods_not_ready

List pods where at least one container is not ready

Deployments

Tool

Description

list_deployments

List all Deployments in a namespace

get_deployment

Get detailed Deployment info (strategy, containers, conditions)

scale_deployment

Scale a Deployment to N replicas

rollout_restart

Trigger a rolling restart of a Deployment

get_deployment_rollout_status

Get rollout progress, conditions, and generation info

get_deployment_revision_history

List revision history (ReplicaSets) with images and change cause

rollback_deployment

Roll back a Deployment to a previous revision

get_deployment_image_info

Get image repo/tag/version for a Deployment

list_deployments_image_info

Get image info for all Deployments in a namespace

DeploymentConfigs (OpenShift)

Tool

Description

list_deploymentconfigs

List all OpenShift DeploymentConfigs in a namespace

get_deploymentconfig

Get detailed DeploymentConfig info (triggers, strategy, containers)

scale_deploymentconfig

Scale a DeploymentConfig to N replicas

StatefulSets

Tool

Description

list_statefulsets

List all StatefulSets in a namespace

get_statefulset

Get detailed StatefulSet info (volumes, service name)

scale_statefulset

Scale a StatefulSet to N replicas

DaemonSets

Tool

Description

list_daemonsets

List all DaemonSets in a namespace

get_daemonset

Get detailed DaemonSet info (node selector, containers)

ReplicaSets

Tool

Description

list_replicasets

List all ReplicaSets in a namespace

Services

Tool

Description

list_services

List all Services in a namespace (ports, selectors, type)

Routes (OpenShift)

Tool

Description

list_routes

List all OpenShift Routes in a namespace

get_route

Get detailed Route info (host, TLS, backends)

Ingresses

Tool

Description

list_ingresses

List all Ingresses in a namespace

get_ingress

Get detailed Ingress info (rules, TLS, annotations)

Horizontal Pod Autoscalers

Tool

Description

list_hpas

List all HPAs in a namespace

get_hpa

Get detailed HPA info (target ref, min/max/current replicas)

Jobs & CronJobs

Tool

Description

list_jobs

List all Jobs in a namespace

get_job

Get detailed Job info (completions, conditions, containers)

list_cronjobs

List all CronJobs in a namespace

get_cronjob

Get detailed CronJob info (schedule, concurrency, history)

ConfigMaps

Tool

Description

list_configmaps

List all ConfigMaps in a namespace

get_configmap

Get a ConfigMap including its data

Secrets

Tool

Description

list_secrets

List Secrets in a namespace (metadata only, no values)

get_secret_metadata

Get Secret metadata (type, keys, labels — no values)

Nodes

Tool

Description

list_nodes

List all nodes (roles, capacity, conditions)

get_node

Get detailed node info (taints, allocatable, OS/runtime info)

Storage

Tool

Description

list_pvcs

List all PersistentVolumeClaims in a namespace

get_pvc

Get detailed PVC info (capacity, storage class, conditions)

Network Policies

Tool

Description

list_network_policies

List all NetworkPolicies in a namespace

Events

Tool

Description

list_events

List events in a namespace (sorted by time)

get_pod_events

Get events for a specific Pod

Metrics (Observe)

Tool

Description

top_pods

Real-time CPU/memory usage for all pods in a namespace

top_pod

Real-time CPU/memory usage for a specific pod

top_nodes

Real-time CPU/memory usage for all cluster nodes

pod_resource_usage_vs_requests

Compare actual usage vs requests/limits for right-sizing

Monitoring (Observe)

Tool

Description

list_prometheus_rules

List PrometheusRules (alerting/recording rules) in a namespace

get_prometheus_rule

Get detailed rule groups, expressions, severity, and summaries

list_service_monitors

List ServiceMonitors (Prometheus scrape targets)

list_pod_monitors

List PodMonitors (Prometheus pod scrape targets)

list_alertmanager_configs

List AlertmanagerConfig resources

Builds (OpenShift)

Tool

Description

list_buildconfigs

List all BuildConfigs in a namespace

get_buildconfig

Get detailed BuildConfig info (strategy, source, triggers)

list_builds

List all Builds in a namespace

get_build

Get detailed Build info (phase, duration, output image, log snippet)

ImageStreams (OpenShift)

Tool

Description

list_imagestreams

List all ImageStreams in a namespace

get_imagestream

Get detailed ImageStream info with all tags and image references

Quotas & Limits

Tool

Description

list_resource_quotas

List ResourceQuotas with used vs hard limits

list_limit_ranges

List LimitRanges (default requests, limits, min, max)

list_service_accounts

List ServiceAccounts in a namespace

Resource Deletion

Tool

Description

delete_resource

Delete a resource by kind and name

Supported kinds for deletion: Pod, Deployment, StatefulSet, DaemonSet, ReplicaSet, Service, ConfigMap, Secret, Job, CronJob, PersistentVolumeClaim, Ingress, NetworkPolicy, HorizontalPodAutoscaler.

Usage Examples

Here are some common tasks you can ask the AI to perform:

Debugging a failing pod:

"Show me the logs for pod my-app-xyz in namespace production on prod-g1"

Find all crashing pods:

"List all failing pods in namespace my-app on prod-g1"

Force-delete stuck pods:

"Force-delete all terminating pods in namespace my-app on uat-g1"

Get logs from all containers in a pod:

"Get logs from all containers in pod my-app-xyz in namespace production"

Check resource usage (Observe > Metrics):

"Show me CPU and memory usage for all pods in namespace my-app on prod-g1"

Right-size pods:

"Compare actual resource usage vs requests for pods in namespace my-app on dev"

Check node capacity and usage:

"Show me top nodes by CPU usage on prod-g1"

Comparing deployments across environments:

"List the image tags for all deployments in namespace my-app on dev and uat-g1"

Rollback a bad deployment:

"Roll back deployment api-server in namespace my-app on prod-g1 to the previous revision"

Scaling for load:

"Scale deployment api-server to 5 replicas in namespace my-app on prod-g1"

Checking routes:

"List all routes in namespace my-app on uat-g1"

Investigating events:

"Show me recent events in namespace my-app on prod-g2"

Check alerting rules (Observe > Alerting):

"List all PrometheusRules in namespace openshift-monitoring on prod-g1"

View builds:

"List recent builds in namespace my-app on dev"

Check image streams:

"Show me all tags for imagestream my-app in namespace my-app on dev"

Check quotas:

"Show me resource quotas and usage in namespace my-app on prod-g1"

Token Management

  • Tokens are acquired via OCP's OAuth implicit flow and stored in memory only.

  • If a token expires, use refresh_cluster_token(alias="dev") to re-authenticate.

  • Restarting the MCP server clears all tokens — re-register clusters on restart.

Security Notes

  • No secrets exposed: list_secrets and get_secret_metadata return only metadata (type, keys, labels) — never secret values.

  • No persistent credentials: Tokens and passwords are held in-memory for the server process lifetime only.

  • SSL verification: Enabled by default. Set verify_ssl=False only for test clusters with self-signed certificates.

Development

# Install with dev dependencies
uv sync --extra dev

# Run tests
uv run pytest

# Run linter
uv run ruff check src/ tests/

Project Structure

ocp-mcp/
├── pyproject.toml
├── README.md
├── src/ocp_mcp/
│   ├── server.py                  # MCP server entry point
│   ├── cluster_manager.py         # Multi-cluster registry and API client management
│   ├── auth.py                    # OCP OAuth token acquisition
│   ├── models.py                  # Pydantic response models
│   ├── exceptions.py              # Custom exceptions
│   └── tools/
│       ├── registry.py            # Cluster registration tools
│       ├── deployments.py         # Deployment operations + rollout + rollback
│       ├── ocp_deploymentconfigs.py  # DeploymentConfig operations (OCP)
│       ├── workloads.py           # StatefulSets, DaemonSets, ReplicaSets
│       ├── jobs.py                # Jobs and CronJobs
│       ├── resources.py           # Pods, Namespaces, Services, delete_resource
│       ├── pod_ops.py             # Force-delete, terminating/failing/not-ready pods
│       ├── logs.py                # Pod log retrieval (single, all containers, previous)
│       ├── events.py              # Namespace and Pod events
│       ├── metrics.py             # Real-time pod/node metrics + usage vs requests
│       ├── monitoring.py          # PrometheusRules, ServiceMonitors, PodMonitors
│       ├── hpa.py                 # Horizontal Pod Autoscalers
│       ├── configmaps.py          # ConfigMap operations
│       ├── secrets.py             # Secret metadata (no values)
│       ├── quotas.py              # ResourceQuotas, LimitRanges, ServiceAccounts
│       ├── image_info.py          # Deployment image/tag inspection
│       ├── nodes.py               # Node listing and details
│       ├── storage.py             # PersistentVolumeClaim operations
│       ├── routes.py              # OpenShift Route operations
│       ├── ocp_builds.py          # Builds, BuildConfigs, ImageStreams (OCP)
│       └── networking.py          # Ingresses and NetworkPolicies
└── tests/
    ├── test_auth.py
    └── test_cluster_manager.py

License

Internal use.

Available Tools

77 tools
delete_resourceB

Delete a Kubernetes resource by kind and name.

Supported kinds: Pod, Deployment, Service, ConfigMap, HorizontalPodAutoscaler

Inputs: kind (required), name (required), namespace, cluster_alias.

force_delete_all_terminating_podsB

Force-delete ALL pods stuck in Terminating state in a namespace.

Inputs: namespace, cluster_alias.

force_delete_podB

Force-delete a pod stuck in Terminating state (grace_period_seconds=0).

Use this when a pod will not terminate normally and is stuck.

Inputs: name (required), namespace, cluster_alias.

get_all_container_logsA

Get logs from ALL containers in a multi-container Pod.

Returns a dict mapping container name to its log output.

Inputs: name (required), previous, namespace, tail_lines, +3 more. Returns: object

get_buildC

Get detailed information about an OpenShift Build.

Inputs: name (required), namespace, cluster_alias.

get_buildconfigC

Get detailed information about an OpenShift BuildConfig.

Inputs: name (required), namespace, cluster_alias.

get_configmapC

Get a ConfigMap including its data.

Inputs: name (required), namespace, cluster_alias.

get_cronjobB

Get detailed information about a specific CronJob.

Inputs: name (required), namespace, cluster_alias.

get_daemonsetB

Get detailed information about a specific DaemonSet.

Inputs: name (required), namespace, cluster_alias.

get_deploymentC

Get detailed information about a specific Deployment.

Inputs: name (required), namespace, cluster_alias.

get_deploymentconfigC

Get detailed information about an OpenShift DeploymentConfig.

Inputs: name (required), namespace, cluster_alias.

get_deployment_image_infoB

Get image repository, tag, and version label for a specific Deployment.

Inputs: name (required), namespace, cluster_alias. Returns: name, version, replicas, namespace, +2 more

get_deployment_revision_historyB

List the revision history (ReplicaSets) for a Deployment.

Inputs: name (required), namespace, cluster_alias. Returns: result

get_deployment_rollout_statusA

Get the rollout status of a Deployment including progress and conditions.

Inputs: name (required), namespace, cluster_alias.

get_hpaB

Get detailed information about a specific HorizontalPodAutoscaler.

Inputs: name (required), namespace, cluster_alias. Returns: name, namespace, target_ref, max_replicas, +3 more

get_imagestreamB

Get detailed information about an OpenShift ImageStream including all tags.

Inputs: name (required), namespace, cluster_alias.

get_ingressB

Get detailed information about a specific Ingress.

Inputs: name (required), namespace, cluster_alias.

get_jobB

Get detailed information about a specific Job.

Inputs: name (required), namespace, cluster_alias.

get_nodeB

Get detailed information about a specific node.

Inputs: name (required), cluster_alias.

get_podC

Get detailed information about a specific Pod.

Inputs: name (required), namespace, cluster_alias.

get_pod_eventsC

Get events for a specific Pod.

Inputs: name (required), namespace, cluster_alias. Returns: result

get_pod_logsA

Get logs from a Pod.

Options:

  • container: target a specific container in a multi-container pod

  • tail_lines: number of lines from the end (default 100)

  • since_seconds: only return logs from the last N seconds

  • timestamps: prepend RFC3339 timestamp to each log line

  • previous: get logs from the previous terminated instance

Inputs: name (required), previous, container, namespace, +4 more. Returns: result

get_previous_pod_logsA

Get logs from the previous (crashed/terminated) instance of a pod container.

Shortcut for get_pod_logs(..., previous=True).

Inputs: name (required), container, namespace, tail_lines, +1 more. Returns: result

get_prometheus_ruleB

Get detailed PrometheusRule including all alerting and recording rules.

Inputs: name (required), namespace, cluster_alias.

get_pvcB

Get detailed information about a specific PersistentVolumeClaim.

Inputs: name (required), namespace, cluster_alias.

get_routeB

Get detailed information about a specific OpenShift Route.

Inputs: name (required), namespace, cluster_alias.

get_secret_metadataA

Get Secret metadata (type, keys, labels). Secret values are NOT returned for security.

Inputs: name (required), namespace, cluster_alias.

get_statefulsetB

Get detailed information about a specific StatefulSet.

Inputs: name (required), namespace, cluster_alias.

list_alertmanager_configsA

List AlertmanagerConfig resources in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_buildconfigsB

List all OpenShift BuildConfigs in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_buildsB

List all OpenShift Builds in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_clustersA

List all registered clusters (no tokens or passwords exposed).

Inputs: no named parameters. Returns: result

list_configmapsB

List all ConfigMaps in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_cronjobsB

List all CronJobs in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_daemonsetsA

List all DaemonSets in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_deploymentconfigsB

List all OpenShift DeploymentConfigs in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_deploymentsB

List all Deployments in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_deployments_image_infoA

Get image repository, tag, and version label for all Deployments in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_eventsA

List events in a namespace, sorted by last timestamp descending.

Inputs: namespace, cluster_alias. Returns: result

list_failing_podsB

List pods that are in error states: CrashLoopBackOff, ImagePullBackOff, ErrImagePull, OOMKilled, etc.

Inputs: namespace, cluster_alias. Returns: result

list_hpasB

List all HorizontalPodAutoscalers in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_imagestreamsB

List all OpenShift ImageStreams in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_ingressesB

List all Ingresses in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_jobsC

List all Jobs in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_limit_rangesB

List all LimitRanges in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_namespacesB

List all namespaces (projects) in the cluster.

Inputs: cluster_alias. Returns: result

list_network_policiesA

List all NetworkPolicies in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_nodesC

List all nodes in the cluster with status and capacity info.

Inputs: cluster_alias. Returns: result

list_pod_monitorsA

List all PodMonitors in a namespace (Prometheus pod scrape targets).

Inputs: namespace, cluster_alias. Returns: result

list_podsB

List all Pods in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_pods_not_readyC

List pods where at least one container is not ready.

Inputs: namespace, cluster_alias. Returns: result

list_prometheus_rulesA

List all PrometheusRules (alerting/recording rules) in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_pvcsB

List all PersistentVolumeClaims in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_replicasetsB

List all ReplicaSets in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_resource_quotasA

List all ResourceQuotas in a namespace with used vs hard limits.

Inputs: namespace, cluster_alias. Returns: result

list_routesB

List all OpenShift Routes in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_secretsA

List all Secrets in a namespace (metadata only, no secret data exposed).

Inputs: namespace, cluster_alias. Returns: result

list_service_accountsC

List all ServiceAccounts in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_service_monitorsC

List all ServiceMonitors in a namespace (Prometheus scrape targets).

Inputs: namespace, cluster_alias. Returns: result

list_servicesC

List all Services in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_standard_clustersA

List built-in cluster aliases and API/OAuth URLs for dev/uat/prod environments.

Inputs: no named parameters. Returns: result

list_statefulsetsB

List all StatefulSets in a namespace.

Inputs: namespace, cluster_alias. Returns: result

list_terminating_podsA

List pods stuck in Terminating state.

A pod is considered terminating if it has a deletion_timestamp set.

Inputs: namespace, cluster_alias. Returns: result

pod_resource_usage_vs_requestsA

Compare actual pod resource usage against configured requests/limits.

Useful for right-sizing: identifies over-provisioned and under-provisioned pods.

Inputs: namespace, cluster_alias. Returns: result

refresh_cluster_tokenA

Re-authenticate and refresh the OAuth token for a cluster.

Uses the default cluster if alias is not provided.

Inputs: alias. Returns: alias, api_url, username, is_default

register_clusterA

Register an OpenShift cluster by acquiring an OAuth token.

The first registered cluster automatically becomes the default. Provide oauth_url when OAuth is served from a dedicated hostname. Set set_default=True to make this cluster the default when registering additional clusters.

Inputs: alias (required), api_url (required), password (required), username (required), +3 more. Returns: alias, api_url, username, is_default

register_standard_clustersA

Register all built-in cluster aliases in one call.

By default, top-level username/password are used for every alias. Use credentials_by_alias to override credentials per alias.

Inputs: password (required), username (required), verify_ssl, set_default_alias, +1 more. Returns: result

remove_clusterA

Remove a registered cluster. If it was the default, the next registered cluster becomes default.

Inputs: alias (required).

rollback_deploymentA

Roll back a Deployment to a previous revision.

If revision is not specified, rolls back to the previous revision. Uses ReplicaSet history to find the target revision's pod template.

Inputs: name (required), revision, namespace, cluster_alias.

rollout_restartB

Trigger a rolling restart of a Deployment by patching the pod template annotation.

Inputs: name (required), namespace, cluster_alias.

scale_deploymentB

Scale a Deployment to the specified number of replicas.

Inputs: name (required), replicas (required), namespace, cluster_alias.

scale_deploymentconfigB

Scale an OpenShift DeploymentConfig to the specified number of replicas.

Inputs: name (required), replicas (required), namespace, cluster_alias.

scale_statefulsetB

Scale a StatefulSet to the specified number of replicas.

Inputs: name (required), replicas (required), namespace, cluster_alias.

set_default_clusterA

Set the default cluster used when no cluster_alias is provided to other tools.

Inputs: alias (required).

top_nodesB

Get real-time CPU and memory usage for all nodes (like 'oc adm top nodes').

Inputs: cluster_alias. Returns: result

top_podC

Get real-time CPU and memory usage for a specific pod.

Inputs: name (required), namespace, cluster_alias.

top_podsA

Get real-time CPU and memory usage for all pods in a namespace (like 'oc adm top pods').

Inputs: namespace, cluster_alias. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 77 tools

    Disambiguation4/5

    Most tools target distinct resource types (list_* vs get_* per kind), and overlap is limited to a few areas like logs (get_pod_logs, get_all_container_logs, get_previous_pod_logs) and deployment operations (rollout_restart, rollback_deployment, get_deployment_revision_history). Descriptions clarify these related tools, so an agent can usually pick the right one, but the sheer number increases selection risk.

    Naming Consistency4/5

    The dominant pattern is verb_noun in snake_case (list_pods, get_deployment, scale_statefulset), which is predictable. However, there are deviations like rollout_restart (noun_verb), top_pods/top_nodes (no list/get prefix), and pod_resource_usage_vs_requests (descriptive phrase) that break the strict pattern.

    Tool Count2/5

    With 77 tools, the surface is very large and far exceeds the typical well-scoped range. While OpenShift is broad, many tools are similar list/get variants for different resource kinds, making the server feel overloaded. This volume could overwhelm agents and increase decision cost.

    Completeness3/5

    The server covers a wide range of OpenShift resources with list/get, scaling, logs, events, and monitoring. However, there are notable gaps: no create/update for most resources, delete only for a few kinds, and missing some common resources like roles/rolebindings. Core operational workflows are present, but full lifecycle coverage is incomplete.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables interaction with multiple Kubernetes clusters simultaneously, providing comprehensive tools for cluster management, resource operations, and diagnostics across different environments.
      -
    • A
      license
      C
      quality
      C
      maintenance
      An MCP server that provides complete Kubernetes API operations, enabling cluster management, resource CRUD, diagnostics, backup/restore, and multi-cluster configuration via natural language.
      32
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server that enables AI agents to interact with Red Hat OpenShift AI environments, providing tools for project management, workbench operations, model serving, and more.
      295 PyPI
      10
      Apache 2.0