Tema
Conectar un cliente
Cómo añadir ur a tu cliente MCP, paso a paso, y qué vas a ver según quién seas. Es lo mismo para todos los clientes: transporte HTTP (Streamable HTTP), la URL de tu instancia más /mcp, y la autenticación OAuth en el navegador. No hay client id ni secreto que copiar. Para un cliente que no puede hacer OAuth (un servidor, n8n, un script), hay una segunda vía: con un access token.
Antes de empezar
- El servidor tiene que estar activado: un administrador lo enciende en Configuración → Ajustes → Sistema → MCP (ver Activarlo). Mientras no lo esté, la URL responde
404y el cliente dirá que no encuentra nada. - Necesitas un usuario del panel: la autorización te pedirá entrar con tu correo y contraseña de
ur(si ya tienes la sesión abierta en ese navegador, no). - Si no eres administrador, solo podrás conceder al cliente los agentes, inferencias y RAGs de tus grupos. Si al autorizar no te ofrece nada, es que no estás en ningún grupo: pídele acceso a un administrador.
La URL es siempre:
https://ur.tuempresa.com/mcp(cambia el dominio por el de tu instancia; es el mismo del panel).
Por cliente
Los menús cambian de una versión a otra; lo que no cambia es lo de arriba: HTTP, esa URL y OAuth. En el panel, Configuración → MCP tiene estos mismos pasos con la URL de tu instancia ya puesta y un botón de copiar en cada uno.
Claude Code
En la terminal, elige dónde lo quieres:
bash# Solo tú, en este proyecto (lánzalo desde su carpeta) claude mcp add --transport http ur https://ur.tuempresa.com/mcp # Solo tú, en todos tus proyectos claude mcp add --transport http --scope user ur https://ur.tuempresa.com/mcp # Todo el equipo del proyecto: lo guarda en .mcp.json, que se sube al repositorio claude mcp add --transport http --scope project ur https://ur.tuempresa.com/mcpEl
.mcp.jsonque deja el último (o que puedes escribir a mano en la raíz del proyecto):json{ "mcpServers": { "ur": { "type": "http", "url": "https://ur.tuempresa.com/mcp" } } }Claude Code pide a cada miembro del equipo aprobarlo la primera vez, y cada uno entra con su propio usuario de
ur.Abre Claude Code, escribe
/mcp, elige «ur» y pulsa Authenticate: se abre el navegador con el consentimiento.Comprueba que está conectado con
claude mcp list.
Claude (web y escritorio)
- En claude.ai: Personalizar → Conectores → «+» → Añadir conector personalizado.
- Nombre
ury la URLhttps://ur.tuempresa.com/mcp. - Pulsa Conectar y entra en el navegador. Ya está también en Claude Desktop y en el móvil: los conectores van con tu cuenta de Claude. En un chat, se activa desde «+» → Conectores.
En Team y Enterprise lo añade primero un propietario (Configuración de la organización → Conectores); después cada uno pulsa Conectar. Claude se conecta desde su nube: tu instancia tiene que ser accesible desde internet.
ChatGPT
- En los ajustes de ChatGPT, añade un servidor MCP personalizado —con el modo desarrollador o como app, según tu plan— con la URL
https://ur.tuempresa.com/mcpy autenticación OAuth. - Al guardarlo se abre el consentimiento. Después, en un chat, actívalo o menciónalo.
OpenAI cambia a menudo dónde está la opción y qué planes la tienen (con escritura, Business, Enterprise y Edu). Como Claude, ChatGPT se conecta desde su nube.
Cursor
En
.cursor/mcp.json(del proyecto) o~/.cursor/mcp.json(para todos):json{ "mcpServers": { "ur": { "url": "https://ur.tuempresa.com/mcp" } } }En la lista de MCPs de Cursor aparece como pendiente de autenticar: pulsa Connect.
VS Code (GitHub Copilot)
En
.vscode/mcp.json(o con el comando MCP: Add Server):json{ "servers": { "ur": { "type": "http", "url": "https://ur.tuempresa.com/mcp" } } }Pulsa Start sobre el servidor (en el propio fichero o en MCP: List Servers) y autoriza en el navegador.
Codex
En la terminal (vale para la CLI, la extensión del IDE y la app de escritorio, que comparten configuración):
bashcodex mcp add ur --url https://ur.tuempresa.com/mcpSi detecta el OAuth, abre el navegador.
Si no lo hizo, o la sesión caduca:
codex mcp login ur.
Gemini CLI
En la terminal (sin
--scope user, queda solo en el proyecto actual):bashgemini mcp add --transport http --scope user ur https://ur.tuempresa.com/mcpDentro de Gemini CLI,
/mcp auth urpara entrar: no lo pide solo.
Otro cliente
Cualquiera que hable Streamable HTTP con OAuth 2.1 (PKCE y registro dinámico de clientes) vale: dale la URL y deja que descubra el resto por /.well-known/oauth-protected-resource. La configuración más común:
json
{
"mcpServers": {
"ur": { "type": "http", "url": "https://ur.tuempresa.com/mcp" }
}
}Si solo admite stdio, usa un puente HTTP→stdio: npx mcp-remote https://ur.tuempresa.com/mcp. El consentimiento es el mismo.
Con un access token (sin OAuth)
El OAuth necesita un navegador y una persona que autorice. Para lo que corre solo —Claude Code en un servidor o en CI, n8n, mcp-remote en una máquina sin pantalla, un script con el SDK de MCP— el cliente puede mandar un access token en la cabecera, como en la API HTTP:
- En Configuración → Tokens de acceso, crea un token (o edita uno) con los agentes, inferencias y RAGs que necesita, y marca Usable desde el MCP.
- Configura el cliente con la URL y la cabecera
Authorization: Bearer ur-…. En el panel, Cómo usarlo tiene una pestaña MCP con esto ya escrito para tu instancia.
bash
export UR_TOKEN='ur-…'
# Claude Code
claude mcp add --transport http ur https://ur.tuempresa.com/mcp \
--header "Authorization: Bearer $UR_TOKEN"json
{
"mcpServers": {
"ur": {
"type": "http",
"url": "https://ur.tuempresa.com/mcp",
"headers": { "Authorization": "Bearer ${UR_TOKEN}" }
}
}
}Lo que ve el cliente con un token es lo mismo que ese token puede por la API HTTP, recortado a lo que ve su dueño: buscar en sus RAGs (list_rags, search_rag, list_rag_files), ejecutar sus inferencias (list_inferences, run_inference) y listar sus agentes con sus tools (list_agents). Nada que escriba ni administre —aunque su dueño sea administrador—, y tampoco el prompt de los agentes ni sus conversaciones.
Un secreto en un fichero de configuración
- Por variable de entorno, no pegado en un
.mcp.jsonque acabe en un repositorio: quien lo lea entra con ese token hasta que lo renueves. - No desde un navegador: una petición con cabecera
Originy un access token se rechaza con403, por la misma razón que la API no tiene CORS. - Caduca cuando elegiste al crearlo o renovarlo; entonces el cliente recibe
401conerror_description="The access token expired"y hay que renovarlo y poner el nuevo en el cliente. - Estas conexiones no salen en Configuración → MCP (esa lista es de las OAuth): se gestionan en Tokens de acceso. Quitar la casilla las corta en la siguiente petición.
| Qué ves | Qué pasa |
|---|---|
401 con This access token is not enabled for MCP | Al token le falta Usable desde el MCP |
401 con The access token expired | Caducó: renuévalo |
401 con invalid_token sin más | El token no existe (renovado o borrado) |
403 | La petición lleva Origin: el cliente corre en un navegador |
429 con Retry-After | Demasiados tokens inválidos desde esa IP (el contador es el mismo que el de la API): espera esos segundos |
Una tool responde 403 | El token no tiene ese recurso: añádeselo en Tokens de acceso |
El consentimiento: qué conceder
Tras entrar en ur, la pantalla te dice con qué cuenta estás autorizando y te pide qué le concedes al cliente, por categoría —agentes, inferencias y RAGs—, todos o unos cuantos. Lo que no concedas no existe para ese cliente: ni aparece en su catálogo de tools ni puede llegar a ello.
| Quién eres | Qué puedes conceder | Qué podrá hacer el cliente |
|---|---|---|
| Usuario | Lo de tus grupos | Ver esos agentes y leer sus conversaciones, ejecutar esas inferencias (run_inference), buscar en esos RAGs (search_rag) y listarlos. Con Permitir cambios, además, cambiar lo que tú cambias en el panel: el prompt, los mensajes y las áreas de los agentes que administras |
| Administrador | Todo | Lo anterior y, con Permitir cambios, cambiar los agentes concedidos (prompt, mensajes, áreas y sus tools) y administrar la instancia: ver file sources y gestionar la seguridad |
Un cliente para usar ur (ver agentes y sus conversaciones, lanzar inferencias, buscar) no necesita Permitir cambios: déjalo sin marcar y el modelo no tendrá a mano nada que escriba. Para cambiar lo concedido, revoca la conexión y vuelve a conectar.
Comprobar que funciona
Pídele al modelo algo que obligue a usar una tool: «¿qué agentes tengo en ur?» o «busca en el RAG docs qué dice sobre vacaciones». Si el cliente enseña el catálogo de tools, lo que debe aparecer es lo de las categorías que concediste; con un grant de solo RAGs, por ejemplo, no hay list_agents.
En ur, la conexión sale en Configuración → MCP, debajo de las instrucciones, con lo que tiene concedido («Puede cambiar» si permitiste cambios). Ahí se revoca.
Si algo falla
| Qué ves | Qué pasa |
|---|---|
El cliente dice que la URL no responde o da 404 | El servidor MCP está apagado. Lo enciende un administrador en Ajustes |
| El consentimiento no te ofrece ningún recurso | No estás en ningún grupo (o tus grupos no conceden nada). Pídele acceso a un administrador |
| El cliente conecta y luego rechaza el servidor sin más | Casi siempre la URL que ur anuncia no es tu URL pública: ver Si el cliente no conecta detrás de un proxy |
Una tool responde 403 (o 404 en un agente) | Esa conexión no tiene concedido ese recurso. Revoca y vuelve a conectar concediéndolo |
Una tool que escribe responde 403 con manage_required | Ese recurso solo lo ves (modo light): lo consultas y lo pruebas, pero cambiarlo es de quien lo administra. Pide que tu grupo te lo dé como admin |
| Pide volver a autorizar al cabo de un mes sin usarlo | El refresh token dura 30 días y se renueva solo mientras el cliente se use. Es normal |
Siguiente
Qué hace cada tool y con qué argumentos → Catálogo de tools.