Skip to main content
Glama

JS Reverse MCP

基于 Chrome DevTools Protocol (CDP) 的 MCP 服务器,让 AI 编码助手(Claude、Cursor、Windsurf 等)能够直接控制浏览器进行 JavaScript 调试、逆向分析、网页抓取和 API 调试。

基于 google-deepmind/chrome-devtools-mcp v0.10.2,添加了逆向工程相关工具增强。

功能特点

  • JS 调试: 断点、单步执行、调用栈、作用域变量检查

  • 脚本分析: 搜索/获取所有加载的 JS 脚本源码,精确定位压缩文件中的位置

  • 函数 Hook: Hook 任意函数(包括 webpack/rollup 模块内部函数),记录调用和返回值

  • 反混淆: 基于 AST(Babel)的 deobfuscate——作用域安全的变量重命名、常量折叠、死代码/不可达代码消除、字符串/数字规范化

  • 加密检测: 自动识别 CryptoJS、WebCrypto 等加密库,Hook 加密调用

  • 网络分析: 请求拦截/修改/Mock、XHR 断点、WebSocket 监控、请求调用栈追踪

  • 网页抓取: CSS 选择器提取、表格/链接/结构化数据/元数据提取

  • API 调试: 在浏览器上下文中发送 HTTP 请求,管理多账号 Token,Firebase 登录

  • Protobuf: 编解码 Protobuf 消息,解析 gRPC-Connect API 响应

  • DOM 调试: DOM 断点、表单监控、输入框变化追踪

  • 全局变量: 监控全局变量变化,快照对比找出差异

  • 代码覆盖率: 分析 JS 代码执行覆盖率,识别未使用的代码

Related MCP server: Kaboom Browser AI Devtools MCP

系统要求

安装

git clone https://github.com/1600822305/js-reverse-mcp.git
cd js-reverse-mcp
npm install
npm run build

MCP 客户端配置

方式一:自动启动 Chrome(推荐新手)

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": ["/你的路径/js-reverse-mcp/build/src/index.js"]
    }
  }
}

方式二:连接已运行的 Chrome(推荐逆向场景)

第一步:以调试模式启动 Chrome(需先关闭所有 Chrome 窗口)

Windows

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\chrome-debug"

macOS

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug

第二步:配置 MCP 连接

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": [
        "/你的路径/js-reverse-mcp/build/src/index.js",
        "--browser-url=http://127.0.0.1:9222"
      ]
    }
  }
}

方式三:WebSocket 连接(支持自定义 Header)

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": [
        "/你的路径/js-reverse-mcp/build/src/index.js",
        "--ws-endpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
        "--ws-headers={\"Authorization\":\"Bearer token\"}"
      ]
    }
  }
}

Claude Code

claude mcp add js-reverse node /你的路径/js-reverse-mcp/build/src/index.js

Cursor / Windsurf

进入 MCP 设置,添加上述 JSON 配置。


完整工具列表

脚本分析

工具

描述

list_scripts

列出页面中所有加载的 JS 脚本(含 URL、sourceMap 信息)

get_script_source

获取脚本源码,支持行范围或字符偏移(适用于压缩文件)

find_in_script

在脚本中查找文本,返回精确行号和列号及上下文

search_in_sources

在所有已加载脚本中搜索字符串或正则表达式

断点管理

工具

描述

set_breakpoint

在指定 URL 和行号设置断点,支持条件断点

set_breakpoint_on_text

通过搜索代码文本自动定位并设置断点(适用于压缩代码)

remove_breakpoint

移除断点

list_breakpoints

列出所有活动断点

调试控制

工具

描述

get_paused_info

获取暂停状态、调用栈和作用域变量

resume

恢复执行

pause

暂停执行

step_over

单步跳过(不进入函数体)

step_into

单步进入函数

step_out

单步跳出当前函数

evaluate_on_callframe

在暂停的调用帧上下文中求值表达式

函数 Hook 与追踪

工具

描述

hook_function

Hook 全局函数或对象方法(如 fetchXMLHttpRequest.prototype.open),记录调用参数和返回值

unhook_function

移除函数 Hook

list_hooks

列出所有活动的 Hook

trace_function

追踪任意函数调用(包括 webpack/rollup 打包的模块内部函数),使用条件断点实现,不暂停执行

网络调试

工具

描述

list_network_requests

列出页面所有网络请求(基于 DevTools 面板)

break_on_xhr

设置 XHR/Fetch URL 断点

remove_xhr_breakpoint

移除 XHR 断点

search_network

在 CDP 抓包仓库中按 URL/方法/状态/资源类型检索,支持跨请求/响应体全文搜索(导航后仍保留)

get_response_body

按数字 id 获取抓到的完整响应体(二进制返回 base64)

export_har

将抓到的网络流量导出为 HAR 1.2 文件(可含响应体)

replay_request

在页面上下文用 fetch() 重放抓到的请求(带 Cookie),可覆盖 URL/方法/头/体

add_network_rule

新增拦截规则(替代旧 intercept_requests):单一 Fetch 派发器,多规则共存,支持 Request/Response 两个阶段,可改写真实响应体

list_network_rules

列出活动拦截规则及命中统计

remove_network_rule

按 id 移除拦截规则(移除最后一条后自动关闭 Fetch 拦截)

monitor_websocket

通过 CDP 原生事件捕获 WebSocket 帧(含导航前/二进制帧,不可被页面探测)

stop_websocket_monitor

停止 WebSocket 捕获(已抓数据保留)

list_websocket_connections

列出追踪的 WebSocket 连接及收发计数

list_websocket_messages

列出抓到的 WebSocket 帧,可按连接/方向/URL/内容过滤(二进制显示为 base64)

monitor_eventsource

通过 CDP 捕获 Server-Sent Events (EventSource) 消息

stop_eventsource_monitor

停止 SSE 捕获

list_eventsource_messages

列出抓到的 SSE 消息,可按 URL/内容过滤

set_network_conditions

模拟网络条件(离线/限速/延迟)并可覆盖 User-Agent(CDP Network 域)

set_extra_headers

为后续所有请求设置额外 HTTP 头(传空对象清除)

clear_network_conditions

重置网络模拟、UA 覆盖与额外头

API 调试与 Token 管理

工具

描述

api_request

在浏览器上下文中发送 HTTP 请求(共享 Cookie 和 Origin),支持自动注入 Token

save_token

保存认证 Token(支持 Firebase/JWT/API Key/Bearer 等类型)

list_tokens

列出所有已保存的 Token

set_active_token

设置当前活动 Token

delete_token

删除已保存的 Token

Protobuf / gRPC

工具

描述

encode_protobuf

将字段编码为 Protobuf 二进制(无需 .proto 文件)

decode_protobuf

解码 Protobuf 二进制:传入 data(Hex/Base64)或 url(自动请求并解析 gRPC-Connect 响应)

网页抓取

工具

描述

extract

统一抽取工具,用 type 选择模式:elements(CSS 选择器取文本/属性/innerHTML)/ structured(字段 Schema,可跨 containerSelector 取列表,字段可取属性或 innerHTML)/ links(链接,支持 URL 正则过滤)/ table(表格行列)/ textBlocks(按标题层级分块)。auto(默认)有 fields 走 structured 否则 elements;可先 clickSelector+waitForSelector/waitMs 再抽取

extract_metadata

提取页面元数据(JSON-LD、Open Graph、Twitter Card、标准 meta)

extract_form_data

提取表单结构和当前值(含隐藏字段;默认返回所有表单、密码打码)

加密检测与分析

工具

描述

detect_encryption

检测加密库/算法/编码:scope 可选 page(运行时全局,默认)/scripts(扫描所有脚本源码中的加密函数)/both

analyze_encoded_string

分析字符串的编码类型(Base64/Hex/JWT/URL 编码等)并解码

hook_crypto_functions

自动 Hook CryptoJS、JSEncrypt、Web Crypto API 等常见加密库

反混淆

工具

描述

beautify_script

美化压缩/混淆的 JavaScript 代码

deobfuscate

基于 AST(Babel)的反混淆:作用域安全的变量重命名、常量折叠、死代码/不可达代码消除、字符串/数字规范化

代码覆盖率

工具

描述

start_js_coverage

开始收集 JavaScript 代码覆盖率(若已在收集会提示)

stop_js_coverage

停止收集并生成报告,可按覆盖率阈值过滤

全局变量监控

工具

描述

list_globals

列出页面上所有自定义全局变量(排除浏览器内置)

watch_global

监控全局变量变化,记录修改时的调用栈

unwatch_global

停止监控全局变量

list_watchers

列出所有活动的变量监控器

snapshot_globals

创建全局变量快照

diff_globals

对比快照找出新增/修改的全局变量

DOM 断点与表单

工具

描述

break_on_subtree_modified

DOM 子树修改时触发断点

break_on_attribute_modified

元素属性修改时触发断点

break_on_node_removed

元素被删除时触发断点

remove_dom_breakpoint

移除 DOM 断点

monitor_form_submit

监控表单提交,捕获所有字段值

stop_form_monitor

停止表单监控

monitor_input_changes

实时监控输入框变化(包括密码框)

stop_input_monitor

停止输入监控

检查工具

工具

描述

inspect_object

深度检查 JavaScript 对象结构、原型链和方法

get_storage

获取 Cookie、localStorage、sessionStorage

monitor_events

监控元素或 window 上的 DOM 事件

stop_monitor

停止事件监控

页面导航

工具

描述

list_pages

列出浏览器中所有打开的页面

select_page

选择一个页面作为调试上下文

new_page

创建新页面并导航到 URL

navigate_page

导航当前页面(支持前进/后退/刷新)

页面交互

工具

描述

take_screenshot

截取页面截图(支持全页面/元素)

take_snapshot

获取页面无障碍树快照

evaluate_script

在页面中执行 JavaScript

list_console_messages

获取控制台消息


使用示例

逆向加密参数

1. list_pages → 选择目标页面
2. search_in_sources "encrypt" → 找到加密函数位置
3. set_breakpoint_on_text "encryptData(" → 在加密函数入口设断点
4. 触发页面操作 → 断点命中
5. get_paused_info → 查看参数和调用栈
6. evaluate_on_callframe "arguments[0]" → 查看明文数据

Hook 所有网络请求

hook_function "fetch" → 记录所有 fetch 调用的 URL、参数和响应
hook_function "XMLHttpRequest.prototype.open" → 同时监控 XHR

分析 Protobuf API

1. list_network_requests → 找到 content-type: application/proto 的请求
2. decode_protobuf url="https://..." → 直接请求并解码响应

代码覆盖率分析

1. start_js_coverage
2. 与页面交互,触发业务流程
3. stop_js_coverage minCoverage=30 → 只显示覆盖率低于30%的脚本(找死代码)

反混淆流程

1. list_scripts → 找到混淆脚本的 scriptId
2. deobfuscate scriptId="..." → AST 反混淆(变量重命名 + 常量折叠 + 死代码消除 + 字符串/数字规范化)
3. deobfuscate scriptId="..." aggressive=true → 更激进地重命名短名/_0x 前缀名
4. (仅需美化时)beautify_script scriptId="..." → 纯格式化

CLI 配置选项

选项

描述

默认值

--browser-url, -u

连接到已运行的 Chrome(HTTP URL)

--ws-endpoint, -w

连接到已运行的 Chrome(WebSocket URL)

--ws-headers

WebSocket 连接的自定义 Header(JSON 格式)

--headless

无头模式运行

false

--executable-path, -e

自定义 Chrome 可执行文件路径

--isolated

使用临时用户数据目录,关闭后自动清理

false

--channel

Chrome 通道:stable / canary / beta / dev

stable

--viewport

初始视口大小,如 1280x720

--proxy-server

Chrome 代理服务器配置

--accept-insecure-certs

忽略 SSL 证书错误(自签名/过期证书)

false

--log-file

调试日志输出路径

--no-category-network

禁用所有网络相关工具

--chrome-arg

传递额外参数给 Chrome(可多次指定)


安全提示

此工具将浏览器内容完整暴露给 MCP 客户端,允许检查、调试和修改浏览器中的任何数据(包括 Cookie、Token、请求内容)。请勿在含有敏感信息的页面上使用,并确保 MCP 客户端来源可信。

许可证

Apache-2.0 — Copyright 2025 Google LLC

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1600822305/js-reverse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server