jshookmcp

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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add jshookmcp -- npx -y @jshookmcp/jshook@latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "jshookmcp": {
      "command": "npx",
      "args": [
        "-y",
        "@jshookmcp/jshook@latest"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "jshookmcp": {
      "command": "npx",
      "args": [
        "-y",
        "@jshookmcp/jshook@latest"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "jshookmcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@jshookmcp/jshook@latest"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.jshookmcp]
command = "npx"
args = ["-y", "@jshookmcp/jshook@latest"]
Gemini CLITerminal
gemini mcp add --scope user jshookmcp npx -- -y @jshookmcp/jshook@latest

Settings 12

MCP_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.

What it does

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.

What it needs

RuntimeNode.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.

Limits

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.

Who it suits

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.

Tools 49 of 735

search_tools
Find tools across all domains by keyword and meaning
activate_domain
Turn on a whole tool domain in the current session
describe_tool
Return the input schema of any tool
call_tool
Validate arguments and run a tool that is not loaded
coverage_report
Show which domains and tools are active
browser_launch
Start a Chromium or Camoufox browser
browser_attach
Attach to an already running browser over CDP
page_navigate
Open a URL in the current tab
page_click
Click an element
page_type
Type text into a field
page_screenshot
Capture a screenshot of the page
page_evaluate
Run JavaScript in the page
page_inject_script
Inject a script into the page
page_cookies
Read or set the page's cookies
stealth_inject
Apply anti-detection patches to the browser
captcha_vision_solve
Solve an image CAPTCHA from explicitly passed inputs
console_get_logs
Read the page's console output
get_all_scripts
List scripts loaded by the page
network_get_requests
List captured network requests
collect_code
Gather JavaScript from a target site
search_in_scripts
Search collected scripts by keyword or regex
deobfuscate
Deobfuscate and unpack a JavaScript bundle with webcrack
understand_code
Analyse code structure, behaviour and risk
detect_crypto
Spot crypto algorithms used in source
manage_hooks
Create, list and remove runtime JavaScript hooks
webpack_enumerate
List and search the page's webpack modules
js_deobfuscate_jsvmp
Recover logic from VM-protected JavaScript
analysis_security_scan
Static scan for hard-coded secrets, XSS sinks and weak crypto
analysis_data_flow
Trace tainted data from sources to sinks
proxy_start
Start the HTTPS interception proxy, creating a CA if needed
graphql_introspect
Run introspection against a GraphQL endpoint
graphql_replay
Replay a captured GraphQL request
wasm_dump
Dump a WebAssembly module from the page
wasm_disassemble
Disassemble a WebAssembly module
generate_hooks
Generate hooks for functions of interest
memory_breakpoint
Set a breakpoint on a memory address
process_list
List running processes
memory_scan_filtered
Scan process memory with filters
binary_strings_extract
Pull strings out of a binary
frida_spawn
Start a process under Frida
frida_attach_interceptor
Attach a Frida interceptor to a function
frida_run_script
Run a Frida script in the target
frida_enumerate_functions
List functions in a Frida-attached process
apk_static_triage
Quick static triage of an APK
apk_manifest_dump
Dump an APK's manifest
jadx_decompile
Decompile an APK with jadx
dex_scan_file
Scan a DEX file
list_extension_workflows
List available workflows
run_extension_workflow
Run a declared workflow as one step

Similar servers