Fallo en el registro OAuth de MCP al conectar con Claude.ai

Estoy intentando conectar Claude.ai a mi instancia n8n autohospedada (v2.30.7) usando la función Instance-level MCP (Preview), pero sigo recibiendo este error de Claude:
“Couldn’t register with n8n’s sign-in service. You can try again, or add an OAuth Client ID in the connector settings.” (No se pudo registrar con el servicio de inicio de sesión de n8n. Puedes intentarlo de nuevo o agregar un OAuth Client ID en la configuración del conector.)
Detalles de la configuración:

  • n8n está autohospedado, ejecutándose localmente, expuesto a través de ngrok (túnel https)
  • Instance-level MCP está habilitado
  • He agregado la URL de redirección requerida (https://claude.ai/api/mcp/auth_callback) en la configuración de OAuth y la guardé correctamente
  • Tengo un flujo de trabajo publicado con un Chat Trigger, y el acceso MCP está habilitado para él
  • Los registros de ngrok muestran que Claude está obteniendo correctamente /.well-known/oauth-authorization-server y /.well-known/oauth-protected-resource (200 OK), pero nunca aparece una solicitud POST a un endpoint /register — seguida de 401 Unauthorized en /mcp-server/http
  • La pestaña “Connected clients” (Clientes conectados) siempre muestra “No OAuth clients connected” (No hay clientes OAuth conectados)
    Parece que Claude no puede completar el registro dinámico de cliente con mi instancia de n8n. ¿Es esta una limitación conocida de la función MCP Preview, o hay una forma manual de registrar un cliente OAuth / obtener un Client ID y Secret para n8n para poder ingresarlo manualmente en el lado de Claude?
    ¡Gracias de antemano!

Describe el problema/error/pregunta

¿Cuál es el mensaje de error (si hay alguno)?

Por favor comparte tu flujo de trabajo

(Selecciona los nodos en tu lienzo y usa los atajos de teclado CMD+C/CTRL+C y CMD+V/CTRL+V para copiar y pegar el flujo de trabajo.)

Comparte el resultado devuelto por el último nodo

Información sobre tu configuración de n8n

  • Versión de n8n:
  • Base de datos (predeterminado: SQLite):
  • Configuración n8n EXECUTIONS_PROCESS (predeterminado: own, main):
  • Ejecutando n8n a través de (Docker, npm, n8n cloud, aplicación de escritorio):
  • Sistema operativo:

¡Hola @Elma_Akter! ¡Bienvenida!
n8n construye las URLs del endpoint OAuth que anuncia en los documentos .well-known (authorize, token y el endpoint de registro dinámico) a partir de su propia URL base, que detrás de ngrok sigue usando por defecto http://localhost:5678. Claude obtiene esos documentos correctamente a través del túnel, lo que ves en tus 200s, luego realiza POST del registro del cliente al endpoint de registro de localhost que leyó de ellos, por lo que la solicitud nunca llega a tu instancia, no aparece ninguna llamada /register en ngrok, y /mcp-server/http devuelve 401 sin cliente conectado.

Apunta la URL pública a tu dirección https de ngrok para que los endpoints anunciados sean accesibles, luego reinicia:

N8N_HOST=<tu-subdominio>.ngrok-free.app
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://<tu-subdominio>.ngrok-free.app/
WEBHOOK_URL=https://<tu-subdominio>.ngrok-free.app/
N8N_PROXY_HOPS=1

Reinicia n8n, abre Settings > Instance-level MCP, copia la URL del servidor OAuth nuevamente y reconéctate desde Claude. El registro dinámico del cliente ahora hará POST al endpoint público de ngrok y el cliente se registrará, por lo que no necesitarás ingresar un ID de cliente manualmente.