JsHookMcp

El kit de herramientas de hook js que todo lo que necesitas

Documentación

@jshookmcp/jshook

@jshookmcp/jshook

License: AGPLv3 Node.js 22.22.2+ TypeScript MCP pnpm

Un espacio de trabajo de ingeniería inversa, centrado en la búsqueda y consciente del perfil, para agentes de IA.

Engancha la página, captura la red, desofusca el bundle, desensambla el WASM, instrumenta el proceso — y deja que un solo servidor MCP mantenga toda la superficie de ataque al alcance sin ahogar al modelo en esquemas.

English · 中文

Stars Forks Latest Release License

Node.js 22.22.2+ TypeScript strict MCP current

Qué hace diferente · Capacidades · Casos de uso · Aspectos destacados · Transporte · Registro · Arquitectura · Compilación

Documentación · Primeros pasos · Configuración · Referencia de herramientas

Sponsored by Swiftproxy

Patrocinado por Swiftproxy — Proxies residenciales premium para automatización web · Código de descuento del 10%: PROXY90


Qué hace diferente a jshook

La mayoría de los servidores MCP para análisis de JS exponen un puñado de herramientas hechas a mano o envuelven un único motor de navegador. jshook está más cerca de un sistema operativo para la ingeniería inversa de front-end — 36 dominios autodescubiertos, una meta-herramienta centrada en la búsqueda que mantiene el costo de tokens bajo control, y recuperación en tiempo de ejecución que sobrevive a páginas rotas y sesiones caídas:

  • Centrado en la búsqueda, consciente del perfil. El perfil search carga alrededor de 3K tokens de metadatos de herramientas; el perfil full expone las 735 herramientas completas con alrededor de 109K tokens (medido el 2026-10-10 — esta cifra escala con el número de herramientas, así que vuelve a medirla cuando el catálogo crezca). Los agentes se mueven entre ellos a medida que la tarea crece — search → workflow → full — en lugar de ahogarse en esquemas desde el primer turno.
  • Recuperación en tiempo de ejecución y aislamiento de sesión. Las sesiones HTTP transmisibles restauran los dominios activados, el estado de adjunto del navegador y el estado de cobertura después de reconexiones; el estado del lado del navegador por cliente permanece aislado para que dos agentes no puedan pisarse las sesiones CDP entre sí.
  • Automatización de navegador de pila completa. Chromium y Camoufox vía CDP con anti-detección, un solucionador de CAPTCHA de entrada explícita (sin sondeo de página/características integrado), una CA de intercepción HTTPS autofirmada bajo demanda, y construcción de tramas HTTP/2.
  • Ingeniería inversa real, no búsquedas de cadenas. Desensamblado WASM vía wabt (wasm2wat / wasm-decompile / wasm-objdump), puentes Frida/Ghidra/IDA, escaneo FFI nativo, puntos de interrupción de hardware, introspección PE, puentes proxy GraphQL/Burp Suite, y transformaciones AST — ni una sola llamada regex envuelta como herramienta.
  • Extensibilidad dinámica. Plugins con recarga en caliente, flujos de trabajo declarativos y autodescubrimiento mantienen el servidor creciendo sin necesidad de redesplegar.

Resumen de capacidades

Un vistazo a lo que hay en la caja. Cada fila enlaza al Resumen de capacidades detallado más abajo.

ÁreaAspectos destacados
Perfiles de herramientassearch (~3K tokens, ranking BM25 + vectorial híbrido) · workflow (scripts compuestos) · full (las 735 herramientas)
Automatización de navegadorChromium y Camoufox · adjunto CDP a objetivos existentes · ajustes preestablecidos de anti-detección · solucionador de CAPTCHA de entrada explícita · interceptores de ventanas emergentes, descargas, permisos y protocolo
Intercepción de redConstrucción de tramas HTTP/1.1 + HTTP/2 · proxy MITM con CA autogenerada · captura de WebSocket · ayudantes de introspección GraphQL · puente Burp Suite
Hooks JS y análisisDesofuscación impulsada por LLM · detección de rutinas criptográficas · comprensión AST · reconstrucción de source-map · extracción y reproducción de scripts/scriptlets
Ingeniería inversa WASMDesensamblado wabt / transpilación C (wasm2wat / wasm-decompile / wasm-objdump / wasm2c) · Binaryen wasm-opt · analizador de secciones puro en TS · listado de importaciones/exportaciones · extracción de cadenas agrupadas por sección con recuperación de tabla de nombres · diff binario a nivel de función · detección de ofuscación · instrumentación a nivel de función y bloque básico
Forense de procesos y memoriaEscaneo FFI nativo · grafos de referencias cruzadas · puntos de interrupción de hardware · introspección PE · adjunto a procesos en vivo · lectura/escritura de memoria con guardas de región
Instrumentación binariaPuente Frida · puentes Ghidra e IDA · hooking de syscalls · keylog TLS y herramientas de sesión · análisis Mojo IPC
Análisis de Android y APKTriage estático de APK · volcado y consulta de manifiesto · decodificación/compilación apktool · descompilación jadx y búsqueda de código · escaneo DEX · listado de librerías nativas · firma de APK · emulación unidbg · volcado DEX en tiempo de ejecución
Runtime nativoEmulador nativo para muestras de arquitectura extranjera · introspección de plataforma · Mojo IPC · Dart Inspector · puente ADB para tráfico en dispositivo
Codificación y transformaciónCodificadores URL/Base64/Hex/JWT/Protobuf · transformaciones AST · pipelines de decodificación en streaming
CoordinaciónCola de tareas en segundo plano con progreso, cancelación y modos asíncronos · coordinación multi-agente · informes de cobertura
Meta-herramientas schema-firstdescribe_tool · call_tool con validación de argumentos · coverage_report · search_tools
Registro de extensiones conectablesPlugins con recarga en caliente · flujos de trabajo declarativos · dominios autodescubiertos

Casos de uso

EscenarioQué hacesDominios involucrados
Hojear un bundle minificadosearch_tools → deobfuscate → search_in_scripts → understand_codecore
Revertir un desafío CAPTCHAConducir una página Camoufox → captura de pantalla → resolver con entrada explícita → reproducirbrowser, canvas
Capturar y reproducir un flujo OAuthproxy_start (CA automática) → network_get_requests → graphql_introspect → graphql_replayproxy, network, graphql
Revertir una rutina criptográfica WASMwasm_dump → wasm_disassemble → generate_hooks → memory_breakpointwasm, binary-instrument, memory
Hacer triage de un APK sospechosoapk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_filebinary-instrument
Recuperar una sesión de navegador caídaReconectar HTTP transmisible → restaurar dominios activados y estado del navegadorbrowser, coordination
Auditar un proceso Node en busca de credencialesprocess_list → memory_scan_filtered → binary_strings_extractprocess, memory, binary-instrument
Construir un flujo de trabajo personalizadolist_extension_workflows → run_extension_workflowworkflow, extension-registry
Enganchar una función en un proceso en vivofrida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functionsbinary-instrument

Inicio rápido

No se necesita instalación global — añádelo a la configuración de tu cliente MCP y listo.

Claude Desktop / Cursor (claude_desktop_config.json):

{
  "mcpServers": {
    "jshook": {
      "command": "npx",
      "args": ["-y", "@jshookmcp/jshook@latest"],
      "env": {
        "MCP_TOOL_PROFILE": "search",
        "npm_config_omit": "optional"
      }
    }
  }
}

(Windows: usa la ruta absoluta npx.cmd si npx no se encuentra.)

Esta configuración ligera omite los paquetes opcionales ONNX, Z3, Binaryen, Camoufox y Playwright. Elimina npm_config_omit cuando se requieran esos runtimes de perfil completo.

Compartir un daemon entre múltiples agentes

La configuración stdio predeterminada inicia un proceso jshook completo por host MCP. Para compartir el modelo de embeddings, el runtime del navegador y las cachés, inicia un daemon HTTP transmisible local:

pnpm build
pnpm daemon

La búsqueda vectorial está desactivada por defecto para procesos stdio por cliente y activada (carga diferida) para el daemon HTTP compartido. Establece SEARCH_VECTOR_ENABLED=false cuando la búsqueda léxica sea suficiente.

Luego apunta cada cliente MCP a http://127.0.0.1:3000/mcp usando su configuración de servidor HTTP/URL. Cada cliente recibe su propia sesión MCP y ruta de respuesta mientras los recursos de runtime pesados permanecen en un solo proceso. Mantén el enlace de loopback predeterminado; establece MCP_AUTH_TOKEN antes de exponer el endpoint más allá de localhost.

Promover un perfil a medida que la tarea crece

{
  "env": {
    "MCP_TOOL_PROFILE": "search"     // start here, ~3K tokens of metadata
  }
}

Cambia MCP_TOOL_PROFILE a workflow una vez que empieces a encadenar scripts compuestos, o a full cuando necesites todas las herramientas. coverage_report muestra el conjunto activo bajo demanda.


Aspectos destacados

  • Escalera de perfiles. Comienza en search (~3K tokens de metadatos); promueve a workflow al encadenar scripts compuestos; escala a full solo cuando cada herramienta sea realmente necesaria. coverage_report muestra lo que está activo bajo demanda.
  • Meta-herramientas. describe_tool devuelve el JSON Schema; call_tool valida argumentos antes de la invocación; cada herramienta incluye readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
  • Automatización de navegador. Chromium y Camoufox vía CDP, adjunto a objetivos existentes, ajustes preestablecidos de anti-detección, interceptores de ventanas emergentes/descargas/permisos, solucionador de CAPTCHA de entrada explícita, inyección JS/CSS en tres fases del documento, cobertura persistente entre reconexiones.
  • Intercepción de red. CA de intercepción HTTPS autogenerada, construcción de tramas HTTP/1.1 + HTTP/2, captura de WebSocket, ayudantes GraphQL, puente Burp Suite — todo en la misma superficie de herramientas MCP.
  • Ingeniería inversa. Desensamblado WASM wabt (wasm2wat / wasm-decompile / wasm-objdump) y Binaryen wasm-opt, puentes Frida/Ghidra/IDA, puntos de interrupción de hardware, escaneo FFI nativo, introspección PE, hooking de syscalls, transformaciones AST, reconstrucción de source-map.
  • Recuperación de sesión. El transporte HTTP transmisible restaura dominios activados, estado de adjunto del navegador y estado de cobertura después de reconexiones; el estado del lado del navegador está aislado por cliente.
  • Plugins y flujos de trabajo. Coloca un directorio, obtén un dominio. Escribe un pipeline YAML, ejecútalo como una herramienta. El registro se autodescubre.

Transporte y despliegue

El servidor soporta dos transportes listos para usar.

TransporteCuándo usarloNotas
stdioPredeterminado para Claude Desktop, Cursor y otros clientes de un solo hostUn proceso completo por host MCP; se recomienda el perfil ligero
HTTP transmisibleMúltiples agentes compartiendo el modelo de embeddings, el runtime del navegador y las cachésEnlace de loopback por defecto; establece MCP_AUTH_TOKEN antes de exponer externamente

Ambos transportes exponen la misma superficie de herramientas. coverage_report muestra qué dominios están activados en cada sesión — las sesiones de larga duración restauran el estado de adjunto del navegador, el estado de cobertura y las activaciones de herramientas entre reconexiones.

Para despliegues de producción consulta la Guía de seguridad y producción.


Notas recientes del runtime

  • El transporte HTTP ahora multiplexa sesiones MCP independientes y restaura el estado del runtime después de reconexiones.
  • proxy_start autogenera una CA de intercepción HTTPS local cuando es necesario.
  • La resolución de CAPTCHA del navegador ahora está impulsada por entrada explícita: pasa taskKind, siteKey, imageBase64, callbackName y responseSelector según sea necesario. El sondeo integrado de firmas de widgets/páginas no se utiliza intencionalmente.

Instantánea del registro

La superficie integrada a continuación se genera a partir del registro del runtime y se verifica en CI.

  • Versión del paquete: 0.4.2
  • Herramientas integradas: 735
  • Dominios: adb-bridge, binary-instrument, browser, canvas, coordination, core, cross-domain, dart-inspector, debugger, encoding, exploit-dev, extension-registry, graphql, instrumentation, maintenance, memory, mojo-ipc, native-bridge, native-emulator, network, platform, process, protocol-analysis, proxy, session, sourcemap, streaming, syscall-hook, tasks, tls-inspector, trace, transform, v8-inspector, wasm, webgpu, workflow
  • Nota: esta instantánea se genera desde el registro en tiempo de ejecución; no edites los recuentos manualmente.

Ver la Referencia completa de herramientas ↗


Arquitectura

  • Registro en tiempo de ejecución — dominios auto-descubiertos mediante manifest.ts; agrega un dominio creando un archivo.
  • Inicialización diferida — los manejadores se instancian en la primera llamada, no al inicio.
  • Búsqueda BM25 + vectorial — search_tools meta-herramienta con clasificación híbrida y pesos adaptativos.
  • MCP ToolAnnotations — cada herramienta lleva readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
  • Escalera de perfiles — search (~3K tokens) → workflow (scripts compuestos) → full (las 735 herramientas).
  • Simetría de transporte — stdio y Streamable HTTP exponen la misma superficie; las sesiones están aisladas por cliente.

Consulta la Guía de arquitectura y la Referencia de configuración para los detalles canónicos.


Compilar desde el código fuente

Requisitos: Node.js 22.22.2+, pnpm 10.x.

pnpm install
pnpm build
pnpm start           # run the built server from dist/
pnpm dev             # run from source under tsx watch
pnpm check           # drift guards (metadata + openapi + domain + event contracts) + lint + format check + typecheck + unit tests
pnpm test            # Vitest unit suites
pnpm test:e2e        # end-to-end browser/tooling suites
pnpm daemon          # run the Streamable HTTP daemon after build

Los ayudantes nativos se agrupan mediante pnpm build; en la primera ejecución, el servidor puede descargar tiempos de ejecución opcionales (ONNX, Z3, Binaryen, Camoufox, Playwright) según el perfil.


Estadísticas del proyecto


Licencia

AGPLv3.