JS Reverse MCP is a Model Context Protocol (MCP) server for JavaScript reverse engineering in a headed Chrome browser. Rather than mapping the Chrome DevTools API one-to-one, it reorganizes scripts, breakpoints, network traffic, WebSocket messages, browser state, and local file I/O into 24 tools sized for an agent that debugs, locates, saves, and reviews page behavior across several steps.
Tool output is shaped to guide the next step: listings stay short and scannable, detail output is bounded, long results are directed to a file, and a pending request is reported as pending so an agent does not wait for a response that will never arrive. Local files act as the workbench — save_script_source, list_network_requests(..., outputFile), and evaluate_script(..., localFilePath) move large scripts and binary payloads between the browser, the network layer, and disk instead of through the conversation.
Anti-detection is treated as a supporting capability for reaching the target page. The wrapper injects no page-level JavaScript and does not patch properties on Object; instead a separately maintained Patchright fork provides protocol-level adjustments (no Runtime.enable or Console.enable, evaluation in an isolated world, automation launch flags removed). A --cloak flag switches to the CloakBrowser binary, which applies source-level fingerprint patches covering navigator.webdriver, canvas, WebGL, audio, GPU, fonts, screen, WebRTC, and TLS, in a physically separate profile directory. Navigation-level measures apply in both modes: silent CDP navigation until a tool needs it, a Google referer on new pages, and a real viewport instead of the default 1280x720.
The default profile keeps cookies and local storage across sessions; --isolated uses a throwaway user-data directory, and clear_site_data clears only the current site so cookie generation and bot-defense initialization can be replayed. --browserUrl attaches to an already-running Chrome or a third-party fingerprint browser through its CDP endpoint, and --allowedRoots restricts which directories the server may read and write, rejecting file:, view-source:file:, and filesystem:file: pages while it is set. Node.js 20.19 or newer and a stable Chrome build are required.
Features
- Script analysis: list loaded scripts, search sources by string or regular expression, fetch source ranges, and save whole minified or WASM files to disk
- Breakpoints: set a breakpoint by searching code text, break on XHR or fetch by URL pattern, list and remove breakpoints
- Paused-state inspection: read the call stack and scope variables, evaluate in a call frame, and step over, into, or out with source context returned
- Network analysis: list requests, open one by id, export headers, bodies, and query data to a file, and read a request's JavaScript initiator stack
- WebSocket analysis: list connections, group and analyze message patterns, and fetch message detail
- Browser state: clear the current site's cookies, origin storage, and session storage, with global HTTP cache clearing as an explicit option
- Page control: select pages and frames, navigate, reload, go back or forward, click a strictly matched element, and take screenshots
- Stealth layers: a dedicated Patchright fork at the protocol layer by default, with CloakBrowser source-level fingerprint patches behind --cloak
- Persistent or throwaway profiles: logins survive by default, --isolated starts clean, and cloak mode uses its own separate profile
- Remote attachment: --browserUrl connects to a running Chrome or fingerprint browser over a CDP HTTP endpoint
- File-access limits: --allowedRoots confines reads and writes to named directories and resolves symlinks
- Routing evaluation: an offline check validates the tool list and server instructions against 30 tool-selection contracts, with an opt-in model-backed run
