JS Reverse MCP
Continuous browser-side JavaScript debugging and evidence capture for AI coding assistants.
- Source repo
- zhizhuodemao/js-reverse-mcp
- Stars
- ★ 3k
- Last updated
- 1mo ago
- License
- Apache-2.0
- Primary language
- TypeScript
- FA score
- 82/100 · Good
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code
- Cost
- Free, no paid service needed
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A security researcher or frontend analyst needs to find encryption, signing, or sensor logic inside minified scripts and break on matching source text.
- Not a fit if
- Teams needing a headless or fully hosted browser
- Users who cannot install Node.js 20.19+ and stable Chrome
- Anyone debugging sensitive pages without browser isolation
- Source review
- 82/100 · Good
What does this agent do, and when should you use it?
JS Reverse MCP is a JavaScript reverse-engineering MCP server that exposes headed Chrome debugging, breakpoints, network inspection, WebSocket analysis, and browser-state controls to AI coding assistants. Instead of mirroring Chrome DevTools menus, it packages Chrome DevTools Protocol and Patchright behavior into 24 tools designed for sequential agent decisions. Its default execution model uses the installed Google Chrome, a visible window, a persistent profile, and Patchright protocol-level stealth; an optional CloakBrowser mode adds source-level fingerprint patches for more heavily protected sites. Results can be returned through MCP or exported as script source, raw request data, and binary material for subsequent local analysis. It runs through npx or a locally built Node.js entry point and documents direct MCP setup for Claude Code, Codex, Cursor, and VS Code Copilot.
A workflow starts with new_page, then uses list_scripts, search_in_sources, get_script_source, and save_script_source to locate and preserve JavaScript. set_breakpoint_on_text and break_on_xhr create breakpoints; after execution pauses, get_paused_info reports call stacks and scope variables, while evaluate_script runs code in either the page or a paused call frame and step or pause_or_resume controls execution. For traffic analysis, list_network_requests indexes, inspects, or exports request material, get_request_initiator retrieves the JavaScript initiator stack, and get_websocket_messages groups connections and messages. clear_site_data removes cookies, origin storage, and sessionStorage for the current site, with an option to clear the global HTTP cache, so initialization and risk-control flows can be replayed. Additional tools select pages and frames, click visible elements, take screenshots, and inspect console messages; outputFile, filePath, and localFilePath parameters connect browser evidence with local files.
- A security researcher or frontend analyst needs to find encryption, signing, or sensor logic inside minified scripts and break on matching source text.
- A developer needs to trigger a page action and inspect runtime arguments, scope variables, call stacks, and nearby source at the pause point.
- A protocol analyst needs the initiator stack, headers, bodies, responses, or Set-Cookie data for selected XHR and Fetch requests.
- An engineer investigating a real-time web application needs to enumerate WebSocket connections, identify message patterns, and inspect individual frames.
- A researcher studying cookie or risk-control initialization needs to clear site state, reload repeatedly, and export the decisive requests.
- A debugger blocked by automation detection needs Patchright stealth by default and an optional CloakBrowser fingerprint-patching mode for harder targets.
How do you install or deploy this agent?
The documented runtime is Node.js 20.19 or newer plus the stable release of Google Chrome. The standard server setup does not require API credentials. The shortest installation path is an npx-backed MCP configuration:
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp"]
}
}
}Register it in Claude Code with:
claude mcp add js-reverse npx js-reverse-mcpFor Codex, run:
codex mcp add js-reverse -- npx js-reverse-mcpA local source installation is also documented:
git clone https://github.com/zhizhuodemao/js-reverse-mcp.git
cd js-reverse-mcp
npm install
npm run buildPoint the MCP client at the resulting Node.js entry point:
{
"mcpServers": {
"js-reverse": {
"command": "node",
"args": ["/your/path/js-reverse-mcp/build/src/index.js"]
}
}
}For --cloak, pre-download the optional browser binary, which is approximately 200 MB:
npx cloakbrowser installThen configure the MCP arguments as ["js-reverse-mcp", "--cloak"].
How do you use this agent?
After the MCP server starts, call new_page with the target URL. Initial navigation deliberately keeps CDP quiet, so a complete traffic capture requires calling list_network_requests to activate collectors, running navigate_page(type="reload"), and listing the requests again. Inspect a key request by reqid or supply outputFile to export raw headers, bodies, or query data. For script work, proceed through list_scripts, search_in_sources, and set_breakpoint_on_text; trigger the relevant page behavior, then use get_paused_info, evaluate_script, and step after the breakpoint is hit. To replay cookie or risk-control initialization, run clear_site_data(confirm=true), reload, and export the requests that set cookies or submit sensor data. In production or shared environments, pass one or more --allowedRoots options to constrain host-file access.
What are this agent's strengths and limitations?
- Its 24 tools span navigation, source discovery, breakpoint execution, network traffic, WebSockets, console output, and site state, supporting an end-to-end debugging loop.
- Evaluation inside paused call frames, scope inspection, and step control make it substantially more suitable for runtime analysis than page automation alone.
- Large scripts, raw traffic artifacts, and binary results can be written to local files instead of consuming the entire model context.
- Patchright protocol-level stealth and optional CloakBrowser source-level patches provide two distinct anti-detection layers.
- A headed persistent profile retains login state, while
--isolatedprovides a disposable clean session when required.
- Adoption requires Node.js 20.19+ and stable Chrome; the default deployment is not a browserless or purely hosted service.
- Cloak mode downloads an approximately 200 MB binary and uses custom Chromium without Google services, the Web Store, or sync.
- Because the first navigation keeps Network and Debugger domains quiet, complete captures normally require collector activation followed by a reload.
- Host-file access is unrestricted when
--allowedRootsis omitted, so operators must configure the boundary themselves. - The server can inspect, debug, and modify browser data, making unisolated use on sensitive pages inappropriate.
How does this agent compare with similar options?
The default mode combines the installed Google Chrome with Patchright protocol-level stealth and retains access to Chrome extensions, sync, and the Web Store. --cloak switches to a separate profile and custom Chromium with C++ fingerprint patches, covering more fingerprint surfaces at the cost of an approximately 200 MB download and no Google services or Web Store. The documented guidance is to enable CloakBrowser only when the default path remains blocked.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| JS Reverse MCP This agent | 82 · Good | MCP serverFree | ★ 3k | 1mo ago | TypeScript | Codex · Claude Code |
| bdg Browser Debugger | 68 · Some gaps | CLIFree | ★ 177 | today | TypeScript | Codex · Claude Code |
| Chrome DevTools MCP | 79 · Some gaps | MCP serverFree | ★ 54k | today | TypeScript | Codex · Claude Code |
| REA: Reverse Engineer Anything with Agents | 72 · Some gaps | CLIFree | ★ 327k | today | TypeScript | Codex · Claude Code · Claude.ai |
How does FollowAgents rate this agent?
Why each dimension lost points
The evidence clearly discloses browser-content exposure, host-file reads and writes, persistent login state, log leakage risks, the CloakBrowser download, and live-evaluation data flow. allowedRoots resolves real paths and blocks symlink and file-URL escapes, with tests for direct, symlink, and dangling-link escapes. Network-record and site-data clearing require explicit confirmation; logs use mode 0600, and credentialed remote evaluations require HTTPS. Deductions apply because allowedRoots is off by default, leaving local file access unrestricted; the default profile retains cookies and localStorage; navigation, clicking, and arbitrary page evaluation lack a general confirmation layer; and cleared data is not recoverable. CI runs a production dependency audit, some important dependencies are exact-pinned, and tar is overridden, but ranges remain and no lockfile, SBOM, or audit result is supplied. Author, repository, third-party projects, and license are attributed, but publisher identity is unverified and stronger supply-chain identity evidence is absent.
The README, package scripts, CI, and supplied tests are highly consistent about tool behavior, supported Node versions, and release gates. Tests demonstrate concurrent CDP-session deduplication, retry after failure, stale-session detachment, listener rollback, breakpoint restoration, honest partial-removal reporting, and a targeted error for promises that cannot settle while paused. This thoroughly supports self-consistency and failure messaging. Dependency availability is deducted because operation relies on a system Chrome installation, Cloak mode may download roughly 200 MB on first use, and the supplied files do not fully establish platform coverage, download-service availability, or offline fallback.
The documentation identifies JS reversing, breakpoint debugging, network/WebSocket inspection, and cookie or risk-control replay scenarios, with separate default, isolated, cloak, and external-CDP configurations. Twenty-four tools have clear functional groupings and boundaries; destructive operations use explicit actions or confirmation, strict single-element clicking narrows ambiguity, and 30 offline routing contracts support trigger precision. Environment fit is deducted because, although Node, Chrome, and several MCP clients are covered, the referenced platform-specific Cloak and CDP documents are not included, so full platform and third-party-browser compatibility cannot be confirmed.
The README is well structured and supplies installation paths, client configurations, a tool catalog, workflow examples, configuration guidance, security notes, and troubleshooting. Package, command, and MCP names are consistent. Apache-2.0 metadata matches the complete LICENSE. Deductions apply because limitations are scattered through security and troubleshooting sections rather than comprehensively covering authorization, site-policy, and operational boundaries; version 4.0.1, tag checks, and generated release notes exist, but no standalone changelog is supplied; and maintenance responsibility is only inferable from the author field, issue URL, and release workflow, without a support policy, named team, or response commitment.
Agent-oriented short listings, bounded detail, source context, raw-material file export, and reuse of exported inputs make outputs directly useful in iterative analysis. Combining pages, scripts, breakpoints, network traffic, WebSockets, and state replay in one MCP provides substantial marginal value. Cost-benefit is deducted because the documentation discloses the optional roughly 200 MB download, persistent profiles, and potentially paid live model evaluation, but provides no quantitative resource, performance, success-rate, or comparative-alternative evidence.
Several repository claims are traceable across the README, package configuration, CI, and supplied unit tests, including presubmit gates, dependency auditing, path confinement, failure recovery, and breakpoint restoration. Deductions apply because the core anti-detection behavior, the complete implementation of all 24 tools, routing-evaluation results, and cross-platform claims lack corresponding source or result evidence in the supplied material; corroboration is entirely repository-internal; and promotional capability statements are not consistently separated into tested facts, design intentions, and inference.
- Without --allowedRoots, the agent can read or write host files without directory confinement; enable it for a dedicated working directory.
- The default profile preserves cookies and localStorage across sessions and exposes page content to the MCP client; do not use it with sensitive browser sessions.
- evaluate_script, clicking, navigation, and network interaction may alter page or remote state; use only on authorized targets and add human confirmation for high-impact actions.
- clear_site_data and manual profile deletion irreversibly remove login state; back up first or use --isolated for reproducible experiments.
- CloakBrowser may download roughly 200 MB on first launch; preinstall it and independently verify binary provenance, platform support, and current dependency-audit status.
- Anti-detection use may implicate site terms, access controls, or legal restrictions; the supplied repository material provides no authorization or compliance assurance.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
Full Changelog: https://github.com/zhizhuodemao/js-reverse-mcp/compare/v4.0.4...v4.0.5View on GitHub ↗ -
Release notes excerpt
Full Changelog: https://github.com/zhizhuodemao/js-reverse-mcp/compare/v4.0.2...v4.0.3View on GitHub ↗ -
Release notes excerpt
Full Changelog: https://github.com/zhizhuodemao/js-reverse-mcp/compare/v4.0.1...v4.0.2View on GitHub ↗
FAQ
Does normal operation require an API key or paid model endpoint?
Why is the first page load missing some network requests?
list_network_requests to activate the collectors, reload with navigate_page(type="reload"), and then list the requests again.When should I use --cloak?
--cloak only if fingerprint defenses such as Cloudflare Turnstile, DataDome, or FingerprintJS still block the session; --isolated can first rule out contaminated profile state.Does it preserve authenticated sessions?
--isolated uses a temporary user-data directory that is removed on shutdown, while CloakBrowser has its own physically separate persistent profile.How can host-file permissions be constrained?
--allowedRoots directories. The server resolves real paths, rejects symlink escapes, and also blocks file:, view-source:file:, and filesystem:file: pages while that restriction is active.