Gateway
Un hub es la dirección que pegas en Claude, ChatGPT, Cursor o tu propio agente. Autentica a los clientes con OAuth 2.1, aplica una política por cliente y reenvía cada llamada al servidor correcto, sin que el tráfico salga nunca de la región del hub.
1
URL por hub, sin importar cuántos servidores haya detrás
OAuth 2.1
PKCE, registro dinámico, descubrimiento RFC 8414 / 9728
0
saltos de red para validar un token: el JWT se verifica en la región
~1 min
para que un cambio de política llegue al hub, sin token nuevo
O los mismos tres clics en el dashboard.
$ runscale hubs create backoffice --region mxFijado a una región al crearse. Solo pueden unirse servidores de esa región: la promesa de residencia sobrevive al gateway.
$ runscale hubs add backoffice crmLos servidores internos reciben un token de plataforma automáticamente, cifrado con la llave de tu organización. Los endpoints MCP externos entran con su propio bearer.
$ runscale connect backofficeImprime la URL. Pégala como servidor MCP remoto; el cliente se registra solo, te lleva a la pantalla de consentimiento y recibe sus tokens.
❯ runscale hubs create backoffice --region mxhub backoffice created in aws-mx-central-1endpoint: https://mx.gw.runscale.dev/8a92fe32/backoffice/mcp❯ runscale hubs add backoffice crmbackoffice ← crm (crm)❯ runscale hubs add backoffice docsbackoffice ← docs (docs)❯ runscale connect backofficehttps://mx.gw.runscale.dev/8a92fe32/backoffice/mcpadd this URL as a remote MCP server / custom connector in your client.it will register itself, send you to the Runscale consent screen, and get a token.
Acceso
Las personas entran por OAuth: su cliente se registra solo, un miembro de tu organización lo aprueba en la pantalla de consentimiento y recibe un token firmado. Scripts y CI usan un token estático. Ambos resuelven a un id de cliente, y la política se aplica por cliente.
allow = ["crm__*", "docs__search"]deny = ["crm__delete_*"]rate_limit_per_minute = 60daily_quota = 5000max_argument_bytes = 65536Política
Globs sobre los nombres publicados de las tools, denegar gana sobre permitir, más un rate limit y una cuota diaria. Un hub arranca denegando todo; tools/list solo muestra lo que un cliente puede usar de verdad, así el modelo no gasta contexto en el resto.
{ "ts": "2026-09-06T21:41:07.113Z", "hub": "backoffice", "client_id": "cli_IIdkt38wlxgLX2YJz6qDWlXu", "sub": "usr_…", "tool": "crm__search", "server": "crm", "status": "ok", "duration_ms": 184, "argument_bytes": 61, "result_bytes": 2310}Residencia
El servidor de autorización es uno; los hubs son por región. Los tokens llevan el hub como audiencia y se verifican localmente contra las llaves publicadas. Las trazas, quién llamó qué tool, cuánto tardó, cuánto pesó, se escriben en la región del hub. Los payloads van apagados por defecto.
El gateway implementa el flujo de autorización que la especificación del Model Context Protocol define para servidores remotos: OAuth 2.1 con PKCE, metadata de recurso protegido y de servidor de autorización, y registro dinámico de clientes. Es lo que hablan Claude.ai, ChatGPT, Claude Desktop y los editores de escritorio cuando agregas un servidor MCP remoto.
No. Los servidores conservan sus tokens de acceso. El hub se autentica contra un servidor con un token propio, etiquetado 'platform: gateway', visible y revocable como cualquier otro, así que no hay una segunda puerta a un servidor.
No. Cada token de acceso lleva la URL del hub como audiencia y solo vale ahí, incluso entre hubs de la misma organización.
Un miembro de tu organización con sesión en el dashboard. Los usuarios externos por invitación y la federación con tu proveedor de identidad vienen después.
Por defecto solo metadatos por llamada: cliente, tool, servidor, duración y tamaños. Puedes encender la traza de payloads por hub; esas trazas se quedan en la región del hub, con tope por registro.
Incluido en el acceso anticipado. Cuando se active el cobro, las llamadas al hub se miden como invocaciones de servidor.
México (Central) hoy. EE. UU. Este sigue, con el mismo motor.
Crea un hub, agrega un servidor, pega la URL en tu cliente.