Skip to main content
Glama
junzzhu

OpenShift MCP Server

by junzzhu

OpenShift MCP Server

A Model Context Protocol (MCP) server for OpenShift diagnostics and troubleshooting.

Features

Storage Tools

  • Storage Analysis: get_cluster_storage_report - comprehensive report of ephemeral storage usage on nodes, including top pod consumers.

  • Deep Forensics: inspect_node_storage_forensics - deep analysis of disk usage on a specific node, checking for unused images and container writable layers.

  • PV Capacity: check_persistent_volume_capacity - monitor persistent volume usage across namespaces with configurable thresholds.

Monitoring Tools

  • Resource Balance: get_cluster_resource_balance - analyze CPU and memory resource distribution across nodes.

  • Pod Restarts: detect_pod_restarts_anomalies - identify pods with excessive restart counts within a time window.

  • GPU Utilization: get_gpu_utilization - track GPU usage and identify idle GPU resources.

  • Inspect GPU Pod: inspect_gpu_pod - run nvidia-smi inside a GPU-enabled pod to view real-time process and memory details.

  • Check GPU Health: check_gpu_health - check for GPU hardware errors (XID) and throttling events across the cluster.

  • vLLM Metrics: get_vllm_metrics - monitor vLLM inference server performance metrics (throughput, queue size, cache usage).

All monitoring tools use Prometheus metrics via OpenShift route for real-time cluster observability.

Pod Diagnostics Tools

  • Pod Logs: get_pod_logs - retrieve and analyze logs from a specific pod, with support for previous container logs, tail limits, and time-based filtering.

  • Pod Diagnostics: get_pod_diagnostics - comprehensive health check of a pod including status, conditions, container states, restart counts, and issue detection.

Related MCP server: Kubernetes MCP Server

Installation

# Using uv (recommended)
uv tool install .

# Or pip
pip install .

Configuration

This server relies on the oc command line tool.

  1. Ensure oc is installed and in your PATH.

  2. Ensure you are authenticated (oc login ...) to your target cluster before running the server.

MCP Client Configuration

Configure the MCP server in your Claude Desktop or Gemini CLI settings:

{
  "mcpServers": {
    "openshift-tools": {
      "command": "uv",
      "args": ["run", "openshift-mcp-server"]
    }
  }
}

Example Usage

Once configured, you can ask questions like:

"Give me a summary of storage usage for all nodes"

"Check GPU utilization in the cluster"

"Diagnose pod health for my-app-pod in production namespace"

Simulated Tool Output (get_cluster_storage_report):

# Storage Usage Report (3 nodes)

### Node: master0.example.com
- **Filesystem**: Used: 36.70 Gi | Capacity: 99.44 Gi | Available: 62.74 Gi
- **Image FS**: Used: 34.17 Gi
- **Total Pod Ephemeral Storage**: 5.19 Gi

**Top Pod Consumers:**
- 2.60 Gi: `openshift-marketplace/redhat-operators-gb8ff`
- 974.96 Mi: `openshift-marketplace/community-operators-fq744`

Simulated Tool Output (get_gpu_utilization):

### GPU Utilization Report
**Total GPUs Found:** 4

| Node | GPU | Utilization | Memory Used | Status |
|------|-----|-------------|-------------|--------|
| `host-a:9400` | 0 | **0.0%** | 0.0% | ⚠️ Idle |
| `host-a:9400` | 1 | **85.2%** | 92.3% | ✅ Active |

Simulated Tool Output (detect_pod_restarts_anomalies):

### Pod Restart Anomalies (>5 in last 1h)
| Namespace | Pod | Restarts |
|-----------|-----|----------|
| `ns-1` | `pod-a-7b666bd598-cvrlk` | **34** |
| `ns-2` | `pod-b-6dcf7d7bb8-dw8sg` | **16** |

#### 📋 Recommendations
1. **Check Logs**: `oc logs <pod> -n <namespace> --previous`
2. **Check Events**: `oc get events -n <namespace>`

Development

# Run locally
uv run openshift-mcp-server

Testing the server directly

When run directly, the server expects JSON-RPC messages on standard input. You can verify the registered tools by simulating a full client handshake (Initialize -> Initialized -> Tools/List):

(echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test-client", "version": "1.0"}}}'; sleep 0.5; echo '{"jsonrpc": "2.0", "method": "notifications/initialized"}'; sleep 0.5; echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}') | uv run openshift-mcp-server

Expected output (truncated for brevity):

{"jsonrpc":"2.0","id":1,"result":{...}}
{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"get_cluster_storage_report",...},{"name":"inspect_node_storage_forensics",...},...]}}

Available Tools

11 tools
check_gpu_healthA
Check for GPU hardware errors (XID) and throttling events across the cluster.

Why:
- Detect Hardware Failures: XID errors often indicate physical GPU faults.
- Explain Performance Issues: Thermal or Power throttling explains why a model is slow. 

Returns:
    Markdown report of GPU health issues.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function and output format (Markdown report), but lacks details on permissions needed, rate limits, or whether it performs read-only operations, which are important for a cluster health check tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a purpose statement, a 'Why' section for context, and a 'Returns' section for output, all in three concise bullet points. Every sentence adds value without redundancy, making it efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (health diagnostics across a cluster) and the presence of an output schema, the description is mostly complete, covering purpose, usage context, and output format. However, it could benefit from more behavioral details like authentication or error handling, which are not fully compensated by the output schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description does not need to add parameter details, and it appropriately focuses on the tool's purpose and output, earning a baseline score above 3 due to no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('check for GPU hardware errors and throttling events') and resources ('across the cluster'), distinguishing it from siblings like get_gpu_utilization or inspect_gpu_pod by focusing on health diagnostics rather than metrics or detailed pod inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Why' section provides clear context for when to use this tool (detect hardware failures, explain performance issues), but it does not explicitly state when not to use it or name alternatives among siblings, such as get_gpu_utilization for utilization metrics instead of health issues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_persistent_volume_capacityA
Monitor Persistent Volume Claim (PVC) capacity usage across the cluster.

Critical for preventing database crashes and data loss due to full disks.
This checks PVCs (persistent storage) which is distinct from ephemeral storage.

Args:
    namespace: Optional namespace to filter PVCs. If None, checks all namespaces.
    threshold: Alert threshold percentage (default: 85%). PVCs above this will be flagged.

Returns:
    Formatted report of PVC usage with warnings for volumes exceeding threshold.
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNo
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function (monitoring PVC capacity) and criticality (preventing crashes/data loss), and mentions that it returns a formatted report with warnings. However, it lacks details on permissions needed, rate limits, whether it's read-only or has side effects, or how the warnings are formatted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by critical context, parameter explanations, and return details. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (monitoring critical storage with alerting), no annotations, and an output schema present, the description does a good job covering purpose, usage, and parameters. However, it could be more complete by addressing behavioral aspects like safety (read-only vs. mutating) or error handling, which are important for a tool focused on preventing data loss.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It clearly explains both parameters: 'namespace' (optional filter for PVCs, with 'None' meaning all namespaces) and 'threshold' (alert percentage with default 85%). This adds meaningful context beyond the bare schema, though it doesn't specify units or constraints for 'threshold' beyond the default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('monitor', 'checks') and resources ('Persistent Volume Claim (PVC) capacity usage across the cluster'). It explicitly distinguishes this tool from ephemeral storage monitoring, which helps differentiate it from sibling tools like get_cluster_storage_report that might handle different storage types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('critical for preventing database crashes and data loss due to full disks') and distinguishes it from ephemeral storage. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools, such as get_cluster_storage_report for broader storage analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_pod_restarts_anomaliesA
Identify unstable pods experiencing high restart rates.

Why:
- Application stability indicator: High restart rates signal code issues (OOM, panics, misconfigurations)
- Proactive detection: Catches intermittent failures before they become incidents
- Actionable: Directly points to problematic workloads

Args:
    threshold: Minimum number of restarts to flag (default: 5).
    duration: Window of time to analyze (e.g., '1h', '24h', '10m').
    
Returns:
    Markdown report of unstable pods.
ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNo
durationNo1h

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about what the tool detects (unstable pods, high restart rates) and why (application stability, proactive detection), but does not specify permissions needed, rate limits, or detailed output behavior beyond a 'Markdown report'. This leaves gaps in understanding operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by a 'Why' section for context, and clear sections for 'Args' and 'Returns'. Every sentence adds value without redundancy, making it efficient and easy to parse for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, but an output schema exists), the description is largely complete. It covers purpose, parameters, and return format, and the output schema handles return values. However, it lacks details on permissions, error handling, or integration with sibling tools, which could enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for both parameters: 'threshold' is explained as 'Minimum number of restarts to flag' with a default, and 'duration' as 'Window of time to analyze' with examples. This clarifies usage beyond the bare schema, though it could provide more detail on duration formats or threshold rationale.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('identify unstable pods experiencing high restart rates') and distinguishes this tool from siblings like get_pod_diagnostics or get_pod_logs by focusing on restart rate anomalies rather than general diagnostics or logs. The 'Why' section reinforces this purpose by explaining it's an application stability indicator for proactive detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for monitoring pod stability and catching intermittent failures, but does not explicitly state when to use this tool versus alternatives like get_pod_diagnostics or inspect_gpu_pod. No exclusions or specific prerequisites are mentioned, leaving the agent to infer context from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cluster_resource_balanceA
Analyze cluster resource balance, focusing on Request vs Usage gaps.

Why Essential:
- Scheduling bottleneck diagnosis: Explains why pods are Pending despite capacity.
- Resource fragmentation detection: Identifies "request vs usage" gaps.
- Cost efficiency: Reveals over-provisioned nodes.

Returns:
    Markdown table showing CPU/Memory Requests vs Usage per node.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it explains the tool's focus on 'Request vs Usage gaps', diagnostic purposes, and returns a 'Markdown table showing CPU/Memory Requests vs Usage per node'. It doesn't mention rate limits or auth needs, but covers output format and use cases adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose, followed by a bulleted 'Why Essential' section for context, and ending with return details. Every sentence earns its place by providing clear, non-redundant information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (diagnostic analysis), no annotations, 0 parameters, and an output schema (implied by 'Has output schema: true'), the description is complete enough. It explains the purpose, usage scenarios, and return format, compensating well for the lack of annotations and leveraging the output schema for return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description adds no parameter information, which is appropriate since no parameters exist, maintaining the baseline without penalty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Analyze cluster resource balance') and resources ('Request vs Usage gaps'), distinguishing it from siblings like 'get_cluster_storage_report' or 'get_gpu_utilization' by focusing on resource allocation diagnostics rather than storage, GPU, or pod-specific metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool through the 'Why Essential' section, listing specific scenarios like 'Scheduling bottleneck diagnosis', 'Resource fragmentation detection', and 'Cost efficiency'. It implicitly distinguishes from siblings by not covering GPU health, storage, or pod logs, providing clear context for its application.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cluster_storage_reportA
Use this FIRST. Fast, high-level summary of storage usage for all nodes or a specific node.
Checks quotas and reported usage from the Kubelet API.

If 'node' is provided, analyzes only that node.
If 'node' is not provided, analyzes all worker nodes.
ParametersJSON Schema
NameRequiredDescriptionDefault
nodeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's scope ('fast, high-level summary'), data sources ('Kubelet API'), and conditional behavior based on the node parameter. However, it doesn't mention performance characteristics beyond 'fast', error handling, authentication requirements, or rate limits that would be important for operational tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise: four sentences that each earn their place. The first establishes purpose and priority, the second adds technical detail, and the final two sentences provide essential parameter guidance with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return values), no annotations, and a simple single parameter, the description provides excellent context about when to use the tool and how parameters affect behavior. The only minor gap is lack of information about error conditions or operational constraints that would be helpful for a cluster monitoring tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for its single parameter, but the description fully compensates by explaining exactly what the 'node' parameter does and the behavioral difference between providing it versus not providing it. This adds crucial semantic meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('get', 'checks', 'analyzes') and resources ('storage usage for all nodes or a specific node', 'quotas and reported usage from the Kubelet API'). It distinguishes from siblings by focusing specifically on storage reports rather than GPU health, pod diagnostics, or other cluster metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this FIRST' establishes priority, and it clearly explains when to use specific parameter values ('If 'node' is provided, analyzes only that node. If 'node' is not provided, analyzes all worker nodes'). This gives clear context for parameter decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gpu_utilizationA
Monitor GPU usage and health across the cluster.

Why:
- Cost efficiency: GPUs are expensive. Low utilization indicates wasted money.
- Resource optimization: Identifies idle GPUs that could be deallocated.
- Hardware health: High error rates indicate hardware issues.

Prerequisites:
- NVIDIA GPU Operator installed (exports DCGM metrics).

Returns:
    Markdown report of GPU utilization per node.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior by specifying the output format ('Markdown report of GPU utilization per node'), prerequisites, and monitoring scope. It doesn't mention rate limits or auth needs, but covers key operational aspects adequately for a read-only monitoring tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, why, prerequisites, returns), each sentence adds value, and it's front-loaded with the core purpose. There's no redundant or wasted text, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (monitoring with prerequisites), no annotations, and an output schema (implied by 'Has output schema: true'), the description is complete. It explains the purpose, usage context, prerequisites, and return format, covering all necessary aspects without needing to detail outputs that the schema handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, but it does provide context about the monitoring scope ('across the cluster') and prerequisites, which adds value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('monitor GPU usage and health') and resources ('across the cluster'), distinguishing it from siblings like 'check_gpu_health' (which likely focuses on health only) and 'inspect_gpu_pod' (which targets specific pods). The 'Why' section reinforces this by explaining the monitoring goals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Prerequisites' section provides clear context for when to use this tool (requires NVIDIA GPU Operator), and the purpose implies it's for monitoring rather than diagnostics or inspection. However, it doesn't explicitly state when not to use it or name alternatives among siblings, such as when to choose 'check_gpu_health' instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pod_diagnosticsB
Comprehensive pod health analysis with events, status, and actionable recommendations.

Args:
    namespace: Pod namespace
    pod_name: Pod name
    
Returns:
    Detailed diagnostic report with recommendations
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
pod_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. While it mentions the tool returns 'actionable recommendations' and a 'detailed diagnostic report,' it doesn't disclose critical behavioral traits like whether this is a read-only operation, if it requires specific permissions, performance characteristics, or potential side effects. The description is insufficient for a mutation-sensitive context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely efficient with zero waste. The first sentence clearly states purpose, and the Args/Returns sections are well-structured and front-loaded. Every sentence earns its place by adding essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return values) and simple parameters, the description covers the basics adequately. However, for a diagnostic tool with no annotations, it should ideally mention more about the analysis scope, limitations, or what 'actionable recommendations' entail to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists both parameters (namespace, pod_name) with brief explanations, adding meaning beyond the bare schema. However, it doesn't provide format details, constraints, or examples that would be needed for full understanding, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'Comprehensive pod health analysis' with specific components (events, status, recommendations), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'detect_pod_restarts_anomalies' or 'inspect_gpu_pod', which might also analyze pod health in different ways.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'detect_pod_restarts_anomalies' and 'inspect_gpu_pod' that might overlap in pod analysis, there's no indication of when this comprehensive diagnostic is preferred over more specialized tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pod_logsA
Retrieve container logs from a pod.

Args:
    namespace: Pod namespace
    pod_name: Pod name
    container: Specific container name (if None, gets all containers)
    previous: Get logs from previous container instance
    tail: Number of recent lines to retrieve (default: 100)
    since: Time duration to retrieve logs from (e.g., "1h", "30m")
    
Returns:
    Formatted logs with container separation
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
pod_nameYes
containerNo
previousNo
tailNo
sinceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function and output format ('Formatted logs with container separation'), but lacks details on permissions, rate limits, error conditions, or whether it's read-only/destructive. It adds value beyond the schema but doesn't fully cover behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a purpose statement, organized parameter list, and return value note. Every sentence adds value: the first states the tool's function, the Args section documents parameters efficiently, and the Returns section clarifies output formatting. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 parameters, no annotations, but has output schema), the description is mostly complete. It covers all parameters semantically and mentions the output format. However, it lacks behavioral context like permissions or error handling, which would be beneficial despite the output schema existing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It provides clear semantic explanations for all 6 parameters, including defaults (e.g., 'default: 100'), null handling ('if None, gets all containers'), and format examples (e.g., 'e.g., "1h", "30m"'). This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieve container logs') and resource ('from a pod'), distinguishing it from sibling tools like get_pod_diagnostics or detect_pod_restarts_anomalies which focus on different aspects of pod monitoring. It directly communicates the core function without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for accessing pod logs but provides no explicit guidance on when to use this tool versus alternatives like get_pod_diagnostics or inspect_gpu_pod. It mentions container separation in returns, which hints at multi-container scenarios, but lacks clear when/when-not instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vllm_metricsA
Monitor vLLM inference server performance metrics by directly querying pods.

Why:
- Performance monitoring: Track request latency and throughput
- Capacity planning: Monitor queue size and running requests
- Resource optimization: Track GPU cache usage
- Proactive alerting: Detect performance degradation

Args:
    namespace: Optional namespace filter
    pod_filter: Optional pod name filter (supports partial match)
    
Returns:
    Markdown report of vLLM metrics
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNo
pod_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by explaining what the tool does (monitor vLLM metrics), how it works (by directly querying pods), and what it returns (markdown report). It could improve by mentioning potential limitations like permissions needed or query timeouts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (purpose, why, args, returns), front-loaded with the core purpose, and every sentence adds value. No redundant information or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 optional parameters), no annotations, but with output schema (returns markdown report), the description provides complete context: purpose, use cases, parameter semantics, and return format, making it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully documents both parameters (namespace and pod_filter), explaining they're optional filters and that pod_filter supports partial matching, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('monitor') and resource ('vLLM inference server performance metrics'), and distinguishes it from siblings by specifying it queries pods directly for vLLM-specific metrics, unlike general GPU or cluster monitoring tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Why' section explicitly lists four use cases (performance monitoring, capacity planning, resource optimization, proactive alerting), providing clear guidance on when to use this tool versus alternatives like get_gpu_utilization or get_pod_diagnostics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_gpu_podA
Run 'nvidia-smi' inside a GPU-enabled pod to view real-time process and memory details.

Why:
- Debug OOM: See exact memory usage per process.
- Verify allocation: Confirm the pod actually sees the GPU.
- Check processes: Identify zombie processes or unexpected workloads.

Args:
    namespace: Pod namespace
    pod_name: Pod name
    
Returns:
    Output of nvidia-smi from inside the pod.
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
pod_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and discloses key behaviors: it runs a command inside a pod (implies execution capability), returns real-time output, and is specifically for GPU-enabled pods. It doesn't mention permissions, rate limits, or side effects, but covers core operational context adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (description, Why, Args, Returns), each sentence adds value. No redundant information; front-loaded with the core action, followed by rationale and details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters, no annotations, and an output schema (implied by 'Returns'), the description is complete: it explains purpose, usage, parameters, and output. For a diagnostic tool with straightforward inputs/output, no critical gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists both parameters ('namespace', 'pod_name') under 'Args' with brief explanations, adding meaning beyond the bare schema. However, it doesn't specify format constraints or examples (e.g., namespace naming rules).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Run nvidia-smi inside a GPU-enabled pod') and resource ('GPU-enabled pod'), with distinct purpose from siblings like 'get_gpu_utilization' (monitoring) or 'get_pod_diagnostics' (general diagnostics). It explicitly mentions viewing 'real-time process and memory details'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Why' section provides explicit guidance on when to use this tool: for debugging OOM, verifying GPU allocation, and checking processes. It implicitly distinguishes from siblings by focusing on real-time GPU process inspection rather than health checks, logs, or utilization metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_node_storage_forensicsA
SLOW operation (10s+). Performs a deep forensic analysis of a node's storage.

Use this tool ONLY when:
1. A specific node is known to be problematic (full disk).
2. 'get_storage_usage' does not reveal the root cause.

This tool runs a debug pod on the node to calculate:
- Real disk usage (df -h).
- Reclaimable space from UNUSED images.
- Growth of container writable layers (indicating log/file issues inside containers).
ParametersJSON Schema
NameRequiredDescriptionDefault
node_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: 'SLOW operation (10s+)' (performance), 'runs a debug pod on the node' (methodology), and the specific analyses performed (e.g., 'Real disk usage', 'Reclaimable space'). However, it lacks details on permissions, error handling, or output format, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured and front-loaded with the purpose and key constraint ('SLOW operation'). Each sentence adds value: usage guidelines, methodology, and specific analyses. No wasted words, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (deep forensic analysis), no annotations, and an output schema exists (which covers return values), the description is mostly complete. It covers purpose, usage, behavior, and methodology, but could benefit from more on prerequisites or limitations to be fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by implying the 'node_name' parameter should be for a 'problematic' node, but doesn't specify format or constraints. Since there's only one parameter, the baseline is 4, and the description provides some context without full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('performs a deep forensic analysis') and resource ('of a node's storage'), distinguishing it from siblings like 'get_storage_usage' by emphasizing depth and forensic nature. It avoids tautology by elaborating beyond the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when to use ('ONLY when: 1. A specific node is problematic, 2. 'get_storage_usage' fails') and when not to use (implied by the 'ONLY' condition), with a named alternative ('get_storage_usage'). This gives clear context and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.0
    • First observedcheck_gpu_health
    • First observedcheck_persistent_volume_capacity
    • First observeddetect_pod_restarts_anomalies
    • First observedget_cluster_resource_balance
    • First observedget_cluster_storage_report
    • First observedget_gpu_utilization
    • First observedget_pod_diagnostics
    • First observedget_pod_logs
    • First observedget_vllm_metrics
    • First observedinspect_gpu_pod
    • First observedinspect_node_storage_forensics

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no significant overlap. For example, check_gpu_health focuses on hardware errors, get_gpu_utilization monitors usage metrics, and inspect_gpu_pod runs diagnostics inside pods. The descriptions clearly differentiate between cluster-wide monitoring, pod-level diagnostics, storage analysis, and GPU-specific operations.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout (e.g., check_gpu_health, get_cluster_resource_balance, inspect_node_storage_forensics). All tools use snake_case, and verbs like 'check', 'get', 'detect', and 'inspect' are appropriately matched to their actions. The only minor deviation is 'get_vllm_metrics' which uses an acronym, but it still fits the pattern.

Tool Count5/5

With 11 tools, the count is well-scoped for an OpenShift monitoring and diagnostics server. Each tool serves a specific, non-redundant function in areas like GPU health, storage analysis, pod diagnostics, and cluster resource monitoring. The set covers essential operations without being overwhelming or too sparse.

Completeness4/5

The toolset provides comprehensive coverage for monitoring and diagnostics in an OpenShift cluster, including GPU health, storage, pod stability, and resource balance. Minor gaps exist, such as no tools for node-level CPU/memory diagnostics beyond resource balance or for managing resources (e.g., scaling pods), but agents can work around these with the available tools for core troubleshooting workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables comprehensive benchmarking and performance monitoring of OpenShift clusters using OVN-Kubernetes networking through automated data collection, AI-powered analysis, and report generation. Provides intelligent insights into cluster performance, bottleneck detection, and optimization recommendations.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interactive Kubernetes cluster monitoring and troubleshooting through natural language queries. Users can diagnose pod issues, check service status, and investigate cluster problems using conversational AI.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Monitors and analyzes Precision Time Protocol (PTP) systems in OpenShift clusters, enabling configuration analysis, real-time log monitoring, and health checks.
    MIT

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/junzzhu/openshift-mcp-server'

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