jshookmcp

vmoranvAGPL-3.0活跃维护

面向 AI Agent 的逆向工程工作区,通过单个 MCP 服务器提供覆盖 36 个领域的 735 个工具,支持 JS 反混淆、Frida 调试和浏览器自动化。

A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.

v0.4.3发布于 2026-10-30 05:15 UTC2,108star +6 / 7 天465fork同步于 2026-11-10 23:46 UTC

怎么上手

由 README 提炼,执行前请确认
npx -y @jshookmcp/jshook@latest
硬件要求按 README 说明

README 未说明显存或 GPU 要求;运行环境为 Node.js 22.22.2+ 或 24.15+,浏览器自动化依赖 Chromium 与 Camoufox。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向 AI Agent 的前端逆向工程 MCP 服务器,用搜索优先的工具配置避免模型被海量 schema 淹没

面向 AI Agent 的逆向工程工作区,通过单个 MCP 服务器提供覆盖 36 个领域的 735 个工具,支持 JS 反混淆、Frida 调试和浏览器自动化。

核心能力

  • 按 search/workflow/full 三档 profile 逐级加载工具元数据
  • 用 search 元工具配合 BM25 与向量混合排序检索 736 个工具
  • 通过 CDP 驱动 Chromium 与 Camoufox,并支持反检测预设
  • 用 wabt 与 Binaryen 做 WASM 反汇编、反编译和优化
  • Streamable HTTP 断线后恢复已激活域与浏览器附着状态

容易踩的坑

默认配置用 npm_config_omit 跳过 ONNX、Z3、Binaryen、Camoufox、Playwright 等可选包,需要完整功能时要移除该变量;默认 stdio 模式下每个 MCP 宿主都会启动一个完整进程,多 Agent 共享资源需改用 pnpm build && pnpm daemon 启动 HTTP 守护进程;HTTP 端点默认绑定回环地址 127.0.0.1:3000/mcp,对外暴露前需设置 MCP_AUTH_TOKEN。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

2 个版本v0.4.3
  1. v0.4.3v0.4.3 — Runtime hardening最新正式版2026-10-30 · 2026-10-30 05:15 UTC

    Highlights

    • Includes runtime hardening for breakpoint condition evaluation.
    • Fixes QuickJS stack configuration for compatibility-layer parsing.

    The npm package was built by the GitHub Actions workflow and published with SLSA provenance: https://github.com/vmoranv/jshookmcp/actions/runs/40895558637

  2. v0.4.2v0.4.2 — 735 tools in one MCP server, ~3K tokens to start2026-10-10 · 2026-10-10 11:53 UTC
    查看更新说明

    v0.4.2

    735 tools across 36 domains, one MCP server — and it starts at ~3K tokens.

    This is the version that made it back onto the public registry after the dual-use policy change. Two earlier attempts (0.4.0, 0.4.1) were blocked by npm's automated review and are dead version numbers; 0.4.2 is the one that shipped.

    Dual-use compliance

    jshook is dual-use by design — it hooks processes, intercepts TLS, and drives browsers with anti-detection. That capability set is now declared rather than merely present:

    • package.json carries contentPolicy.class = "dual-use".
    • DISCLOSURE ships inside the tarball and covers the process/memory injection surface, which was previously not declared at all.
    • The postinstall lifecycle hook is gone. So is inject-dll.ps1 — a stub that declared OpenProcess / VirtualAllocEx / WriteProcessMemory / CreateRemoteThread and called none of them.
    • CI now fails the build if an install-time script or an injection helper reappears in the packed tarball.

    Since v0.3.5

    425 commits. The themes, rather than the changelog:

    Search quality. search_tools was rebuilt around a hybrid BM25 + vector retriever with an incremental embedding cache, a tuner with holdout verification, and a repaired feedback loop (the tracker had been split across two instances, so signals were being recorded and never read).

    Observability. OTLP export for spans and metrics, an anonymous install.id, and search telemetry — on by default, with a documented opt-out. Tool-argument shapes (key names only, never values) are captured on tool.execute spans.

    Binary instrumentation. Frida device support, with session-level device inheritance and remote/device-probe timeout knobs.

    Native emulator correctness. A run of ARM semantics fixes: BSL/BIT/BIF operand roles, ADRP page-base truncation, SQXTN2 upper-half placement, SM4EKEY lane windows, signed shift amounts.

    Process and memory. One MemoryManager shared across startMonitor / stopMonitor instead of two, plus escaping fixes in the Windows script builders.

    Platform. Electron fuse detection migrated to the v2 wire format; electron-fuse-handler follows.

    Context cost

    Measured on the built server, using the same 4-bytes-per-token estimate the runtime's TokenBudgetManager uses:

    profiletoolstools/list payload~tokens
    search87,527 B~1,882
    workflow360209,005 B~52,251
    full743435,820 B~108,955

    The full figure scales with the tool count — re-measure it when the catalog grows. The search figure does not.

    Install

    npx -y @jshookmcp/jshook@latest
    

    Node 22.22.2+ or 24.15+. AGPL-3.0.

    Docs: https://vmoranv.github.io/jshookmcp/

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    @jshookmcp/jshook

    License: AGPLv3 Node.js 22.22.2+ TypeScript MCP pnpm

    A search-first, profile-aware reverse-engineering workspace for AI agents.

    Hook the page, capture the network, deobfuscate the bundle, disassemble the WASM, instrument the process — and let one MCP server keep the whole attack surface in reach without drowning the model in schemas.

    English · 中文


    What makes jshook different

    Most MCP servers for JS analysis expose a handful of hand-rolled tools or wrap a single browser engine. jshook is closer to an operating system for front-end reverse engineering — 36 self-discovered domains, a search-first meta-tool that keeps token cost under control, and runtime recovery that survives broken pages and dropped sessions:

    • Search-first, profile-aware. The search profile loads about 3K tokens of tool metadata; the full profile exposes all 736 tools at around 109K tokens (measured 2026-10-10 — this figure scales with the tool count, so re-measure it when the catalog grows). Agents move between them as the task grows — search → workflow → full — instead of drowning in schemas from the first turn.
    • Runtime recovery and session isolation. Streamable HTTP sessions restore activated domains, browser attach state, and coverage state after reconnects; per-client browser-side state stays isolated so two agents cannot trample each other's CDP sessions.
    • Full-stack browser automation. Chromium and Camoufox via CDP with anti-detection, an explicit-input CAPTCHA solver (no built-in page/feature probing), a self-signed HTTPS interception CA on demand, and HTTP/2 frame building.
    • Real reverse engineering, not string searches. WASM disassembly via wabt (wasm2wat / wasm-decompile / wasm-objdump), Frida/Ghidra/IDA bridges, native FFI scanning, hardware breakpoints, PE introspection, GraphQL/Burp Suite proxy bridges, and AST transforms — not a single regex call wrapped as a tool.
    • Dynamic extensibility. Hot-reload plugins, declarative workflows, and auto-discovery keep the server growing without a redeploy.

    Capability overview

    A scan of what's in the box. Each row links to the detailed Capability overview below.

    AreaHighlights
    Tool profilessearch (~3K tokens, BM25 + hybrid vector ranking) · workflow (composite scripts) · full (all 736 tools)
    Browser automationChromium and Camoufox · CDP attach to existing targets · anti-detection presets · explicit-input CAPTCHA solver · popup, download, permission, and protocol interceptors
    Network interceptionHTTP/1.1 + HTTP/2 frame building · MITM proxy with auto-generated CA · WebSocket capture · GraphQL introspection helpers · Burp Suite bridge
    JS hooks and analysisLLM-powered deobfuscation · crypto routine detection · AST comprehension · source-map reconstruction · script/scriptlet extraction and replay
    WASM reverse engineeringwabt disassembly / C transpilation (wasm2wat / wasm-decompile / wasm-objdump / wasm2c) · Binaryen wasm-opt · pure-TS section parser · import/export listing · section-grouped string extraction with name-section recovery · function-level binary diff · obfuscation detection · function- and basic-block-level instrumentation
    Process and memory forensicsNative FFI scanning · cross-reference graphs · hardware breakpoints · PE introspection · live process attach · memory read/write with region guards
    Binary instrumentationFrida bridge · Ghidra and IDA bridges · syscall hooking · TLS keylog and session tooling · Mojo IPC analysis
    Android and APK analysisAPK static triage · manifest dump and query · apktool decode / build · jadx decompilation and code search · DEX scanning · native library listing · APK signing · unidbg emulation · runtime DEX dump
    Native runtimeNative emulator for foreign-architecture samples · platform introspection · Mojo IPC · Dart Inspector · ADB bridge for on-device traffic
    Encoding and transformURL/Base64/Hex/JWT/Protobuf encoders · AST transforms · streaming decode pipelines
    CoordinationBackground task queue with progress, cancellation, and async modes · multi-agent coordination · coverage reports
    Schema-first meta toolsdescribe_tool · call_tool with argument validation · coverage_report · search_tools
    Pluggable extension registryHot-reload plugins · declarative workflows · auto-discovered domains

    Use cases

    ScenarioWhat you doDomains involved
    Skim a minified bundlesearch_tools → deobfuscate → search_in_scripts → understand_codecore
    Reverse a CAPTCHA challengeDrive a Camoufox page → screenshot → solve with explicit input → replaybrowser, canvas
    Capture and replay an OAuth flowproxy_start (auto CA) → network_get_requests → graphql_introspect → graphql_replayproxy, network, graphql
    Reverse a WASM crypto routinewasm_dump → wasm_disassemble → generate_hooks → memory_breakpointwasm, binary-instrument, memory
    Triage a suspicious APKapk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_filebinary-instrument
    Recover a dropped browser sessionReconnect Streamable HTTP → restore activated domains and browser statebrowser, coordination
    Audit a Node process for credentialsprocess_list → memory_scan_filtered → binary_strings_extractprocess, memory, binary-instrument
    Build a custom workflowlist_extension_workflows → run_extension_workflowworkflow, extension-registry
    Hook a function in a live processfrida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functionsbinary-instrument

    Quick start

    No global install needed — add to your MCP client config and you're ready.

    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 npx.cmd absolute path if npx is not found.)

    This lightweight configuration skips optional ONNX, Z3, Binaryen, Camoufox, and Playwright packages. Remove npm_config_omit when those full-profile runtimes are required.

    Share one daemon across multiple agents

    The default stdio configuration starts one full jshook process per MCP host. To share the embedding model, browser runtime, and caches, start one local Streamable HTTP daemon:

    pnpm build
    pnpm daemon
    

    Vector search is on by default on every transport — a lightweight static model whose catalog embeddings persist to disk, loaded lazily and released when idle. Set SEARCH_VECTOR_ENABLED=false when lexical search is sufficient.

    Then point every MCP client at http://127.0.0.1:3000/mcp using its HTTP/URL server configuration. Each client receives its own MCP session and response route while heavyweight runtime resources remain in one process. Keep the default loopback bind; set MCP_AUTH_TOKEN before exposing the endpoint beyond localhost.

    Promote a profile as the task grows

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

    Switch MCP_TOOL_PROFILE to workflow once you start chaining composite scripts, or to full when you need every tool. coverage_report shows the active set on demand.


    Highlights

    • Profile ladder. Start in search (~3K tokens of metadata); promote to workflow when chaining composite scripts; escalate to full only when every tool is actually needed. coverage_report shows what's active on demand.
    • Meta tools. describe_tool returns the JSON Schema; call_tool validates arguments before invocation; every tool ships with readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
    • Browser automation. Chromium and Camoufox via CDP, attach to existing targets, anti-detection presets, popup/download/permission interceptors, explicit-input CAPTCHA solver, JS/CSS injection at three document phases, persisted coverage across reconnects.
    • Network interception. Auto-generated HTTPS interception CA, HTTP/1.1 + HTTP/2 frame building, WebSocket capture, GraphQL helpers, Burp Suite bridge — all on the same MCP tool surface.
    • Reverse engineering. wabt WASM disassembly (wasm2wat / wasm-decompile / wasm-objdump) and Binaryen wasm-opt, Frida/Ghidra/IDA bridges, hardware breakpoints, native FFI scanning, PE introspection, syscall hooking, AST transforms, source-map reconstruction.
    • Session recovery. Streamable HTTP transport restores activated domains, browser attach state, and coverage state after reconnects; browser-side state is isolated per client.
    • Plugins and workflows. Drop a directory, get a domain. Write a YAML pipeline, run it as one tool. The registry self-discovers.

    Transport and deployment

    The server supports two transports out of the box.

    TransportWhen to useNotes
    stdioDefault for Claude Desktop, Cursor, and other single-host clientsOne full process per MCP host; lightweight profile recommended
    Streamable HTTPMultiple agents sharing the embedding model, browser runtime, and cachesLoopback bind by default; set MCP_AUTH_TOKEN before exposing externally

    Both transports expose the same tool surface. coverage_report shows which domains are activated in each session — long-running sessions restore browser attach state, coverage state, and tool activations across reconnects.

    For production deployments see the Security and Production guide.


    Recent runtime notes

    • HTTP transport now multiplexes independent MCP sessions and restores runtime state after reconnects.
    • proxy_start auto-generates a local HTTPS interception CA when needed.
    • Browser CAPTCHA solving is now explicit-input driven: pass taskKind, siteKey, imageBase64, callbackName, and responseSelector as needed. Built-in widget/page signature probing is intentionally not used.

    Registry snapshot

    The built-in surface below is generated from the runtime registry and checked in CI.

    • Package version: 0.4.3
    • Built-in tools: 736
    • Domains: 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
    • Note: this snapshot is generated from the runtime registry; do not edit the counts by hand.

    View the complete Tool Reference ↗


    Architecture

    • Runtime registry — domains auto-discovered via manifest.ts; add a domain by creating one file.
    • Lazy initialization — handlers instantiated on first call, not at startup.
    • BM25 + vector search — search_tools meta-tool with hybrid ranking and adaptive weights.
    • MCP ToolAnnotations — every tool carries readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
    • Profile ladder — search (~3K tokens) → workflow (composite scripts) → full (all 736 tools).
    • Transport symmetry — stdio and Streamable HTTP expose the same surface; sessions are isolated per client.

    See the Architecture guide and Configuration reference for the canonical details.


    Build from source

    Requirements: 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
    

    Native helpers are bundled via pnpm build; on first run the server may download optional runtimes (ONNX, Z3, Binaryen, Camoufox, Playwright) depending on the profile.


    Project stats

    Activity


    License

    AGPLv3.