For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
Remote MCP gateway (virtual runtime)
Install Solo Enterprise for agentgateway and connect it as a virtual runtime so that the registry can expose remote MCP servers through a central proxy.
Install Solo Enterprise for agentgateway and configure it as a virtual runtime in Solo Enterprise for agentregistry. The virtual runtime uses the Kubernetes Gateway API route delegation model: a gateway admin creates the parent Gateway and HTTPRoute once and grants delegation to the registry namespace. After that, registry users can add MCP servers and expose them on the gateway without any further input from the gateway admin.
Before you begin
Set up an OIDC provider. This guide assumes that you installed Keycloak. Make sure to follow the General setup tab to install Keycloak with the required realm settings, clients, and secrets.
Install Solo Enterprise for agentregistry and the
arctlCLI.Save your Solo Enterprise for agentgateway license key in an environment variable. To obtain the key, contact an account representative.
export AGENTGATEWAY_LICENSE_KEY=<agentgateway-license-key>
Step 1: Install Solo Enterprise for agentgateway
Install Solo Enterprise for agentgateway and the Kubernetes Gateway API CRDs in your cluster.
Set the Solo Enterprise for agentgateway version.
export AGENTGATEWAY_VERSION=v2026.9.0Install the standard Gateway API CRDs, which include the Gateway, HTTPRoute, and related resources.
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yamlInstall the Solo Enterprise for agentgateway CRDs.
helm upgrade -i enterprise-agentgateway-crds \ oci://us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts/enterprise-agentgateway-crds \ --create-namespace \ --namespace agentgateway-system \ --version "${AGENTGATEWAY_VERSION}"Install the Solo Enterprise for agentgateway controller and data plane.
helm upgrade -i enterprise-agentgateway \ oci://us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts/enterprise-agentgateway \ -n agentgateway-system \ --version "${AGENTGATEWAY_VERSION}" \ --set-string licensing.licenseKey="${AGENTGATEWAY_LICENSE_KEY}"Verify that the control plane pod is running.
kubectl get pods -n agentgateway-systemExample output:
NAME READY STATUS RESTARTS AGE enterprise-agentgateway-controller-7d9f8b6d4c-xvpzk 1/1 Running 0 45s
Step 2: Create the Gateway and parent HTTPRoute
Create the Gateway and parent HTTPRoute that the agentgateway proxy uses to accept MCP traffic. Both resources must carry the agentregistry.solo.io/runtime: mcp-gateway label so that the registry can discover them and populate the exposedAt URL on each Deployment.
Create the Gateway.
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: agentgateway-proxy namespace: agentgateway-system labels: agentregistry.solo.io/runtime: mcp-gateway spec: gatewayClassName: enterprise-agentgateway listeners: - protocol: HTTP port: 80 name: http allowedRoutes: namespaces: from: All EOFNote
This example uses an HTTP listener for simplicity. Production deployments typically add an HTTPS listener with a TLS certificate.
Create the parent HTTPRoute that delegates traffic on the
/registrypath prefix to every child HTTPRoute that the registry creates in theagentregistry-systemnamespace.kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: agentregistry-delegate namespace: agentgateway-system labels: agentregistry.solo.io/runtime: mcp-gateway spec: parentRefs: - name: agentgateway-proxy rules: - matches: - path: type: PathPrefix value: /registry backendRefs: - group: gateway.networking.k8s.io kind: HTTPRoute name: "*" namespace: agentregistry-system EOFVerify that the gateway proxy pod is running.
kubectl get pods -n agentgateway-system | grep agentgateway-proxyExample output:
agentgateway-proxy-64c4bf7c4c-gzfhj 1/1 Running 0 93s
Step 3: Register the virtual runtime
Create a Virtual runtime in Solo Enterprise for agentregistry. The name field must match the agentregistry.solo.io/runtime label value that you set on the Gateway and parent HTTPRoute in the previous step.
Create the runtime.
arctl apply -f - <<EOF apiVersion: ar.dev/v1alpha1 kind: Runtime metadata: name: mcp-gateway spec: type: Virtual EOFExample output:
✓ Runtime/mcp-gateway createdVerify that the runtime appears in the catalog.
arctl get runtimesExample output:
NAME TYPE kubernetes-default Kubernetes local Local mcp-gateway Virtual virtual-default Virtual
Next steps
With the virtual runtime in place, register MCP servers in the catalog and expose them through the gateway. The following quickstart walks you through the full setup end-to-end, including JWT authentication, group-level access control, per-user tool filtering, and rate limiting.