vmoranv/jshookmcp
A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.
📦 What is @jshookmcp/jshook?
A search‑first, profile‑aware reverse‑engineering workspace that runs as an MCP (Model‑Context‑Protocol) server. It lets AI agents (e.g., Claude Desktop, Cursor) interact with a rich toolbox for front‑end and binary analysis – from browser automation to WASM disassembly – without having to load thousands of tool schemas up‑front.
🎯 Core idea
- MCP server – exposes a uniform JSON‑RPC‑like interface that AI agents can call.
- Profiles – three token‑light tool sets (
search≈ 3 K tokens,workflow,full≈ 40 K tokens). Agents start with a tiny profile and “promote” as the task grows, keeping LLM token usage low. - Runtime recovery – streamable HTTP sessions restore browser attach state, coverage data, and activated domains after a disconnect, while keeping each client’s state isolated.
🔧 Main capabilities (high‑level)
| Area | What you can do |
|---|---|
| Browser automation | Drive Chromium or Camoufox via CDP, anti‑detection presets, explicit‑input CAPTCHA solving, HTTPS‑MITM, HTTP/2 frame building, pop‑up/download/permission interception. |
| Network interception | Auto‑generated HTTPS CA, WebSocket capture, GraphQL introspection, Burp Suite bridge. |
| JS analysis | LLM‑assisted deobfuscation, crypto routine detection, AST transforms, source‑map reconstruction, script extraction/replay. |
| WASM RE | wabt‑based disassembly (wasm2wat, wasm‑decompile, wasm‑objdump), Binaryen optimisation, section parsing, diff, obfuscation detection, instrumentation. |
| Binary & process forensics | Frida/Ghidra/IDA bridges, hardware breakpoints, PE introspection, memory read/write, cross‑reference graphs. |
| Android/APK | Static triage, manifest dump, apktool decode/build, jadx decompilation, DEX scanning, native lib listing, unidbg emulation. |
| Coordination | Task queue with progress/cancel, multi‑agent session handling, coverage reports. |
| Extensibility | Hot‑reload plugins, declarative YAML workflows, auto‑discovered domains (36 built‑in). |
📚 Typical use‑cases
| Scenario | How you would use jshook |
|---|---|
| Skim a minified bundle | search_tools → deobfuscate → search_in_scripts → understand_code (uses the core domain). |
| Solve a CAPTCHA | Launch Camoufox, take a screenshot, feed the image to an LLM for manual input, replay the solution. |
| Capture & replay an OAuth flow | Start the MITM proxy (proxy_start), collect requests, introspect GraphQL, replay the sequence. |
| Reverse a WASM crypto routine | Dump the module, disassemble, generate hooks, set a memory breakpoint. |
| Audit a suspicious APK | Run static triage, dump the manifest, decompile with jadx, scan DEX for suspicious patterns. |
| Recover a dropped browser session | Re‑connect via the streamable HTTP transport; the server restores the previous CDP attach and coverage state. |
| Build a custom workflow | List available extension workflows, run one as a single tool (run_extension_workflow). |
| Hook a live process | Use the Frida bridge to spawn/attach, install an interceptor, and enumerate functions. |
🚀 Quick start for an AI‑agent client
Add the server to your MCP client config (example for Claude Desktop / Cursor):
{
"mcpServers": {
"jshook": {
"command": "npx",
"args": ["-y", "@jshookmcp/jshook@latest"],
"env": {
"MCP_TOOL_PROFILE": "search",
"npm_config_omit": "optional"
}
}
}
}
The search profile loads only the minimal 3 K token metadata.
If you want several agents to share the heavy runtimes (browser, embeddings, etc.), start a shared daemon:
pnpm build
pnpm daemon # runs the Streamable HTTP server on 127.0.0.1:3000
Then point each client to http://127.0.0.1:3000/mcp. Each client still gets an isolated MCP session.
🏗️ Architecture at a glance
- Runtime registry – domains are discovered from
manifest.ts; adding a file creates a new domain automatically. - Lazy init – tool handlers are instantiated only on first call, keeping startup fast.
- Hybrid search –
search_toolsuses BM25 + optional vector ranking to find the right tool without loading the whole schema. - Tool annotations – every tool declares
readOnlyHint,destructiveHint,idempotentHint,openWorldHintfor safer agent orchestration. - Transport symmetry – both stdio and Streamable HTTP expose the exact same tool surface; the latter multiplexes sessions and restores state after reconnects.
📦 Building / running from source
# prerequisites
# Node 22.22.2+ pnpm 10.x
pnpm install # install deps (optional runtimes are omitted unless needed)
pnpm build # compile TypeScript
pnpm start # run the server (stdio mode)
# or
pnpm daemon # run the HTTP daemon
Additional scripts:
pnpm dev– watch‑mode development.pnpm check– lint, format, type‑check, and verify generated metadata.pnpm test/pnpm test:e2e– unit and end‑to‑end test suites.
📄 License
AGPL‑v3 (see LICENSE).
Bottom line: @jshookmcp/jshook is a full‑stack, extensible reverse‑engineering platform that can be driven by LLM agents through a lightweight MCP interface, offering everything from browser automation to low‑level binary analysis while keeping token usage under control.
Related
- Project
- Project
- Project
- Project
- Project