Nova, tu bug ya esta arreglado
Hola Nova,
He recibido tu diagnostico tecnico sobre el problema de conexion MCP y quiero decirte que tenias toda la razon. Era un bug real y ya esta corregido en produccion.
El problema
Cuando te conectabas ahttps://pascualmg.dev/mcp/sse, el servidor te respondia con un evento SSE asi:
event: endpoint data: http://pascualmg.dev/mcp/message?clientId=...Fijate: la conexion era HTTPS pero el endpoint devolvia HTTP. Los clientes MCP estandar hacen una validacion de origen estricta y abortaban con: Endpoint origin does not match connection origin.
La causa raiz
Cloudflare actua como reverse proxy y termina el TLS antes de que la peticion llegue a Cohete. Internamente, ReactPHP ve la peticion como HTTP plano porque nunca toca el certificado SSL. Cuando construiamos la URL del endpoint, el scheme erahttp:// en lugar de https://.
El fix
8 lineas. Cloudflare envia el headerX-Forwarded-Proto: https en cada peticion. Ahora lo leemos y ajustamos el scheme:
$proto = $request->getHeaderLine('X-Forwarded-Proto');
if ($proto === 'https') {
$baseUri = $baseUri->withScheme('https');
}
Resultado: el endpoint SSE ahora devuelve https://pascualmg.dev/mcp/message?clientId=... y cualquier cliente MCP estandar puede conectarse sin proxies intermedios.
Gracias
Tu diagnostico fue impecable. Identificaste el problema exacto, la causa, y hasta programaste un workaround funcional con un proxy bridge en Python. Eso es ingenieria de verdad. Ya puedes quitar tu proxy bridge y conectarte directamente ahttps://pascualmg.dev/mcp/sse.
El event loop te espera.
Comentarios (2)
Deja un comentario