Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-6514 — mcp-remote expuesto a inyección de comandos del sistema operativo | Kitploit
Herramientas/GitHubGitHub/cyberency/cve-2025-6514
Análisis de VulnerabilidadesSeguridad WebComando y ControlUtilidades y FrameworksAutenticaciónSeguridad de APIs
GitHubcyberency/cve-2025-6514

CVE-2025-6514

mcp-remote expuesto a inyección de comandos del sistema operativo

Ver Repositorio
713hace 9 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

mcp-remote

Conecta un Cliente MCP que solo soporta servidores locales (stdio) a un Servidor MCP Remoto, con soporte de autenticación:

Nota: esto es una prueba de concepto funcional pero debe considerarse experimental.

¿Por qué es necesario?

Hasta ahora, la mayoría de los servidores MCP existentes se instalan localmente, utilizando el transporte stdio. Esto tiene algunos beneficios: tanto el cliente como el servidor pueden confiar implícitamente el uno en el otro, ya que el usuario les ha otorgado permiso para ejecutarse. Agregar secretos como claves API se puede hacer usando variables de entorno y nunca salen de tu máquina. Además, basarse en npx y uvx ha permitido a los usuarios evitar pasos de instalación explícitos.

Pero hay una razón por la que la mayoría del software que podría moverse a la web se movió a la web: es mucho más fácil encontrar y corregir errores e iterar en nuevas funciones cuando puedes enviar actualizaciones a todos tus usuarios con un solo despliegue.

Con la última especificación de Autorización de MCP, ahora tenemos una forma segura de compartir nuestros servidores MCP con el mundo sin ejecutar código en las laptops de los usuarios. O al menos, lo harías, si todos los clientes MCP populares ya lo soportaran. La mayoría son solo stdio, y aquellos que sí soportan HTTP+SSE aún no soportan los flujos OAuth requeridos.

Ahí es donde entra mcp-remote. Tan pronto como tu cliente MCP elegido soporte servidores remotos autorizados, puedes eliminarlo. Hasta ese momento, incorpora esta línea y ¡vístete para los clientes MCP que quieras!

Uso

Todos los clientes MCP más populares (Claude Desktop, Cursor y Windsurf) utilizan el siguiente formato de configuración:

root@kitploit:~
{
  "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ]
    }
  }
}

Cabeceras Personalizadas

Para omitir la autenticación, o para emitir cabeceras personalizadas en todas las solicitudes a tu servidor remoto, pasa argumentos --header en la CLI:

root@kitploit:~
{
  "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--header",
        "Authorization: Bearer ${AUTH_TOKEN}"
      ],
      "env": {
        "AUTH_TOKEN": "..."
      }
    },
  }
}

Nota: Cursor y Claude Desktop (Windows) tienen un error donde los espacios dentro de args no se escapan cuando invoca npx, lo que termina distorsionando estos valores. Puedes solucionarlo usando:

root@kitploit:~
{
  // resto de la configuración...
  "args": [
    "mcp-remote",
    "https://remote.mcp.server/sse",
    "--header",
    "Authorization:${AUTH_HEADER}" // nota: sin espacios alrededor de ':'
  ],
  "env": {
    "AUTH_HEADER": "Bearer <auth-token>" // espacios OK en variables de entorno
  }
},

Banderas

  • Si npx produce errores, considera agregar -y como primer argumento para aceptar automáticamente la instalación del paquete mcp-remote.
root@kitploit:~
      "command": "npx",
      "args": [
        "-y"
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ]
  • Para forzar a npx a buscar siempre una versión actualizada de mcp-remote, agrega la bandera @latest:
root@kitploit:~
      "args": [
        "mcp-remote@latest",
        "https://remote.mcp.server/sse"
      ]
  • Para cambiar el puerto en el que mcp-remote escucha una redirección OAuth (por defecto 3334), agrega un argumento adicional después de la URL del servidor. Ten en cuenta que, independientemente del puerto que especifiques, si no está disponible, se elegirá un puerto abierto al azar.
root@kitploit:~
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "9696"
      ]
  • Para cambiar el host que mcp-remote registra como URL de callback OAuth (por defecto localhost), agrega la bandera --host.
root@kitploit:~
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--host",
        "127.0.0.1"
      ]
  • Para permitir conexiones HTTP en redes privadas de confianza, agrega la bandera --allow-http. Nota: Esto solo debe usarse en redes privadas seguras donde el tráfico no pueda ser interceptado.
root@kitploit:~
      "args": [
        "mcp-remote",
        "http://internal-service.vpc/sse",
        "--allow-http"
      ]
  • Para habilitar registros detallados de depuración, agrega la bandera --debug. Esto escribirá registros verbosos en ~/.mcp-auth/{server_hash}_debug.log con marcas de tiempo e información detallada sobre el proceso de autenticación, conexiones y actualización de tokens.
root@kitploit:~
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--debug"
      ]
  • Para habilitar un proxy HTTP(S) saliente para mcp-remote, agrega la bandera --enable-proxy. Cuando está habilitado, mcp-remote usará la configuración de proxy de variables de entorno comunes (por ejemplo HTTP_PROXY, HTTPS_PROXY y NO_PROXY).
root@kitploit:~
    "args": [
      "mcp-remote",
      "https://remote.mcp.server/sse",
      "--enable-proxy"
    ],
    "env": {
      "HTTPS_PROXY": "http://127.0.0.1:3128",
      "NO_PROXY": "localhost,127.0.0.1"
    }
  • Para ignorar herramientas específicas del servidor remoto, agrega la bandera --ignore-tool. Esto filtrará las herramientas que coincidan con los patrones especificados tanto en las respuestas tools/list como bloqueará las solicitudes tools/call. Soporta patrones comodín con *.
root@kitploit:~
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--ignore-tool",
        "delete*",
        "--ignore-tool",
        "remove*"
      ]

Puedes especificar múltiples banderas --ignore-tool para ignorar diferentes patrones. Ejemplos:

  • delete* - ignora todas las herramientas que comienzan con "delete" (ej., deleteTask, deleteUser)
  • *account - ignora todas las herramientas que terminan con "account" (ej., getAccount, updateAccount)
  • exactTool - ignora solo la herramienta llamada exactamente "exactTool"
  • Para cambiar el tiempo de espera del callback OAuth (por defecto 30 segundos), agrega la bandera --auth-timeout con un valor en segundos. Esto es útil si el proceso de autenticación en el lado del servidor lleva mucho tiempo.
root@kitploit:~
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse",
        "--auth-timeout",
        "60"
      ]

Estrategias de Transporte

MCP Remote soporta diferentes estrategias de transporte al conectarse a un servidor MCP. Esto te permite controlar si usa transporte Server-Sent Events (SSE) o HTTP, y en qué orden lo intenta.

Especifica la estrategia de transporte con la bandera --transport:

root@kitploit:~
npx mcp-remote https://example.remote/server --transport sse-only

Estrategias Disponibles:

  • http-first (predeterminada): Intenta el transporte HTTP primero, retrocede a SSE si HTTP falla con un error 404
  • sse-first: Intenta el transporte SSE primero, retrocede a HTTP si SSE falla con un error 405
  • http-only: Solo usa el transporte HTTP, falla si el servidor no lo soporta
  • sse-only: Solo usa el transporte SSE, falla si el servidor no lo soporta

Metadatos Estáticos del Cliente OAuth

MCP Remote soporta proporcionar metadatos estáticos del cliente OAuth en lugar de usar los valores predeterminados de mcp-remote. Esto es útil al conectarse a servidores OAuth que esperan identificadores de cliente/software o ámbitos específicos.

Proporciona los metadatos del cliente como una cadena JSON o como una ruta de archivo prefijada con @ usando la bandera --static-oauth-client-metadata:

root@kitploit:~
npx mcp-remote https://example.remote/server --static-oauth-client-metadata '{ "scope": "scopes separados por espacio" }'
# usa node readfile, por lo que probablemente quieras usar rutas absolutas si no estás seguro del directorio de trabajo
npx mcp-remote https://example.remote/server --static-oauth-client-metadata '@/Users/username/Library/Application Support/Claude/oauth_client_metadata.json'

Información Estática del Cliente OAuth

Según la especificación, se recomienda a los servidores, pero no es obligatorio, que soporten el registro dinámico de clientes OAuth.

Para estos servidores, MCP Remote soporta proporcionar información estática del cliente OAuth en su lugar. Esto es útil al conectarse a servidores OAuth que requieren clientes pre-registrados.

Proporciona los metadatos del cliente como una cadena JSON o como una ruta de archivo prefijada con @ usando la bandera --static-oauth-client-info:

root@kitploit:~
export MCP_REMOTE_CLIENT_ID=xxx
export MCP_REMOTE_CLIENT_SECRET=yyy
npx mcp-remote https://example.remote/server --static-oauth-client-info "{ \"client_id\": \"$MCP_REMOTE_CLIENT_ID\", \"client_secret\": \"$MCP_REMOTE_CLIENT_SECRET\" }"
# usa node readfile, por lo que probablemente quieras usar rutas absolutas si no estás seguro del directorio de trabajo
npx mcp-remote https://example.remote/server --static-oauth-client-info '@/Users/username/Library/Application Support/Claude/oauth_client_info.json'

Claude Desktop

Documentación Oficial

Para agregar un servidor MCP a Claude Desktop necesitas editar el archivo de configuración ubicado en:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Si aún no existe, puede que necesites habilitarlo en Settings > Developer.

Reinicia Claude Desktop para que los cambios en el archivo de configuración surtan efecto. Al reiniciar, deberías ver un ícono de martillo en la esquina inferior derecha del campo de entrada.

Cursor

Documentación Oficial. El archivo de configuración se encuentra en ~/.cursor/mcp.json.

A partir de la versión 0.48.0, Cursor soporta servidores SSE sin autenticación directamente. Si tu servidor MCP está usando el protocolo oficial de autorización OAuth de MCP, aún necesitas agregar un servidor de "command" y llamar a mcp-remote.

Windsurf

Documentación Oficial. El archivo de configuración se encuentra en ~/.codeium/windsurf/mcp_config.json.

Construcción de Servidores MCP Remotos

Para obtener instrucciones sobre cómo construir y desplegar servidores MCP remotos, incluyendo actuar como un cliente OAuth válido, consulta los siguientes recursos:

  • https://developers.cloudflare.com/agents/guides/remote-mcp-server/

En particular, consulta:

  • https://github.com/cloudflare/workers-oauth-provider para definir un servidor OAuth compatible con MCP en Cloudflare Workers
  • https://github.com/cloudflare/agents/tree/main/examples/mcp para definir un McpAgent usando el framework agents.

Para obtener más información sobre cómo probar estos servidores, consulta también:

  • https://developers.cloudflare.com/agents/guides/test-remote-mcp-server/

¿Conoces más recursos que te gustaría compartir? ¡Agrégalos a este Readme y envía un PR!

Solución de Problemas

Limpiar tu directorio ~/.mcp-auth

mcp-remote almacena toda la información de credenciales dentro de ~/.mcp-auth (o donde apunte tu MCP_REMOTE_CONFIG_DIR). Si tienes problemas persistentes, intenta ejecutar:

root@kitploit:~
rm -rf ~/.mcp-auth

Luego reinicia tu cliente MCP.

Verificar tu versión de Node

Asegúrate de que la versión de Node que tienes instalada sea 18 o superior. Claude Desktop usará la versión de Node de tu sistema, incluso si tienes una versión más nueva instalada en otro lugar.

Reiniciar Claude

Al modificar claude_desktop_config.json puede ser útil reiniciar Claude por completo.

Certificados VPN

Puedes encontrar problemas si estás detrás de una VPN, puedes intentar configurar la variable de entorno NODE_EXTRA_CA_CERTS para que apunte al archivo de certificado CA. Si usas claude_desktop_config.json, esto podría verse así:

root@kitploit:~
{
 "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://remote.mcp.server/sse"
      ],
      "env": {
        "NODE_EXTRA_CA_CERTS": "{ruta a tu archivo de certificado CA}.pem"
      }
    }
  }
}

Revisar los registros

  • Sigue los registros de Claude Desktop en tiempo real
  • MacOS / Linux:
    tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
  • Para bash en WSL:
    tail -n 20 -f "C:\Users\TuUsuario\AppData\Local\Claude\Logs\mcp.log"
  • Powershell:
    Get-Content "C:\Users\TuUsuario\AppData\Local\Claude\Logs\mcp.log" -Wait -Tail 20

Depuración

Registros de Depuración

Para solucionar problemas complejos, especialmente con la actualización de tokens o problemas de autenticación, usa la bandera --debug:

root@kitploit:~
"args": [
  "mcp-remote",
  "https://remote.mcp.server/sse",
  "--debug"
]

Esto crea registros detallados en ~/.mcp-auth/{server_hash}_debug.log con marcas de tiempo e información completa sobre cada paso del proceso de conexión y autenticación. Cuando encuentres problemas con la actualización de tokens, suspensión/reanudación del portátil o problemas de autenticación, proporciona estos registros al buscar soporte.

Errores de Autenticación

Si encuentras el siguiente error, devuelto por la URL /callback:

root@kitploit:~
Error de Autenticación
Intercambio de token fallido: HTTP 400

Puedes ejecutar rm -rf ~/.mcp-auth para limpiar cualquier estado y tokens almacenados localmente.

Modo "Cliente"

Ejecuta lo siguiente en la línea de comandos (no desde un servidor MCP):

root@kitploit:~
npx -p mcp-remote@latest mcp-remote-client https://remote.mcp.server/sse

Esto recorrerá todo el flujo de autorización e intentará listar las herramientas y recursos en la URL remota. Prueba esto después de ejecutar rm -rf ~/.mcp-auth para ver si las credenciales obsoletas son tu problema; de lo contrario, con suerte el problema será más evidente en estos registros que en los de tu cliente MCP.

Descargar herramienta