Skip to content

MCP Server ​

ur expone su administración como un servidor MCP (Model Context Protocol): conectas un cliente compatible —Claude.ai, Claude Code, Cursor…— y el modelo puede leer y modificar la configuración de tu instancia hablando contigo en lenguaje natural, sin pasar por el panel.

Vive dentro del propio backend (Streamable HTTP, montado en /mcp): no hay nada extra que desplegar.

Activarlo ​

Viene desactivado de fábrica. Se enciende en Configuración → Ajustes → Sistema (la página Ajustes del Sistema): en la sección MCP, activa el interruptor Servidor MCP y pulsa Guardar en la barra de abajo. Hasta que no guardes, el MCP sigue apagado; si sales de la página antes, el panel te avisa de que hay cambios sin guardar.

Mientras esté apagado, /mcp y sus .well-known devuelven 404 — ni siquiera revelan que existen.

Conectarlo ​

La URL es el origen de tu instancia más /mcp:

https://ur.tuempresa.com/mcp

En Claude Code:

bash
claude mcp add --transport http ur https://ur.tuempresa.com/mcp

En Claude.ai, Cursor, VS Code, ChatGPT y el resto se añade como servidor MCP remoto (HTTP) pegando esa misma URL — las instrucciones de cada uno, y qué verás según tu rol, en Conectar un cliente.

El servidor actúa además como su propio authorization server OAuth 2.1 (PKCE + registro dinámico de clientes), que es lo que exigen los conectores remotos. El flujo, desde tu punto de vista:

  1. Pegas la URL en el cliente MCP.
  2. El cliente se registra solo y, en cuanto lanzas la autenticación desde él, te abre el navegador. Según el cliente eso pasa al añadirlo o la primera vez que lo uses; si aparece como pendiente de autenticar, lánzala desde el propio cliente.
  3. Si ya tenías sesión en ur, ves directamente la pantalla de consentimiento; si no, te pide login primero y vuelve a ella.
  4. Eliges qué le concedes —a qué agentes, inferencias y RAGs puede llegar (todos o unos cuantos), y con Permitir cambios, si además puede cambiar lo que tú cambias en el panel— y le das a Autorizar. El cliente queda conectado con eso, y solo con eso.

No hay que crear ni custodiar ningún client id ni secreto: el registro es dinámico y el cliente se autentica con PKCE.

Los tokens OAuth que emite el MCP duran 1 hora, y los de refresco 30 días, con rotación en cada uso. No tienen nada que ver con los access tokens de la API HTTP, que caducan cuando elegiste al crearlos o renovarlos (o nunca). Un cliente sin OAuth puede entrar con uno de esos access tokens si tiene marcado «Usable desde el MCP»: ver Con un access token.

La pantalla de consentimiento te dice con qué cuenta estás firmando y qué podrá hacer el cliente antes de que autorices.

Nivel de acceso

Un cliente MCP autorizado opera con lo que le concediste, dentro de lo que ve tu cuenta: un usuario que no es administrador solo puede conceder los agentes, inferencias y RAGs de sus grupos. Sin Permitir cambios solo consulta y usa; con él cambia lo que tú cambias en el panel (de los agentes que administras, su prompt, sus mensajes y sus áreas), y siendo administrador, además, administra la instancia (tools, fuentes, seguridad…). El catálogo que ve el cliente se recorta a eso: lo que no concediste no existe para él. Para cambiar el acceso de un cliente, revócalo y vuelve a conectar. Autoriza solo clientes en los que confíes y corta el acceso de los que dejes de usar, desde Configuración → MCP.

Si el cliente no conecta detrás de un proxy ​

Los clientes MCP comparan de forma exacta la URL que el servidor anuncia en su metadata, así que si esa URL no es tu origen público real, la conexión se rechaza sin más explicación. Comprobarlo es un curl:

bash
curl https://ur.tuempresa.com/.well-known/oauth-protected-resource
json
{
  "resource": "https://ur.tuempresa.com/mcp",
  "authorization_servers": ["https://ur.tuempresa.com"]
}

Si lo que ves ahí no es tu URL pública —otro nombre de host, sin el prefijo de ruta, o http://—, fija PUBLIC_BASE_URL en el backend con el origen público real: gana sobre todo lo que se pueda deducir de la petición. Hace falta cuando el nombre público no coincide con la cabecera Host, cuando sirves ur bajo un prefijo de ruta, o cuando entras por IP.

Un 404 aquí no es un problema de proxy

Si ese curl devuelve 404, lo que pasa es que el servidor MCP está apagado: los .well-known no existen hasta que lo enciendes. Vuelve a Activarlo — y comprueba que pulsaste Guardar.

Revocar un acceso ​

Configuración → MCP lista, debajo de las instrucciones para conectar, tus aplicaciones con acceso vivo —qué tienen concedido, cuándo y hasta cuándo; un administrador ve las de todo el mundo y quién autorizó cada una— y las corta desde ahí. La revocación es inmediata: el cliente deja de poder llamar a las tools y de renovar su token en la siguiente petición, y para volver a entrar tiene que pasar otra vez por el consentimiento.

Conviene repasar esa lista de vez en cuando: el refresh token dura 30 días y se renueva solo mientras el cliente se use, así que una conexión que nadie recuerda puede seguir viva indefinidamente.

Usar los agentes y las inferencias desde el MCP ​

Además de administrar, el MCP sirve para usar: run_inference ejecuta una inferencia (con json_schema, la respuesta llega estructurada), search_rag busca en un RAG y las tools de agentes los listan y enseñan sus conversaciones. Son las que entran con solo conceder la categoría, sin Permitir cambios. Con él, el mismo usuario puede además ajustar el prompt, los mensajes y las áreas de los agentes que administra desde el cliente. Hablar con un agente no se hace desde el MCP: es cosa de su widget o SDK.

Para una integración de producto sigue siendo mejor la API HTTP, con su propio bearer token y sus permisos por recurso — el MCP es para la persona que habla con un modelo. Si esa integración es un agente de IA que habla MCP (n8n, un script con el SDK), el mismo access token le sirve en /mcp con «Usable desde el MCP»:

POST /api/inferences/{identifier}Lo mismo que run_inference, por HTTP
GET /api/agentsLo mismo que list_agents con un access token, por HTTP
POST /api/rags/{identifier}/retrieveLo mismo que search_rag, por HTTP

Límite de peticiones ​

Cada tool que llama a ur cuenta en el límite por minuto de tu usuario, el mismo que el de tus access tokens. Si te pasas, la tool devuelve un error que le dice al modelo cuántos segundos esperar. Tu límite está en Mi cuenta; si se te queda corto, pídele a un administrador que te lo suba.

Siguiente ​

Las instrucciones por cliente (Claude Code, Claude, Cursor, VS Code, ChatGPT…) → Conectar un cliente. El catálogo completo, con los argumentos de cada tool → Catálogo de tools.