Skip to main content
Glama

JS Reverse MCP

English | Chino

Servidor MCP de ingeniería inversa de JavaScript, AI-first / AI-native, que permite a tu asistente de codificación con IA (como Claude, Cursor, Copilot) depurar, localizar, guardar y revisar continuamente el comportamiento de JavaScript en páginas web, como un analista.

No se limita a trasladar la API de Chrome DevTools directamente al modelo, sino que reorganiza scripts, puntos de interrupción, red, WebSocket, estado del navegador y E/S de archivos locales en herramientas adecuadas para que un Agente de IA razone y opere de forma continua. La anti-detección es una de sus capacidades: de forma predeterminada utiliza el Patchright fork, recompilado y publicado específicamente para este MCP y mantenido de forma independiente, para proporcionar stealth a nivel de protocolo; para sitios con fuerte anti-rastreo, puede habilitarse opcionalmente el modo de huella digital a nivel de código fuente de CloakBrowser.

☁️ Patrocinio · Sponsored by IPWO

El proxy residencial de IPWO admite configuraciones de proxy flexibles; los desarrolladores pueden elegir el entorno de red correspondiente según la tarea, para acceso web, pruebas de solicitudes, análisis de contenido regionalizado y flujos de trabajo automatizados.

Para proyectos que implican ingeniería inversa de JS, depuración de navegador y análisis de red web, el proxy residencial también puede ser una opción complementaria de entorno de red, ayudando a los desarrolladores a satisfacer de forma más flexible las necesidades de acceso y pruebas en diferentes regiones.

👉 Entrada de prueba gratuita, código de descuento del 10 %: 0204

Related MCP server: Chrome DevTools MCP

☁️ Patrocinio · Sponsored by Infistar.cc 无限星河

js-reverse-mcp × Infistar.cc 无限星河|API para todos los modelos · impulsa de forma estable la depuración asistida por IA

¡Gracias a Infistar.cc 无限星河 por patrocinar y proporcionar soporte de servicios de modelos para js-reverse-mcp!

  • Soporta de forma estable tareas de depuración complejas: ofrece canales empresariales de alta concurrencia y redundancia multinodo, con precios desde 1/10 del canal oficial, reduciendo límites de frecuencia, errores 429 y problemas de desconexión en tareas largas.

  • 🧠 Un solo API Key para acceder a los principales modelos: admite modelos como ChatGPT, Claude, Gemini, Kimi, GLM, DeepSeek, y es compatible con herramientas de programación de IA como Claude Code, Codex, Cursor.

  • 🔎 Impulsa la depuración autorizada y la investigación de seguridad: apto para tareas de varios pasos como búsqueda de scripts, análisis de puntos de interrupción, seguimiento de solicitudes de red, inspección de la pila de llamadas y comprensión de la lógica del código.

  • 📦 Beneficio exclusivo para usuarios del proyecto: regístrate a través del enlace de promoción exclusivo y completa la primera llamada para recibir un crédito de prueba equivalente a 5 USD / un descuento exclusivo en la primera recarga.

Posicionamiento: soporte de configuración de API de modelos para Claude Code / Codex.

Características

  • Diseño de herramientas AI-native: la granularidad de las herramientas, los límites de salida y los mensajes de error están diseñados en torno a las decisiones del Agente, evitando llevar al modelo a un siguiente paso inútil.

  • Flujo de trabajo revisable: el código fuente de los scripts, los datos brutos de red y los resultados binarios pueden exportarse a archivos locales y utilizarse como entrada para análisis posteriores.

  • Ejecución en contexto de punto de interrupción: al pausar, se puede evaluar directamente en el call frame, inspeccionar variables de ámbito, ejecutar paso a paso y devolver el contexto del código fuente.

  • Análisis de scripts: lista todos los JS cargados, busca código, obtiene/guarda código fuente y formatea automáticamente scripts grandes y minificados.

  • Análisis de red y WebSocket: pilas de llamadas de solicitudes, puntos de interrupción XHR, identificación de Set-Cookie, exportación de body/header brutos y agrupación de mensajes WebSocket.

  • Reproducción del estado del navegador: limpia cookies / caché / storage / sessionStorage del sitio actual, y con reload reproduce el flujo de cookies y control de riesgos.

  • Con interfaz (headed) por defecto + estado de sesión persistente: el navegador es visible y las cookies / localStorage se conservan entre sesiones.

  • Núcleo Patchright dedicado: por defecto depende de un fork de Patchright mantenido de forma independiente por este proyecto, corrigiendo continuamente las características de implementación compartida conocidas del upstream.

  • Capa anti-detección opcional: el stealth a nivel de protocolo del Patchright dedicado está habilitado por defecto; para sitios con fuerte anti-rastreo se puede añadir --cloak para usar el binario de CloakBrowser.

Fork dedicado de Patchright

js-reverse-mcp ya no depende directamente del paquete de distribución público de Patchright, sino que utiliza @zhizhuodemao/patchright, compilado y publicado específicamente para este MCP. Este fork se mantiene de forma continua en un repositorio independiente y evoluciona junto con las muestras de detección reales de este MCP.

  • Ya no depende directamente del paquete de distribución público de Patchright.

  • Realiza ajustes a nivel de protocolo y recompilaciones/publicaciones para las características de implementación compartida del upstream ya confirmadas.

  • Los ajustes de anti-detección no dependen de la inyección de JS a nivel de página.

  • Conserva las capacidades originales como evaluate, locator y control de página.

  • El fork se mantiene continuamente en el repositorio dedicado a este MCP.

La documentación pública solo explica los límites de diseño y no detalla las muestras de detección internas ni los detalles de implementación. El objetivo del fork dedicado es reducir las características de implementación compartida confirmadas, no prometer que la automatización del navegador sea absolutamente indetectable.

Requisitos del sistema

  • Node.js v20.19 o una versión más reciente

  • Chrome versión estable

Inicio rápido (npx)

Sin necesidad de instalar, añade directamente en la configuración del cliente MCP:

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    }
  }
}

Claude Code

claude mcp add js-reverse npx js-reverse-mcp

Si aún no tienes una API de modelos disponible, o necesitas configurar una dirección de API personalizada, consulta: Tutorial de configuración de API de modelos de terceros para Claude Code / Codex.

Codex

codex mcp add js-reverse -- npx js-reverse-mcp

Si aún no tienes una API de modelos disponible, o necesitas configurar una dirección de API personalizada, consulta: Tutorial de configuración de API de modelos de terceros para Claude Code / Codex.

Cursor

Ve a Cursor Settings -> MCP -> New MCP Server y usa la configuración anterior.

VS Code Copilot

code --add-mcp '{"name":"js-reverse","command":"npx","args":["js-reverse-mcp"]}'

Instalación local (opcional)

git clone https://github.com/zhizhuodemao/js-reverse-mcp.git
cd js-reverse-mcp
npm install
npm run build

Luego usa la ruta local en la configuración de MCP:

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": ["/你的路径/js-reverse-mcp/build/src/index.js"]
    }
  }
}

Diseño AI-first

El objetivo central de este proyecto no es «poder operar el navegador», sino permitir que un Agente de IA complete de forma estable una ronda real de tareas de ingeniería inversa de JS: abrir la página, pasar el control de riesgos, localizar scripts, guardar el código fuente, establecer puntos de interrupción, disparar comportamientos, inspeccionar el runtime, exportar materiales de red, reproducir estados y seguir razonando.

Varias orientaciones de diseño están presentes en todo el código:

  • Las herramientas son primitivas del Agente, no un mapeo de menús de DevTools: list_network_requests puede listar índices, consultar detalles por reqid y exportar materiales precisos con outputFile; evaluate_script puede ejecutarse en la página o en el call frame de un punto de interrupción, y también aceptar la entrada localFilePath.

  • La salida debe guiar el siguiente paso: las salidas de lista se mantienen cortas y escaneables; las salidas de detalle tienen límites; los resultados largos sugieren exportarlos; las solicitudes pendientes indican claramente que se reanude la ejecución primero, evitando que el Agente espere una response que nunca se completa.

  • Los archivos locales son la mesa de trabajo de análisis: save_script_source, list_network_requests(..., outputFile) y evaluate_script(..., localFilePath) permiten que el Agente vaya y venga entre el navegador, la red y los archivos locales, en lugar de meter grandes bloques de código o datos binarios en el contexto del chat.

  • Estado limpiable, flujo reproducible: el profile predeterminado conserva el estado de sesión; --isolated ofrece un entorno limpio de un solo uso; clear_site_data limpia solo el estado relacionado con el sitio actual, para reproducir repetidamente la generación de cookies, la inicialización del control de riesgos y la cadena de solicitudes.

  • La anti-detección sirve al flujo de depuración: la navegación silenciosa por CDP, la ventana gráfica real, el referer de Google, el fork dedicado de Patchright y CloakBrowser tienen como objetivo que el Agente pueda entrar en la página objetivo y continuar el análisis, no convertir el proyecto en un marco genérico de rastreo.

Mecanismo de anti-detección (capacidad de soporte)

La anti-detección es una de las capacidades de soporte subyacentes de js-reverse-mcp. La capa de envoltura (el propio MCP) tiene cero inyección de JS y no hace hacks de Object.defineProperty (eso en sí mismo es una señal de detección). Toda la anti-detección reside en dos capas que no se solapan:

Capa

Modo predeterminado

Modo --cloak

Capa de protocolo (CDP)

Fork dedicado de Patchright: no llama a Runtime.enable / Console.enable, ejecuta evaluate en el isolated world, elimina el launch flag de automatización y corrige continuamente las características de implementación compartida conocidas

Igual

Capa de código fuente (parche binario C++)

Ninguna: usa directamente el Google Chrome del sistema

Binario de CloakBrowser (parche de huella digital a nivel de código fuente según la plataforma, que cubre navigator.webdriver, canvas, WebGL, audio, GPU, fuentes, pantalla, WebRTC, TLS)

Directorio de profile

~/.cache/chrome-devtools-mcp/chrome-profile (estado de sesión persistente)

~/.cache/chrome-devtools-mcp/cloak-profile (aislado físicamente del predeterminado)

Navegador real

Tu Google Chrome instalado (con Web Store, extensiones, sync)

Compilación personalizada de Chromium (sin servicios de Google, sin Web Store)

Además, varias medidas a nivel de navegación (activas en ambos modos):

  • Navegación silenciosa por CDP — al cargar la página no se activan Network.enable / Debugger.enable; la recopilación de solicitudes/consola solo pasa por los listeners de Playwright, hasta que alguna herramienta necesite CDP explícitamente.

  • Google Referernew_page incluye por defecto referer: https://www.google.com/

  • Ventana gráfica real — desactiva la ventana gráfica falsa predeterminada de 1280×720 de Playwright y el navegador muestra el tamaño real de la pantalla.

Cuándo activar --cloak: úsalo solo cuando lo anterior no sea suficiente y el sitio te bloquee por huella digital. Consulta docs/cloak.md.

Lista de herramientas (24)

Página y navegación

Herramienta

Descripción

select_page

Lista las páginas abiertas o selecciona el contexto de depuración por índice

new_page

Crea una nueva página y navega a una URL

navigate_page

Navega, retrocede, avanza o recarga la página

select_frame

Lista todos los frames (iframes) o selecciona el contexto de ejecución

click_element

Coincidencia estricta y clic en un único elemento visible en el frame actual

take_screenshot

Captura una captura de pantalla de la página

Análisis de scripts

Herramienta

Descripción

list_scripts

Lista todos los scripts de JavaScript cargados en la página

get_script_source

Obtiene fragmentos del código fuente del script, con soporte para rangos de líneas o desplazamientos de caracteres

save_script_source

Guarda el código fuente completo del script en un archivo local (adecuado para archivos grandes/minificados/WASM)

search_in_sources

Busca cadenas o expresiones regulares en todos los scripts

Puntos de interrupción y control de ejecución

Herramienta

Descripción

set_breakpoint_on_text

Establece automáticamente un punto de interrupción buscando el texto del código (adecuado para código minificado)

break_on_xhr

Establece puntos de interrupción de XHR/Fetch según el patrón de URL

remove_breakpoint

Elimina puntos de interrupción por ID, URL o todos con una acción explícita

list_breakpoints

Lista todos los puntos de interrupción activos

get_paused_info

Obtiene el estado de pausa, la pila de llamadas y las variables de ámbito

pause_or_resume

Pausa o reanuda la ejecución con una acción explícita

step

Depuración paso a paso (over/into/out), devuelve la posición y el contexto del código fuente

Red y WebSocket

Herramienta

Descripción

list_network_requests

Lista solicitudes de red, consulta detalles o exporta materiales brutos como header/body/query

clear_network_requests

Tras confirmación explícita, vacía las solicitudes recopiladas y la caché de body de la página actual

get_request_initiator

Obtiene la pila de llamadas de JavaScript de la solicitud de red

get_websocket_messages

Lista conexiones WebSocket, analiza patrones de mensajes u obtiene detalles de mensajes

Estado del navegador

Herramienta

Descripción

clear_site_data

Limpia las cookies, el origin storage y el sessionStorage relacionados con el sitio actual; puede elegir explícitamente limpiar la caché HTTP global

Herramientas de inspección

Herramienta

Descripción

evaluate_script

Ejecuta JavaScript en la página o en el contexto de un punto de interrupción; admite el mundo principal, guardar resultados y leer un archivo de entrada local

list_console_messages

Lista los mensajes de consola u obtiene el detalle de uno por msgid

Ejemplos de uso

Flujo básico de ingeniería inversa de JS

  1. Abrir la página objetivo

打开 https://example.com 并列出所有加载的 JS 脚本
  1. Buscar la función objetivo

在所有脚本中搜索包含 "encrypt" 的代码
  1. Establecer un punto de interrupción

在加密函数入口处设置断点
  1. Disparar y analizar

在页面上触发操作,断点命中后检查参数、调用栈和作用域变量

Análisis de protocolo WebSocket

列出 WebSocket 连接,分析消息模式,查看特定类型的消息内容

Flujo de captura completo recomendado por el Agente

Como la fase de navegación mantiene deliberadamente el CDP en silencio, al entrar por primera vez en la página objetivo no se abren inmediatamente los dominios Network / Debugger. El flujo recomendado es primero pasar el control de riesgos y luego refrescar para capturar:

1. new_page 打开目标页
2. 调用 list_network_requests 激活 collectors
3. navigate_page(type="reload") 刷新页面
4. 再次 list_network_requests 查看完整请求
5. 对关键 reqid 使用 outputFile 导出原始材料

Flujo de reproducción de cookies / control de riesgos

1. clear_site_data(confirm=true) 清理当前站点状态
2. navigate_page(type="reload") 重新触发初始化
3. list_network_requests 找到设置 cookie 或提交 sensor 的请求
4. 导出 requestBody / responseHeaders / responseBody
5. 用 evaluate_script + localFilePath 在页面上下文中复算或验证

Opciones de configuración

La CLI se mantiene minimalista; todos los flags son opcionales. En el 99 % de los casos, los valores predeterminados son suficientes. Cuando se involucran archivos locales, se recomienda usar --allowedRoots para limitar los directorios que el Agente puede leer y escribir.

Opción

Descripción

Valor predeterminado

--cloak

Cambia al binario sigiloso de CloakBrowser (sustituye al Chrome del sistema). Activa el parche de huella digital a nivel de código fuente en C++ según la plataforma. En el primer inicio descarga automáticamente el binario de ~200MB; la identidad de huella se persiste por profile. Consulta docs/cloak.md.

false

--isolated

Usa un user-data-dir temporal (cookies/localStorage no se conservan; se limpia automáticamente al cerrar)

false

--browserUrl, -u

Se conecta a una instancia de Chrome ya en ejecución (endpoint CDP HTTP, por ejemplo http://127.0.0.1:9222). El MCP detecta automáticamente la URL de depuración WebSocket. Cómo obtener este endpoint en Chrome local, AdsPower, BitBrowser, etc., consulta docs/cdp-endpoint.md.

--logFile

Escribe un registro de depuración del MCP en un archivo normal con permisos 0600; los registros detallados solo usan DEBUG=mcp:*. No uses DEBUG=*, ya que los registros del protocolo del navegador pueden filtrar páginas, cookies, scripts y credenciales.

--allowedRoots

Se puede especificar repetidamente para indicar los directorios locales que el Agente puede leer y escribir; resuelve rutas reales y rechaza cruces fuera del directorio mediante enlaces simbólicos. Al habilitarse, desactiva las páginas de navegador file:, view-source:file: y filesystem:file:. Si no se especifica, el acceso a archivos locales no está restringido por directorio y se imprime una advertencia de seguridad al inicio.

Ejemplos de configuración

Predeterminado: Chrome del sistema + estado de sesión persistente (recomendado para la gran mayoría de escenarios de depuración):

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    }
  }
}

--cloak: sitios con fuerte anti-rastreo (protección Cloudflare Turnstile / DataDome / FingerprintJS):

Muy recomendable: descarga previamente el binario (una sola vez, ~30–60 segundos). Si no haces este paso, al iniciar por primera vez el MCP con --cloak, se descargarán silenciosamente ~200MB y parecerá que el MCP se ha quedado congelado:

npx cloakbrowser install

(El paquete cloakbrowser ya se instala junto con optionalDependencies; este comando solo activa la lógica de descarga de binarios incorporada, con barra de progreso)

{
  "mcpServers": {
    "js-reverse-cloak": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--cloak"]
    }
  }
}

Dos instancias en paralelo: los profiles de dos instancias MCP están físicamente aislados; cambia según el sitio objetivo:

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    },
    "js-reverse-cloak": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--cloak"]
    }
  }
}

--isolated: un profile nuevo en cada ejecución (no conserva cookies/localStorage):

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--isolated"]
    }
  }
}

Conexión a un Chrome ya en ejecución / navegador de huella digital de terceros

--browserUrl solo acepta endpoints CDP (endpoints HTTP que responden a /json/version), no acepta Local API privadas de los fabricantes. Cómo obtener el puerto CDP en escenarios como Chrome local, AdsPower, BitBrowser, etc., consulta el documento dedicado:

📖 docs/cdp-endpoint.md: cómo obtener el puerto de depuración CDP

Ruta más corta (Chrome local):

# 先关掉所有 Chrome 窗口,然后
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug
{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--browserUrl", "http://127.0.0.1:9222"]
    }
  }
}

El puerto CDP de los navegadores de huella digital (AdsPower, BitBrowser, etc.) cambia aleatoriamente en cada inicio; es necesario iniciar el navegador a través de la Local API del fabricante y luego extraerlo. Los pasos y scripts de ejemplo están en el documento anterior.

Solución de problemas

Bloqueado por sistemas anti-rastreo

Si el acceso a ciertos sitios es bloqueado (por ejemplo, Zhihu devuelve 40362, bucle infinito de desafío de Cloudflare):

  1. Prueba primero --isolated — usa un profile nuevo para descartar la contaminación por estado residual:

"args": ["js-reverse-mcp", "--isolated"]
  1. Si aún no funciona, activa --cloak — habilita el parche de huella digital a nivel de código fuente según la plataforma:

"args": ["js-reverse-mcp", "--cloak"]
  1. Por último, considera limpiar manualmente el profile persistente (se perderá el estado de sesión):

rm -rf ~/.cache/chrome-devtools-mcp/chrome-profile

Cuándo conviene activar --cloak y cuándo no, consulta docs/cloak.md.

Evaluación de enrutamiento del Agente (mantenedores)

npm run eval:routing:validate valida sin conexión los 30 contratos de selección de herramientas entre el tools/list real del MCP, las instrucciones del servidor y evals/tool-routing.json; este comando no accede a endpoints de modelos y está incluido en el presubmit.

La evaluación con modelos reales es explícitamente opt-in, llama uno a uno a los endpoints de Chat Completions compatibles con OpenAI y puede generar costes:

MCP_ROUTING_EVAL_ENDPOINT=https://api.example.com/v1/chat/completions \
MCP_ROUTING_EVAL_MODEL=model-name \
MCP_ROUTING_EVAL_API_KEY=secret \
npm run eval:routing

MCP_ROUTING_EVAL_API_KEY puede omitirse para endpoints locales sin autenticación; los endpoints remotos con credenciales deben usar HTTPS, y HTTP solo está permitido en loopback. MCP_ROUTING_EVAL_TIMEOUT_MS puede usarse para ajustar el tiempo de espera de cada solicitud. Por defecto se exige un 100 % de aprobación; al comparar entre modelos, se puede usar MCP_ROUTING_EVAL_MIN_PASS_RATE para establecer un umbral en (0, 1]. La evaluación no imprime API keys, endpoints ni el cuerpo de las respuestas de error de los endpoints.

Advertencia de seguridad

Esta herramienta expone el contenido del navegador al cliente MCP, lo que permite inspeccionar, depurar y modificar cualquier dato del navegador. No la uses en páginas que contengan información sensible.

evaluate_script.localFilePath y los distintos outputFile/filePath harán que el proceso MCP lea o escriba archivos del host. En entornos de producción o compartidos se debe utilizar uno o varios --allowedRoots para acotar el acceso a un directorio de trabajo dedicado; si no se configura, el alcance del acceso no tiene límites. Con --allowedRoots habilitado, también se rechazarán las páginas de navegador file:, view-source:file: y filesystem:file:, para evitar que se eludan los límites de directorio mediante la navegación del navegador; si se necesita depurar páginas locales, solo se puede dejar esta opción sin configurar en sesiones que acepten explícitamente el riesgo de exponer archivos locales.

Licencia

Apache-2.0

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
16hResponse time
4dRelease cycle
37Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to debug frontend applications by providing direct access to browser DevTools, React state, DOM inspection, and runtime debugging capabilities. Bridges the gap between AI and complex web applications for autonomous debugging and issue resolution.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.
    18
    14
    2
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Give AI coding agents access to your Vynix visual feedback, bug reports, and AI diagnosis.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zhizhuodemao/js-reverse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server