Jshookmcp

io.github.vmoranv由 GitHub 帳號 vmoranv 發布v0.4.2更新於 Oct 24, 2026

Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.

概覽

AI 產生的概覽

以搜尋為先的逆向工程工作台,為 AI 助理提供 735 個工具,用來掛鉤頁面、擷取網路流量、反混淆 JS、反組譯 WASM 與插樁行程。

可以做什麼
  • 搜尋與呼叫工具:具混合排序的搜尋優先中繼工具、Schema 查詢、參數驗證呼叫與覆蓋率報告,涵蓋 36 個領域。
  • 驅動瀏覽器並攔截流量:透過 CDP 控制 Chromium 與 Camoufox、反偵測預設、自動產生 CA 的 MITM 代理、WebSocket 擷取、GraphQL 與 Burp 橋接。
  • 分析 JavaScript:反混淆、加密例行偵測、AST 理解、source map 重建、腳本擷取與重播。
  • 逆向 WASM 與二進位檔:wabt 反組譯、Binaryen 最佳化、Frida/Ghidra/IDA 橋接、硬體斷點、記憶體讀寫、PE 解析。
  • 分析 Android 安裝檔:APK 靜態初篩、清單匯出、apktool 與 jadx 反編譯、DEX 掃描、APK 簽章。
  • 編碼、轉換與協同:URL/Base64/Hex/JWT/Protobuf 編解碼、AST 轉換、背景任務佇列與多代理協同。
適用情境
適合需要逆向前端程式碼、混淆包、WASM 模組、行動應用或執行中行程的情況,並希望在同一個助理工作階段中同時完成瀏覽器自動化、網路擷取與二進位分析。對象是資安研究人員與開發者的分析工作,而非一般瀏覽。
執行需求
透過 npm 套件以 stdio 在本機執行,通常以 npx 啟動;從原始碼建置需要 Node.js 22.22.2+ 與 pnpm 10.x。首次執行可能下載選用執行環境(ONNX、Z3、Binaryen、Camoufox、Playwright)。選用的 Streamable HTTP 守護程式預設綁定回送位址,對外開放前需設定 MCP_AUTH_TOKEN;MCP_TOOL_PROFILE 選擇 search、workflow 或 full 工具集。
安裝前請注意
full 設定會公開全部 735 個工具,中繼資料約 109K token,建議從 search 設定開始。工具包含記憶體讀寫、行程附加、Frida 與除錯器插樁、含自建 CA 的代理攔截以及 APK 簽章,可能修改或擷取本機與已連線裝置上的資料。HTTP 守護程式應維持回送綁定,對外開放前設定 MCP_AUTH_TOKEN;驗證碼求解僅接受明確輸入。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Jshookmcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[@jshookmcp/jshook]

@jshookmcp/jshook

[License: AGPLv3] [Node.js 22.22.2+] [TypeScript] [MCP] [pnpm]

[vmoranv%2Fjshookmcp | Trendshift]

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 · 中文

[Stars] [Forks] [Latest Release] [License]

[Node.js 22.22.2+] [TypeScript strict] [MCP current]

What's different · Capabilities · Use cases · Highlights · Transport · Registry · Architecture · Build

Documentation · Getting Started · Configuration · Tool Reference


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

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:

bash
pnpm buildpnpm 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

jsonc
{  "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.

bash
pnpm installpnpm buildpnpm start           # run the built server from dist/pnpm dev             # run from source under tsx watchpnpm check           # drift guards (metadata + openapi + domain + event contracts) + lint + format check + typecheck + unit testspnpm test            # Vitest unit suitespnpm test:e2e        # end-to-end browser/tooling suitespnpm 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


License

AGPLv3.

來源:README.md,提交 7d0f7ea

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.4.2最新Oct 10, 2026
  2. v0.3.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分