jshookmcp
Reverse-engineering workbench for web pages, JavaScript bundles, WASM, native processes and APKs
Local reverse-engineering toolkit for binaries, apps, websites and Android devices over MCP
By morluto (individual) TypeScript Local · stdio SecurityDeveloper tools
123 popularity score ★ 440k ↓ 482k/wk
Opens the app, which asks before it adds the server.
claude mcp add rea -- npx -y rea-agents@6.8.0 mcp{
"mcpServers": {
"rea": {
"command": "npx",
"args": [
"-y",
"rea-agents@6.8.0",
"mcp"
]
}
}
}{
"mcpServers": {
"rea": {
"command": "npx",
"args": [
"-y",
"rea-agents@6.8.0",
"mcp"
]
}
}
}{
"servers": {
"rea": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"rea-agents@6.8.0",
"mcp"
]
}
}
}[mcp_servers.rea]
command = "npx"
args = ["-y", "rea-agents@6.8.0", "mcp"]gemini mcp add --scope user rea npx -- -y rea-agents@6.8.0 mcpREA_ANALYSIS_PROVIDER |
Optional: Picks the native analysis provider (for example ghidra or kuna) instead of automatic choice. |
|---|---|
REA_KUNA_COMMAND |
Optional: Absolute path of the kuna executable you installed. |
REA_HOPPER_STARTUP_TIMEOUT_MS |
Optional: Hopper startup deadline in milliseconds; raise for large binaries. |
REA_JEB_MCP_TIMEOUT_MS |
Optional: Deadline for calls to a running JEB client's MCP endpoint (default address http://127.0.0.1:8425/mcp). |
REA_IDA_MCP_CONFIG |
Optional: Absolute path of the IDA MCP bridge configuration. |
REA_MCP_MAX_RESPONSE_BYTES |
Optional: Larger maximum response size, for clients with a bigger receive buffer (at least 10485760). |
REA_MCP_INPUT_SCHEMA_PROFILE |
Optional: Set to full to advertise complete tool input schemas instead of the 13 KiB compact ones. |
REA_MCP_OUTPUT_SCHEMA_PROFILE |
Optional: Set to off to leave output schemas out of the tool list, for clients that cap its size. |
| Set together: ghidra | |
GHIDRA_INSTALL_DIR |
Optional: Absolute path of an existing Ghidra 12.1.x installation. |
JAVA_HOME |
Optional: Absolute path of the JDK for Ghidra, if java is not on PATH. |
REA_GHIDRA_STARTUP_TIMEOUT_MS |
Optional: Ghidra startup deadline in milliseconds; raise for large binaries. |
REA (Reverse Engineer Anything) is a local MCP server and command-line tool, published on npm as rea-agents, for working out how existing software behaves when you don't have its source. Point an agent at a native executable, an Electron or JavaScript app, a .NET assembly, an Android APK, a Go or Rust binary, a WebAssembly file, a SQLite database, a firmware image or a live web page. It gets back pseudocode, assembly, strings, symbols, module graphs or network observations, and each finding is tied to recorded evidence and a list of open unknowns.
Native disassembly is handed to a program you already have. That can be Hopper, Ghidra, IDA or the Apache-2.0 Kuna decompiler, which REA calls through a kuna executable you point it at. GNU objdump and Rizin work as offline extras. Other targets need their own helpers, such as JADX for APKs, adb for Android devices, a Chrome-family browser for websites and Binwalk or Unblob for firmware. Some paths need nothing extra: static JavaScript, .NET, Go and Rust inspection, plus readers for PE import tables and Apple .ips crash reports. Linux kernel modules are read the same way.
It can also run and drive targets. You can capture a process in a terminal, record calls under LLDB, debug under GDB or Rizin on Linux, attach Frida with your own scripts, script browser and Electron sessions, and manage apps and files on an attached Android device. Recorded web API traffic can be turned into a replayable practice environment for agent training or evaluation. Evidence is kept per session and can be exported to a file and loaded again later.
The effect audit shipped in the package (dist/contracts/toolEffects.js) lists 230 tools, up from 208 in the previous release. The package also carries a CLI (rea) and a setup command that registers the server with your agents. The project asks that it be used only on software you own or are allowed to examine, and that you hold proper licences for commercial tools such as IDA or JEB.
| Runtime | Node.js 22.23+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
Node.js 22.x (22.23.4 or later), 24.x (24.22.1 or later) or 26.12.1+, with npm. SQLite inspection needs Node 24.15+ or 26+. Native binary analysis needs Hopper, Ghidra 12.1.x with JDK 21+, IDA, or Kuna installed separately. For Kuna, set REA_KUNA_COMMAND to the absolute path of the kuna executable. On Linux, install your distribution's procps or procps-ng package so a compatible ps is on PATH, or Ghidra, JADX, firmware and JavaScript analysis fail. Frida tools use the optional frida 17.23.2 npm dependency that npm installs alongside. REA installs none of the helper tools and no Frida server on devices.
Many target types are limited to particular hosts: ELF layout, EVM bytecode and recorded crashes need Linux x64; packet and signal recordings, firmware and process capture are Linux or Linux/macOS only. Ghidra on Windows is an experimental, read-only mode. Very large tool catalogs can exceed some providers' schema size caps (kimi-cli is named); a compact schema profile exists for that. Large binaries may need longer provider startup timeouts. Metadata edits made in Ghidra sessions are discarded on close. Features merged after the latest npm release are not yet in the package.
Suits developers and security researchers on Linux or macOS who already have Hopper, Ghidra, IDA or Kuna (or only need the JavaScript, .NET, Go, Rust and APK paths) and want an agent to inspect apps, binaries or web pages locally with the evidence kept alongside each finding. It runs on your machine with no account. It is a heavy install with over 200 tools and many optional external programs, and its debugging and Frida tools run code inside targets. Someone who only needs one disassembler's features may prefer that tool's own integration. REA's docs point to an optional native MCP bridge in IDA and to JEB's own MCP client, which REA can also connect to.
39 only read, 14 change things, 6 can delete or overwrite.
binary_sessionopen_binaryclose_binary deletesbinary_overviewanalyze_functionsearch_procedureslist_stringsfind_xrefs_to_namebuild_call_pathread_bytesannotate_native_function deletesset_addresses_names deletesinspect_binary_layoutinspect_native_load_imagetrace_dylib_resolutioninspect_go_binaryinspect_rust_binaryinspect_pe_importsinspect_apple_ipsinspect_kernel_moduleinspect_with_objdumpexecute_rizin_commandstart_gdb_session changesgdb_console changesinstrument_with_frida changesload_frida_script changesobserve_native_calls changesinspect_artifactextract_artifact changesproject_apple_application_graphinspect_wasm_artifactinspect_sqlite_databaseanalyze_javascript_applicationtrace_application_featurecompare_application_versionslist_electron_targetscapture_electron_scenario deletesinspect_web_pageanalyze_web_bundleobserve_web_sessioninspect_web_network_captureexport_environment_bundle changesdiscover_webmcp_toolsinspect_managed_artifactinspect_android_packageinspect_android_methodsearch_android_classeslist_adb_devicesinstall_adb_package changesuninstall_adb_package deletespush_adb_file changesstart_adb_app changesdecompile_jeb_itemextract_firmware changesinspect_recorded_crashcapture_process_scenario changesrecord_unknown changesexport_evidence_bundle deletesimport_evidence_bundle changes