JsHookMcp
O kit de ferramentas js hook que você precisa
Documentação
@jshookmcp/jshook
Um workspace de engenharia reversa focado em busca e ciente de perfil para agentes de IA.
Aplique o hook na página, capture a rede, desofusque o bundle, desmonte o WASM, instrumente o processo — e deixe um único servidor MCP manter toda a superfície de ataque ao alcance sem afogar o modelo em schemas.
English · 中文
O que é diferente · Capacidades · Casos de uso · Destaques · Transporte · Registro · Arquitetura · Build
Documentação · Primeiros passos · Configuração · Referência de ferramentas
Patrocinado por Swiftproxy
— Proxies residenciais premium para automação web · Código de desconto de 10%: PROXY90
O que torna o jshook diferente
A maioria dos servidores MCP para análise de JS expõe um punhado de ferramentas artesanais ou envolve um único mecanismo de navegador. O jshook está mais próximo de um sistema operacional para engenharia reversa de front-end — 36 domínios autodescobertos, uma meta-ferramenta focada em busca que mantém o custo de tokens sob controle e recuperação em tempo de execução que sobrevive a páginas quebradas e sessões perdidas:
- Focado em busca, ciente de perfil. O perfil
searchcarrega cerca de 3K tokens de metadados de ferramentas; o perfilfullexpõe todas as 735 ferramentas em cerca de 109K tokens (medido em 2026-10-10 — esse número escala com a quantidade de ferramentas, então meça novamente quando o catálogo crescer). Os agentes alternam entre eles conforme a tarefa cresce —search→workflow→full— em vez de se afogarem em schemas desde o primeiro turno. - Recuperação em tempo de execução e isolamento de sessão. Sessões HTTP Streamable restauram domínios ativados, estado de anexação do navegador e estado de cobertura após reconexões; o estado do lado do navegador por cliente permanece isolado para que dois agentes não atropelem as sessões CDP um do outro.
- Automação de navegador full-stack. Chromium e Camoufox via CDP com anti-detecção, um solucionador de CAPTCHA de entrada explícita (sem sondagem de página/recurso embutida), uma CA de interceptação HTTPS autoassinada sob demanda e construção de quadros HTTP/2.
- Engenharia reversa real, não buscas de strings. Desmontagem WASM via wabt (
wasm2wat/wasm-decompile/wasm-objdump), pontes Frida/Ghidra/IDA, varredura FFI nativa, breakpoints de hardware, introspecção PE, pontes de proxy GraphQL/Burp Suite e transformações AST — não uma única chamada regex disfarçada de ferramenta. - Extensibilidade dinâmica. Plugins com hot-reload, fluxos de trabalho declarativos e autodescoberta mantêm o servidor crescendo sem reimplantação.
Visão geral das capacidades
Uma varredura do que está na caixa. Cada linha aponta para a Visão geral das capacidades detalhada abaixo.
| Área | Destaques |
|---|---|
| Perfis de ferramentas | search (~3K tokens, classificação BM25 + vetorial híbrida) · workflow (scripts compostos) · full (todas as 735 ferramentas) |
| Automação de navegador | Chromium e Camoufox · anexação CDP a alvos existentes · predefinições de anti-detecção · solucionador de CAPTCHA de entrada explícita · interceptores de popup, download, permissão e protocolo |
| Interceptação de rede | Construção de quadros HTTP/1.1 + HTTP/2 · proxy MITM com CA gerada automaticamente · captura WebSocket · auxiliares de introspecção GraphQL · ponte Burp Suite |
| Hooks e análise JS | Desofuscação com LLM · detecção de rotinas criptográficas · compreensão AST · reconstrução de source-map · extração e reprodução de script/scriptlet |
| Engenharia reversa WASM | Desmontagem wabt / transpilação C (wasm2wat / wasm-decompile / wasm-objdump / wasm2c) · Binaryen wasm-opt · parser de seção puro em TS · listagem de import/export · extração de strings agrupadas por seção com recuperação de tabela de nomes · diff binário em nível de função · detecção de ofuscação · instrumentação em nível de função e bloco básico |
| Forense de processo e memória | Varredura FFI nativa · grafos de referência cruzada · breakpoints de hardware · introspecção PE · anexação a processo ativo · leitura/escrita de memória com guardas de região |
| Instrumentação binária | Ponte Frida · pontes Ghidra e IDA · hooking de syscalls · keylog TLS e ferramentas de sessão · análise Mojo IPC |
| Análise Android e APK | Triagem estática de APK · dump e consulta de manifest · decodificação/build apktool · descompilação jadx e busca de código · varredura DEX · listagem de bibliotecas nativas · assinatura de APK · emulação unidbg · dump DEX em tempo de execução |
| Runtime nativo | Emulador nativo para amostras de arquitetura estrangeira · introspecção de plataforma · Mojo IPC · Dart Inspector · ponte ADB para tráfego no dispositivo |
| Codificação e transformação | Codificadores URL/Base64/Hex/JWT/Protobuf · transformações AST · pipelines de decodificação em streaming |
| Coordenação | Fila de tarefas em segundo plano com progresso, cancelamento e modos assíncronos · coordenação multiagente · relatórios de cobertura |
| Meta-ferramentas schema-first | describe_tool · call_tool com validação de argumentos · coverage_report · search_tools |
| Registro de extensão plugável | Plugins com hot-reload · fluxos de trabalho declarativos · domínios autodescobertos |
Casos de uso
| Cenário | O que você faz | Domínios envolvidos |
|---|---|---|
| Examinar um bundle minificado | search_tools → deobfuscate → search_in_scripts → understand_code | core |
| Reverter um desafio CAPTCHA | Dirigir uma página Camoufox → captura de tela → resolver com entrada explícita → reproduzir | browser, canvas |
| Capturar e reproduzir um fluxo OAuth | proxy_start (CA automática) → network_get_requests → graphql_introspect → graphql_replay | proxy, network, graphql |
| Reverter uma rotina criptográfica WASM | wasm_dump → wasm_disassemble → generate_hooks → memory_breakpoint | wasm, binary-instrument, memory |
| Triar um APK suspeito | apk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_file | binary-instrument |
| Recuperar uma sessão de navegador perdida | Reconectar HTTP Streamable → restaurar domínios ativados e estado do navegador | browser, coordination |
| Auditar um processo Node em busca de credenciais | process_list → memory_scan_filtered → binary_strings_extract | process, memory, binary-instrument |
| Construir um fluxo de trabalho personalizado | list_extension_workflows → run_extension_workflow | workflow, extension-registry |
| Aplicar hook em uma função em um processo ativo | frida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functions | binary-instrument |
Início rápido
Sem necessidade de instalação global — adicione à configuração do seu cliente MCP e pronto.
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: use o caminho absoluto npx.cmd se npx não for encontrado.)
Esta configuração leve pula os pacotes opcionais ONNX, Z3, Binaryen, Camoufox e Playwright.
Remova npm_config_omit quando esses runtimes de perfil completo forem necessários.
Compartilhe um daemon entre vários agentes
A configuração padrão stdio inicia um processo jshook completo por host MCP. Para compartilhar o modelo de embeddings, o runtime do navegador e os caches, inicie um daemon HTTP Streamable local:
pnpm build
pnpm daemon
A busca vetorial fica desativada por padrão para processos stdio por cliente e ativada (carregamento preguiçoso) para o
daemon HTTP compartilhado. Defina SEARCH_VECTOR_ENABLED=false quando a busca lexical for suficiente.
Em seguida, aponte cada cliente MCP para http://127.0.0.1:3000/mcp usando a configuração de servidor HTTP/URL.
Cada cliente recebe sua própria sessão MCP e rota de resposta enquanto os recursos
de runtime pesados permanecem em um único processo. Mantenha o bind de loopback padrão; defina MCP_AUTH_TOKEN
antes de expor o endpoint além do localhost.
Promova um perfil conforme a tarefa cresce
{
"env": {
"MCP_TOOL_PROFILE": "search" // start here, ~3K tokens of metadata
}
}
Alterne MCP_TOOL_PROFILE para workflow quando começar a encadear scripts compostos, ou para full
quando precisar de todas as ferramentas. coverage_report mostra o conjunto ativo sob demanda.
Destaques
- Escada de perfis. Comece em
search(~3K tokens de metadados); promova paraworkflowao encadear scripts compostos; escale parafullsomente quando todas as ferramentas forem realmente necessárias.coverage_reportmostra o que está ativo sob demanda. - Meta-ferramentas.
describe_toolretorna o JSON Schema;call_toolvalida argumentos antes da invocação; toda ferramenta vem comreadOnlyHint/destructiveHint/idempotentHint/openWorldHint. - Automação de navegador. Chromium e Camoufox via CDP, anexação a alvos existentes, predefinições de anti-detecção, interceptores de popup/download/permissão, solucionador de CAPTCHA de entrada explícita, injeção JS/CSS em três fases do documento, cobertura persistida entre reconexões.
- Interceptação de rede. CA de interceptação HTTPS gerada automaticamente, construção de quadros HTTP/1.1 + HTTP/2, captura WebSocket, auxiliares GraphQL, ponte Burp Suite — tudo na mesma superfície de ferramentas MCP.
- Engenharia reversa. Desmontagem WASM wabt (
wasm2wat/wasm-decompile/wasm-objdump) e Binaryenwasm-opt, pontes Frida/Ghidra/IDA, breakpoints de hardware, varredura FFI nativa, introspecção PE, hooking de syscalls, transformações AST, reconstrução de source-map. - Recuperação de sessão. O transporte HTTP Streamable restaura domínios ativados, estado de anexação do navegador e estado de cobertura após reconexões; o estado do lado do navegador é isolado por cliente.
- Plugins e fluxos de trabalho. Coloque um diretório, ganhe um domínio. Escreva um pipeline YAML, execute-o como uma ferramenta. O registro se autodescobre.
Transporte e implantação
O servidor suporta dois transportes prontos para uso.
| Transporte | Quando usar | Notas |
|---|---|---|
| stdio | Padrão para Claude Desktop, Cursor e outros clientes de host único | Um processo completo por host MCP; perfil leve recomendado |
| HTTP Streamable | Vários agentes compartilhando o modelo de embeddings, o runtime do navegador e os caches | Bind de loopback por padrão; defina MCP_AUTH_TOKEN antes de expor externamente |
Ambos os transportes expõem a mesma superfície de ferramentas. coverage_report mostra quais domínios estão
ativados em cada sessão — sessões de longa duração restauram o estado de anexação do navegador, o estado de cobertura
e as ativações de ferramentas entre reconexões.
Para implantações de produção, consulte o Guia de segurança e produção.
Notas recentes de runtime
- O transporte HTTP agora multiplexa sessões MCP independentes e restaura o estado de runtime após reconexões.
proxy_startgera automaticamente uma CA de interceptação HTTPS local quando necessário.- A resolução de CAPTCHA no navegador agora é orientada por entrada explícita: passe
taskKind,siteKey,imageBase64,callbackNameeresponseSelectorconforme necessário. A sondagem de assinatura de widget/página embutida não é usada intencionalmente.
Snapshot do registro
A superfície embutida abaixo é gerada a partir do registro de runtime e verificada no CI.
- Versão do pacote:
0.4.2 - Ferramentas integradas:
735 - Domínios:
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 - Observação: este snapshot é gerado a partir do registro em tempo de execução; não edite as contagens manualmente.
Arquitetura
- Registro em tempo de execução — domínios descobertos automaticamente via
manifest.ts; adicione um domínio criando um arquivo. - Inicialização preguiçosa — manipuladores instanciados na primeira chamada, não na inicialização.
- Busca BM25 + vetorial —
search_toolsmeta-ferramenta com ranqueamento híbrido e pesos adaptativos. - MCP
ToolAnnotations— toda ferramenta carregareadOnlyHint/destructiveHint/idempotentHint/openWorldHint. - Escada de perfis —
search(~3K tokens) →workflow(scripts compostos) →full(todas as 735 ferramentas). - Simetria de transporte — stdio e Streamable HTTP expõem a mesma superfície; sessões são isoladas por cliente.
Consulte o Guia de Arquitetura e a Referência de Configuração para os detalhes canônicos.
Compilar a partir do código-fonte
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
Os auxiliares nativos são empacotados via pnpm build; na primeira execução, o servidor pode baixar
runtimes opcionais (ONNX, Z3, Binaryen, Camoufox, Playwright) dependendo do perfil.