JS Reverse MCP
Debug and reverse-engineer a web page's JavaScript in a visible Chrome, with breakpoints and network capture
Reverse-engineering workbench for web pages, JavaScript bundles, WASM, native processes and APKs
By vmoranv (individual) TypeScript Local · stdio SecurityBrowser automationDeveloper tools
74 popularity score ★ 2.1k ↓ 1.3k/wk
Opens the app, which asks before it adds the server.
claude mcp add jshookmcp -- npx -y @jshookmcp/jshook@latest{
"mcpServers": {
"jshookmcp": {
"command": "npx",
"args": [
"-y",
"@jshookmcp/jshook@latest"
]
}
}
}{
"mcpServers": {
"jshookmcp": {
"command": "npx",
"args": [
"-y",
"@jshookmcp/jshook@latest"
]
}
}
}{
"servers": {
"jshookmcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@jshookmcp/jshook@latest"
]
}
}
}[mcp_servers.jshookmcp]
command = "npx"
args = ["-y", "@jshookmcp/jshook@latest"]gemini mcp add --scope user jshookmcp npx -- -y @jshookmcp/jshook@latestMCP_TOOL_PROFILE |
Optional: Tool profile: search (default, 8 meta tools at start), workflow or full. |
|---|---|
npm_config_omit |
Optional: Set to optional to skip ONNX, Z3, Binaryen, Camoufox and Playwright packages. |
PUPPETEER_HEADLESS |
Optional: Run the browser headless; false by default. |
PUPPETEER_EXECUTABLE_PATH |
Optional: Path to the browser to launch. |
MCP_TOOL_DOMAINS |
Optional: Domains to enable; overrides MCP_TOOL_PROFILE. |
MCP_TRANSPORT |
Optional: stdio (default) or http. |
MCP_AUTH_TOKEN |
Optional: Bearer token for HTTP mode; needed before binding beyond localhost. |
SEARCH_VECTOR_ENABLED |
Optional: Vector tool search; off for stdio, on for the HTTP daemon by default. |
EXTENSION_REGISTRY_BASE_URL |
Optional: Extension registry address; extension install tools fail without it. |
GHIDRA_BRIDGE_URL |
Optional: Ghidra bridge endpoint, http://127.0.0.1:18080 by default. |
IDA_BRIDGE_URL |
Optional: IDA bridge endpoint, http://127.0.0.1:18081 by default. |
BURP_MCP_SSE_URL |
Optional: Burp Suite MCP SSE bridge, http://127.0.0.1:9876/sse by default. |
jshookmcp (published on npm as @jshookmcp/jshook) gives an assistant a large toolkit for taking apart front-end and native software. It drives Chromium or Camoufox over the Chrome DevTools Protocol, captures and replays network traffic, runs a local HTTPS man-in-the-middle proxy with its own generated certificate authority, deobfuscates and unpacks JavaScript bundles, disassembles WebAssembly, and reaches into running processes for memory scans, hooks and breakpoints. It also bridges to outside tools such as Frida, Ghidra, IDA and Burp Suite, and covers Android APK triage, decompilation and emulation of ARM64 shared libraries.
Version 0.4.2 registers 735 tools in 36 domains. To keep the tool list from swamping the model, it starts in the `search` profile by default, which registers only 8 meta tools at start-up (according to its configuration reference); the assistant finds tools with `search_tools` and turns on whole domains with `activate_domain` or runs a tool through `call_tool`. Setting `MCP_TOOL_PROFILE` to `workflow` or `full` loads more up front; the README puts the full set at about 109K tokens of tool metadata.
It runs over stdio by default, one process per client. It can also run as a shared Streamable HTTP daemon on 127.0.0.1:3000/mcp, which several agents can use at once with separate sessions. It suits security researchers, CTF players and people studying how a web app, game or mobile app works.
| Runtime | Node.js 22+ |
|---|
Node.js 22.22.2 or later (or 24.15+), run through npx. Browser tools need a Chromium browser (point `PUPPETEER_EXECUTABLE_PATH` at one if needed); Camoufox, Playwright, ONNX, Z3 and Binaryen are optional packages that the README's sample config skips with `npm_config_omit=optional`. The Frida, Ghidra, IDA and Burp Suite bridges need those programs installed and their bridge running separately. The shared HTTP daemon needs a clone of the repo built with pnpm 10.
Its security guide says process and memory tools work best on Windows; on Linux and macOS it points users to browser hooks, network capture, workflows and bridge-based analysis instead. `browse_extension_registry` and `install_extension` return an error unless `EXTENSION_REGISTRY_BASE_URL` is set (configuration reference). CAPTCHA tools do not detect a widget on their own: the caller passes values such as `taskKind` and `siteKey`, and the default provider is `manual`. In HTTP mode, requests are limited to 60 per minute by default, and binding beyond localhost requires `MCP_AUTH_TOKEN`. Its docs are mostly in Chinese.
It suits security researchers and reverse engineers who want one local server that covers the browser, network, bundle, WASM and native layers, and who are prepared to install extra tools for the deeper features. Its process memory, injection and MITM proxy tools reach well beyond a browser, so it is more than you need if you only want to automate pages or take screenshots; a browser-only server is a smaller install for that. It is a third-party project, not tied to any vendor, and its AGPL-3.0 licence matters if you plan to ship changes to it.
search_toolsactivate_domaindescribe_toolcall_toolcoverage_reportbrowser_launchbrowser_attachpage_navigatepage_clickpage_typepage_screenshotpage_evaluatepage_inject_scriptpage_cookiesstealth_injectcaptcha_vision_solveconsole_get_logsget_all_scriptsnetwork_get_requestscollect_codesearch_in_scriptsdeobfuscateunderstand_codedetect_cryptomanage_hookswebpack_enumeratejs_deobfuscate_jsvmpanalysis_security_scananalysis_data_flowproxy_startgraphql_introspectgraphql_replaywasm_dumpwasm_disassemblegenerate_hooksmemory_breakpointprocess_listmemory_scan_filteredbinary_strings_extractfrida_spawnfrida_attach_interceptorfrida_run_scriptfrida_enumerate_functionsapk_static_triageapk_manifest_dumpjadx_decompiledex_scan_filelist_extension_workflowsrun_extension_workflow