MCP server for OpenShift Assisted Installer Service
The server demonstrates solid definition quality with consistent naming conventions, comprehensive descriptions, and detailed parameter documentation across 18 tools. All tools use verb-noun naming (cluster_info, list_clusters, create_cluster, etc.). Descriptions are consistently well-written (average ~180 chars) and provide context on when to use each tool. Parameter schemas are present and typed for all tools examined. However, there are gaps in output schema documentation, while tool behaviors are described, the actual returned data structures are not formally documented in JSON Schema. Error handling guidance is implicit but not explicit in tool definitions. The server lacks tool annotations (readOnlyHint, destructiveHint, idempotentHint) which would improve LLM tool selection logic. Risk labels are present (READ_ONLY, WRITE) but not formalized in the MCP protocol.
Add an operator bundle to be automatically installed with the cluster. Configures the specified operator bundle to be installed during cluster deployment. The operator will be installed automatically after the cluster installation completes. Bundle must be from the list returned by list_operator_bundles(). Add operator bundles before starting cluster installation.
Add, replace, or delete static network configuration for a host. Manages static network configurations for cluster hosts. To add a new host config, use index=None and provide YAML. To update an existing host config, provide the index and new YAML. To remove a host config, provide the index and set YAML=None.
Get presigned download URL for cluster credentials after installation completes. Retrieves a presigned URL for downloading cluster credential files such as kubeconfig, kubeadmin password, or kubeconfig without ingress configuration. For a successfully installed cluster the kubeconfig file should always be used over the kubeconfig-noingress file. The URL is time-limited and provides secure access to sensitive cluster files. Whenever a URL is returned provide the user with information on the expiration of that URL if possible.
Get chronological events for cluster installation progress and diagnostics. Retrieves timestamped events related to cluster installation, configuration changes, and status updates. Use this to track installation progress, understand what actions have been taken, and diagnose issues. Events include validation results, configuration changes, and error messages.
Output schemas not formally documented. Tools return string responses but callers cannot introspect the structure of returned data (field names, types, nesting). For example, cluster_info returns 'to_str()' but the schema of that string is not defined. This forces LLMs to parse unstructured text and hampers chaining between tools.
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint declarations on any tools. READ_ONLY and WRITE labels are present in metadata but not formalized via MCP tool annotations. This prevents LLMs from making informed decisions about tool selection, retry logic, and side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 72 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 29 | - | v1 |
Get comprehensive information about a specific cluster. Retrieves detailed cluster information including configuration, status, network settings, installation progress, and host information. Use this to check cluster state, verify configuration, or monitor installation progress.
Get ISO download URL(s) for cluster boot images. Retrieves time-limited download URLs for all infrastructure environment ISOs associated with the cluster. These bootable ISOs are used to boot hosts for automatic discovery and installation. Download the ISO and boot your hosts from it (USB, virtual media) to add them to the cluster. URLs are time-limited for security and will expire after a period.
Get the logs URL for a cluster. Returns presigned URL for downloading cluster logs.
Create a new OpenShift cluster. Creates a cluster definition and infrastructure environment for either high-availability (multi-node) or single-node (SNO) deployment. For single-node clusters, platform must be 'none'. For multi-node clusters, platform defaults to 'baremetal' but can be vsphere, oci, or nutanix. This creates the cluster configuration only; use install_cluster to start the actual installation. Optional parameters: ssh_public_key, cpu_architecture, platform.
Generate NMState YAML from structured network parameters. Creates NMState YAML configuration from structured parameters rather than writing YAML manually. Always use this to generate initial YAML from user requirements, then validate and optionally tweak the result. Do not generate nmstate yaml from scratch without calling this tool.
Get events specific to a particular host for installation tracking and diagnostics. Retrieves host-specific events including hardware validation results, installation steps, role assignment, and error messages. Use this to diagnose host-specific issues like hardware compatibility problems, network configuration issues, or installation failures on a particular node.
List all clusters for the current user. Retrieves a summary of all OpenShift clusters associated with your account. This provides basic information about each cluster (name, ID, version, status) without detailed configuration. Use cluster_info() to get comprehensive details about a specific cluster.
List available operator bundles that can be added to clusters. Retrieves operator bundles that extend OpenShift cluster functionality with additional capabilities like virtualization, AI/ML, monitoring, and storage. These bundles are automatically installed during cluster deployment if added before installation.
List all static network configurations for cluster hosts. Shows all static network configurations applied to the cluster's infrastructure environment. Each configuration in the array corresponds to one host, in the order they were added. Use the array index when updating or deleting specific host configurations.
List all available OpenShift versions for installation as a formatted markdown table. Retrieves the latest OpenShift versions that can be installed using the Red Hat Assisted Installer service and returns them in a well-formatted markdown table. The output is a ready-to-display markdown table with the following columns: - **OpenShift Version**: The version identifier (e.g., "4.18.2", "4.21.0-ec.2-multi") - **Support Level**: Mapped support level indicating stability: * "Full Support": Production-ready, Generally Available (GA) releases * "Release Candidate": Beta/pre-release versions, NOT for production use * "Maintenance Support": In maintenance mode, limited updates * "End of Life": No longer supported * "Extended Support": Extended support lifecycle - **Supported CPU Architectures**: Compatible CPU architectures (e.g., x86_64, arm64, s390x, ppc64le)
Configure the infrastructure platform for a cluster.
Configure virtual IP addresses (VIPs) for cluster API and ingress traffic. Sets the API and ingress VIPs required for HA clusters on baremetal, vsphere, and nutanix platforms. VIPs are NOT needed for single-node clusters or clusters on 'none' or 'oci' platforms. The IP addresses must be within the cluster's machine network subnet, not assigned to any physical host, and reachable from all cluster nodes.
Assign a specific role to a discovered host in the cluster. Sets whether a host will be a control plane (master) node or worker node. Use 'master' for nodes that will run the Kubernetes control plane (API server, etcd, scheduler). Use 'worker' for nodes that will only run application workloads. Use 'auto-assign' to let the installer choose based on cluster requirements. HA clusters require at least 3 master nodes.
Validate an NMState YAML document before applying to hosts. Validates the YAML syntax and structure to ensure it's correct before submitting to the cluster. Always validate YAML after generating or manually editing before applying it to hosts. Invalid YAML will cause host configuration failures.
Insufficient error handling guidance. While descriptions exist, there is no explicit documentation of what errors each tool can raise, whether they are retryable, or what recovery steps the LLM should take. Example: create_cluster might fail if base_domain is invalid, but this is not documented.
Sparse descriptions for two tools. 'set_cluster_platform' and 'cluster_logs_download_url' have descriptions under 50 characters, failing to explain when/why to use them or what happens. set_cluster_platform description reads 'Configure the infrastructure platform for a cluster.' but does not specify which platforms are valid or what parameters are required beyond cluster_id.
Parameter type unions not formalized. Some parameters accept multiple types (e.g., 'index' in alter_static_network_config_nmstate_for_host is 'integer|null', and 'new_nmstate_yaml' is 'string|null'). While descriptions clarify intent, JSON Schema should use oneOf or explicit nullable types for machine parsing.
Limited pagination/result limiting guidance. Tools like list_clusters and list_versions do not document caps on result size or pagination support. If a user has 1000 clusters, list_clusters will attempt to return all of them, potentially exhausting token budgets.