Skip to content

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 404 y 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 ​

  1. 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/mcp

    El .mcp.json que 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.

  2. Abre Claude Code, escribe /mcp, elige «ur» y pulsa Authenticate: se abre el navegador con el consentimiento.

  3. Comprueba que está conectado con claude mcp list.

Claude (web y escritorio) ​

  1. En claude.ai: Personalizar → Conectores → «+» → Añadir conector personalizado.
  2. Nombre ur y la URL https://ur.tuempresa.com/mcp.
  3. 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 ​

  1. 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/mcp y autenticación OAuth.
  2. 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 ​

  1. En .cursor/mcp.json (del proyecto) o ~/.cursor/mcp.json (para todos):

    json
    {
      "mcpServers": {
        "ur": { "url": "https://ur.tuempresa.com/mcp" }
      }
    }
  2. En la lista de MCPs de Cursor aparece como pendiente de autenticar: pulsa Connect.

VS Code (GitHub Copilot) ​

  1. En .vscode/mcp.json (o con el comando MCP: Add Server):

    json
    {
      "servers": {
        "ur": { "type": "http", "url": "https://ur.tuempresa.com/mcp" }
      }
    }
  2. Pulsa Start sobre el servidor (en el propio fichero o en MCP: List Servers) y autoriza en el navegador.

Codex ​

  1. En la terminal (vale para la CLI, la extensión del IDE y la app de escritorio, que comparten configuración):

    bash
    codex mcp add ur --url https://ur.tuempresa.com/mcp

    Si detecta el OAuth, abre el navegador.

  2. Si no lo hizo, o la sesión caduca: codex mcp login ur.

Gemini CLI ​

  1. En la terminal (sin --scope user, queda solo en el proyecto actual):

    bash
    gemini mcp add --transport http --scope user ur https://ur.tuempresa.com/mcp
  2. Dentro de Gemini CLI, /mcp auth ur para 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:

  1. 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.
  2. 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.json que acabe en un repositorio: quien lo lea entra con ese token hasta que lo renueves.
  • No desde un navegador: una petición con cabecera Origin y un access token se rechaza con 403, por la misma razón que la API no tiene CORS.
  • Caduca cuando elegiste al crearlo o renovarlo; entonces el cliente recibe 401 con error_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é vesQué pasa
401 con This access token is not enabled for MCPAl token le falta Usable desde el MCP
401 con The access token expiredCaducó: renuévalo
401 con invalid_token sin másEl token no existe (renovado o borrado)
403La petición lleva Origin: el cliente corre en un navegador
429 con Retry-AfterDemasiados tokens inválidos desde esa IP (el contador es el mismo que el de la API): espera esos segundos
Una tool responde 403El 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 eresQué puedes concederQué podrá hacer el cliente
UsuarioLo de tus gruposVer 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
AdministradorTodoLo 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é vesQué pasa
El cliente dice que la URL no responde o da 404El servidor MCP está apagado. Lo enciende un administrador en Ajustes
El consentimiento no te ofrece ningún recursoNo 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ásCasi 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_requiredEse 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 usarloEl 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.