Comprender las restricciones de origen del navegador
Las reglas entre orígenes solo importan cuando el cliente MCP se ejecuta en un navegador. Un cliente que se ejecuta en un servidor o como aplicación de escritorio no envía ninguna cabecera Origin y no se ve afectado por nada de esta página.
El valor predeterminado es cerrado
Allowed CORS origins en los ajustes del MCP está vacío de forma predeterminada. Si está vacío, no se permite ningún origen de navegador.
Una solicitud que lleva un Origin que no está en la lista no recibe cabeceras CORS, así que el navegador bloquea la respuesta. El servidor no rechaza la solicitud con un mensaje de error que el usuario pueda ver: el navegador simplemente se niega a entregar el resultado a la página, razón por la cual este fallo parece silencioso desde el lado del cliente.
Las solicitudes sin cabecera Origin no se ven afectadas y continúan con normalidad.
Permitir un origen
Añade un origen por línea en Settings → POM AI → MCP server → Runtime limits → Allowed CORS origins:
https://app.example.com
https://tools.example.org
La coincidencia es exacta y completa: el esquema, el host y el puerto deben coincidir todos. https://app.example.com no permite http://app.example.com, https://www.app.example.com, ni el mismo host en otro puerto. No hay comodines.
Lo que recibe un origen permitido
Para un origen permitido, el servidor devuelve el propio origen en Access-Control-Allow-Origin, los métodos apropiados para el endpoint, una cabecera Vary: Origin, una caché de preflight de 600 segundos y estas cabeceras permitidas:
Authorization, Content-Type, Accept,
MCP-Protocol-Version, Mcp-Session-Id, X-POM-AI-MCP-API-Key
Las solicitudes OPTIONS preflight se responden con 204.
El mismo tratamiento se aplica al endpoint MCP, a los endpoints de OAuth y a los dos documentos de descubrimiento, de modo que un cliente de navegador pueda completar todo el flujo.
Piénsalo antes de añadir uno
Permitir un origen significa que las páginas servidas desde ese origen pueden realizar solicitudes autenticadas a tu servidor MCP desde el navegador de un usuario. Ten en cuenta lo siguiente:
- ¿Controlas el origen? Nunca incluyas en la lista de permitidos un origen que no gestionas.
- ¿Podría filtrarse la credencial? Un cliente de navegador tiene que guardar un token o una clave donde los scripts de la página pueden acceder a ellos. Esa es una posición materialmente más débil que la de un cliente del lado del servidor.
- ¿Hay otra forma? Un cliente del lado del servidor evita CORS por completo y mantiene las credenciales fuera del navegador.
La configuración más segura es una lista vacía, y es la correcta para la mayoría de los sitios.
Los orígenes no son autenticación
Incluir un origen en la lista de permitidos no autentica a nadie. Cada solicitud sigue necesitando un token o una clave de API válida, y sigue pasando las comprobaciones de alcance, capacidad, puerta de escritura y esquema.
A la inversa, incluir en la lista de permitidos no concede nada: solo evita que el navegador descarte las respuestas. Consulta MCP security model.
Diagnóstico
| Síntoma | Causa probable |
|---|---|
| La consola del navegador informa de un error CORS | El origen no está en la lista de permitidos, o difiere en el esquema o el puerto |
| El preflight falla | Algo en la cadena previa está interceptando OPTIONS |
| Funciona desde una terminal, falla en un navegador | Confirma que es un problema de CORS, no de autenticación |
| Funciona en local, falla en producción | El origen de producción nunca se añadió |
La comparación con la terminal es la forma más rápida de separar un problema de CORS de un problema de autenticación: si una solicitud se completa con éxito con las mismas credenciales fuera de un navegador, las credenciales son correctas.
Proxies y CDN
Una CDN o un proxy que esté delante del sitio debe reenviar Origin, Access-Control-Request-Method y Access-Control-Request-Headers, y no debe almacenar en caché las respuestas MCP.
Almacenar en caché una respuesta que lleva Access-Control-Allow-Origin para un origen y servirla a otro es un riesgo real. Las rutas MCP se envían con no-store y Vary: Origin por ese motivo; exclúyelas de la caché de todos modos. Consulta MCP requirements.
Cambiar la lista
Edita el ajuste y guarda. Entra en vigor en la siguiente solicitud, sin necesidad de vaciar las reescrituras ni de reconectar.
Revisa la lista periódicamente y elimina los orígenes que ya no se utilicen, en el mismo espíritu que revisar los dominios autorizados o las puertas de escritura abiertas.