Troubleshoot isolated MCP gateway deployments
You can troubleshoot common issues with isolated MCP gateway deployments, including MCPGatewayExtension status errors, MCPServerRegistration issues, and empty configuration secrets.
Troubleshoot an MCPGatewayExtension ReferenceGrantRequired status
If an MCPGatewayExtension custom resource (CR) targets a Gateway object in a different namespace and no ReferenceGrant CR exists, the extension shows a ReferenceGrantRequired condition.
-
You installed OpenShift CLI (
oc). -
You deployed isolated MCP gateway instances.
-
Check the status of the
MCPGatewayExtensionCR by running the following command:$ oc get mcpgatewayextension -n <namespace> -o yamlReplace
<namespace>with the namespace where theMCPGatewayExtensionCR is applied. -
Look for the following condition in the output:
conditions: - type: Ready status: "False" reason: ReferenceGrantRequired message: "invalid: ReferenceGrant required in %s to allow cross-namespace reference from %s" -
Create a
ReferenceGrantCR in theGatewayobject namespace:apiVersion: gateway.networking.k8s.io/v1beta1 kind: ReferenceGrant metadata: name: <team_a_refgrant> namespace: <gateway_namespace> spec: from: - group: mcp.kuadrant.io kind: MCPGatewayExtension namespace: <team_namespace> to: - group: gateway.networking.k8s.io kind: Gateway name: <team_a_gateway>-
Replace the
metadata.namevalue with the name of your team. -
Replace the
metadata.namespacevalue with the namespace where theGatewayobject is applied. -
Replace the
spec.from.namespacevalue with the namespace where theMCPGatewayExtensionCR is applied. -
Replace the
spec.to.namevalue with the name of the teamGatewayobject.
-
-
Verify the
MCPGatewayExtensionCR is ready by running the following command:$ oc wait --for=condition=Ready mcpgatewayextension/<extension_name> -n <namespace> --timeout=60s
Troubleshooting an MCPGatewayExtension InvalidMCPGatewayExtension status
If an MCPGatewayExtension custom resource (CR) shows an InvalidMCPGatewayExtension status, the target Gateway object does not exist or there is a conflict with another extension.
-
You installed OpenShift CLI (
oc). -
You deployed isolated MCP gateway instances.
-
Verify that the target
Gatewayobject exists by running the following command:$ oc get gateway <gateway_name> -n <gateway_namespace>-
Replace
<gateway_name>with the name of theGatewayobject. -
Replace
<gateway_namespace>with the namespace where theGatewayobject is applied.
-
-
Check for conflicting
MCPGatewayExtensionCRs that target the sameGatewayobject by running the following command:$ oc get mcpgatewayextension -AOnly one
MCPGatewayExtensionCR can target a givenGatewayobject. If multiple extensions target the sameGatewayobject, the controller marks newer ones as conflicted. The oldest extension by creation timestamp takes precedence. -
If a conflict exists, update the newer
MCPGatewayExtensionCR to target a differentGatewayobject, or delete the conflicting extension.
Troubleshooting an MCPServerRegistration NotReady status
If an MCPServerRegistration custom resource (CR) shows a NotReady status, the registration cannot find a valid MCPGatewayExtension CR for the Gateway object that its HTTPRoute CR is attached to.
MCPServerRegistration CRs are processed only when a valid MCPGatewayExtension CR exists for the Gateway object that their HTTPRoute CR is attached to.
-
You installed OpenShift CLI (
oc). -
You deployed isolated MCP gateway instances.
-
Check the status of the
MCPServerRegistrationCR by running the following command:$ oc get mcpserverregistration -n <namespace> -o yamlReplace
<namespace>with the namespace where theMCPServerRegistrationCR is applied. -
Verify the following conditions:
-
The
HTTPRouteCR exists and references the correctGatewayobject, and its status is accepted. -
An
MCPGatewayExtensionCR exists that targets the sameGatewayobject. -
The
MCPGatewayExtensionCR is inReadystate by running the following command:$ oc get mcpgatewayextension -n <namespace>
-
Troubleshooting an empty configuration secret
If the configuration Secret object exists but contains no MCP server entries, the MCPServerRegistration custom resources (CRs) might not be in a Ready state.
-
You installed OpenShift CLI (
oc). -
You deployed isolated MCP gateway instances.
-
Check the contents of the configuration
Secretobject by running the following command:$ oc get secret mcp-gateway-config -n <namespace> -o jsonpath='{.data.config\.yaml}' | base64 -dReplace
<namespace>with the namespace where theMCPGatewayExtensionCR is applied. -
Verify that
MCPServerRegistrationCRs exist and are inReadystate by running the following command:$ oc get mcpserverregistration -n <namespace>If no
MCPServerRegistrationCRs exist or none are inReadystate, register MCP servers for this gateway instance.