jjx-js-reverse-mcp
jjx-js-reverse-mcp
Единый MCP для обратного инжиниринга JavaScript: полное Hook / точки останова / отладка скриптов + цепочка операций с браузером + CDP антидетекция.
Один процесс подключается только к одному браузеру, решая проблему одновременного использования js-reverse-mcp и chrome-devtools-mcp, приводящего к открытию двух окон.
Режим определяется параметрами запуска, а не подсказками в диалоге.
Подсказки не могут заставить MCP «автоматически распознать» ATTACH / LAUNCH; для смены режима изменитеmcp.jsonи перезагрузите, или зарегистрируйте две записи MCP и выбирайте нужную.
Быстрый выбор
Ваш сценарий | Рекомендуемый режим | Ключевые параметры |
Уже используете bat / вручную открыли браузер и вошли, нужно сохранить сессию | ATTACH |
|
Полная автоматизация с нуля, можно перелогиниться, не беспокоитесь о желтой полосе | LAUNCH |
|
Повседневный реверс-инжиниринг, меньше шума от инструментов | Любой режим + |
|
Только разведка (чтение скриптов/сети, запрет навигации и закрытия страниц) | Любой режим + |
|
Фокус на Hook / точках останова | Любой режим + |
|
Нужен performance trace / снимки кучи / глубокая декомпиляция Wasm | Любой режим + |
|
Чистая отладка, отключить CDP leak guard | Любой режим + |
|
Жизненный цикл браузера в двух режимах
Режим | Когда использовать | CLI (взаимоисключающие) | При выходе |
ATTACH | Браузер уже открыт с |
| Только |
LAUNCH | Нужно, чтобы MCP сам запустил Chrome/CloakBrowser |
| Закрывает экземпляр, запущенный MCP |
Параметры ATTACH и LAUNCH взаимоисключающие (нельзя одновременно указывать
--remoteDebuggingPortи--executablePath).При неудаче ATTACH не будет скрытно открыт новый браузер (чтобы избежать ситуации «думал, что подключился, а запустил еще один»).
Во время работы можно вызвать
attach_browserдля динамического подключения; нет симметричного инструмента «динамический launch» — для самостоятельного запуска обязательно используйте параметр LAUNCH.
Инструменты: get_browser_mode / attach_browser / check_browser_health
ATTACH: Пример CLI
# 1) 手动启动(桌面 bat 常用 9333;也可 9222)
"你的chrome.exe路径" ^
--remote-debugging-port=9333 --remote-allow-origins=*
# 2) 在浏览器里打开目标站并登录
# 3) MCP 接管(端口必须一致)
node build/src/index.js --remoteDebuggingPort 9333 --toolProfile slim
# 或
node build/src/index.js --browserUrl http://127.0.0.1:9333 --toolProfile slimLAUNCH: Пример CLI
node build/src/index.js ^
--executablePath "你的chrome.exe路径" ^
--isolated ^
--toolProfile slimCursor mcp.json: копируйте под свой сценарий
Путь к глобальной конфигурации обычно: %USERPROFILE%\.cursor\mcp.json
После изменения обязательно: Settings → Tools & MCP → Reload соответствующего сервера.
Пути изменяйте под свою систему: путь_к_вашему_jjx-js-reverse-mcp, путь_к_вашему_chrome.exe.
Сценарий 1 — ATTACH для повседневного реверса (рекомендуется)
Подходит: сохранение сессии, меньше новых окон, совместно с Cloak Browser.bat.
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9333",
"--toolProfile",
"slim"
]
}
}
}Порядок: запустить bat → вручную открыть целевой сайт → Reload MCP (если не загрузился) → в диалоге потребовать «запретить new_page / запретить launch, сначала list_pages».
Сценарий 2 — ATTACH классический 9222
Когда браузер запущен с --remote-debugging-port=9222:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9222",
"--toolProfile",
"slim"
]
}
}
}Сценарий 3 — LAUNCH самостоятельный запуск Cloak (автоматизация / возможность перелогина)
Подходит: не требуется существующая сессия; допустимо появление желтой полосы «Chrome под управлением автоматизированного ПО».
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--executablePath",
"你的chrome.exe路径",
"--isolated",
"--toolProfile",
"slim"
]
}
}
}--isolated: временный профиль, уменьшает проблемы «browser already running / профиль занят».Не конфликтуйте с экземпляром bat, использующим тот же профиль; при конфликте закройте лишние браузеры или вернитесь к ATTACH.
Сценарий 4 — Два набора (ATTACH + LAUNCH, выбор в диалоге)
Чтобы не менять конфигурацию каждый раз, зарегистрируйте два сервера и в Cursor включайте/выбирайте нужный:
{
"mcpServers": {
"jjx-attach": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9333",
"--toolProfile",
"slim"
]
},
"jjx-launch": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--executablePath",
"你的chrome.exe路径",
"--isolated",
"--toolProfile",
"slim"
]
}
}
}Примечание: если оба включены, Agent может вызвать «не тот»; укажите в подсказке jjx-attach или jjx-launch, или включите только один.
Сценарий 5 — Меньше инструментов (observe / hook)
Меняйте только --toolProfile, параметры режима остаются.
Разведка (меньше инструментов, быстрее решения):
--toolProfile observeВ основном Hook / точки останова:
--toolProfile hookПолный набор (включая performance / heapsnapshot / тяжелый AI / глубокий Wasm):
--toolProfile fullProfile | Примерное назначение | Описание |
| Полные возможности | По умолчанию; включает |
| Повседневный реверс | Рекомендуется; включает |
| Только чтение, разведка | Не включает |
| Hook + отладка | Фокус на инъекции и точках останова |
Сценарий 6 — Отключение Stealth (чистая отладка)
Добавьте в конец args для ATTACH или LAUNCH:
"--no-stealth"Для реверса сайтов с сильной антидетекцией обычно оставляйте Stealth по умолчанию (не добавляйте этот параметр).
Сценарий 7 — ATTACH с автоопределением порта
Сканирует порты 9222–9225 на локальной машине; если не находит, выдает ошибку и не запускает LAUNCH:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--autoConnect",
"--toolProfile",
"slim"
]
}
}
}Если ваш bat использует фиксированный порт 9333, который не входит в диапазон 9222–9225, используйте явное указание порта из сценария 1, не полагайтесь на --autoConnect.
Соотношение подсказок и конфигурации
Что вы хотите сделать | Правильное действие |
Подключиться к уже открытому через bat браузеру | В |
MCP сам открывает браузер | Измените |
Переключить режим только подсказкой | Не работает — сервер не читает содержимое чата |
Локальные шаблоны фраз для справки:
путь_к_вашему_шаблону_подсказки_ATTACHпуть_к_вашему_шаблону_подсказки_LAUNCH
Подробнее: docs/guides/browser-modes.md, docs/guides/anti-detect.md
CDP антидетекция (кратко)
По умолчанию включена базовая CDP leak guard (можно отключить с помощью --no-stealth):
CdpLeakGuard: очищает глобальныеcdc_*/ selenium, исправляетnavigator.webdriver, минимизируетchrome.*, десенсибилизирует Error stack; предварительная инъекция в новые документы + повторная инъекция после навигацииevaluate_script/ пути инъекции: приоритет CDPRuntime.evaluate, уменьшение утечки__puppeteer_evaluation_script__Удалено:
StealthScripts2025(маскировка User-Agent Chrome 131 / Canvas / WebGL / Audio и т.д.) — устарело и может конфликтовать с реальным ядром
Инструменты: enable_cdp_guard / inject_stealth (аналог базового guard) / stealth_status
Ручной User-Agent: set_user_agent (не меняет Client Hints)
Для сайтов с сильной антидетекцией используйте нативные отпечатки CloakBrowser + реальную сессию ATTACH. Данный MCP не предоставляет «всеобъемлющего» stealth для прохождения жестких проверок; протокольные решения (например, rebrowser-patches) требуют отдельной интеграции и не встроены.
Подробнее в docs/guides/anti-detect.md.
Обзор возможностей
Hook:
create_hook/inject_hook(persist по умолчанию, сохраняется при навигации) /get_hook_data/remove_hook(попутно очищает store страницы) /hook_function…Отладка: исходный код скриптов, точки останова, XHR break, пошаговое выполнение, evaluate в callframe (
hook_functionи др. через CDPsafeEvaluateIife)Браузер: навигация, снимок+uid клик/заполнение форм,
fill_form, сеть/консоль, состояние сессииРеверс: сбор, деобфускация, обнаружение шифрования, Wasm, восстановление, экспорт доказательств
Наблюдение:
performance_*(включая Insight),take_heapsnapshot, легкийpage_vitals_audit— в основном вfull;reloadдляperformance_start_traceпо умолчанию falseСбор с сохранением сессии: при нахождении на целевом URL
collect_code/collect_wasmпо умолчанию не делаютgoto; обновление только при явномforceNavigate=true; на выбранной странице MCP не будет принудительно менять User-AgentDOM / сессия:
query_dom, чтение/запись localStorage и т.д. приоритетно через CDP, уменьшая утечку sourceURL от Puppeteer
Важные замечания по стабильности (процесс реверса)
Сначала
list_pages+select_page: если страница не выбрана, коллектор сразу выдаст ошибку, не будет скрытно подключаться к 9222 по умолчанию.collect_codeсобирает только один раз: исправлена ошибка двойногоcollectв старой версии сreturnMode=full; для больших сайтов предпочтительнееreturnMode=summary.inject_hookpersist по умолчанию: хук остается после навигации; если вы заフックнулиJSON.stringifyи другие глобальные функции, это может помешать сериализации JSON на странице — используйте с осторожностью и своевременно вызывайтеremove_hook/ обновляйте страницу.restore_session_stateпо умолчанию не выполняет навигацию: для перехода передайтеnavigateToSavedUrl=true.attach_browser: если текущая сессия LAUNCH, shutdown закроет самостоятельно запущенный браузер и переподключится (в ответе будетpreviousLaunchClosed).--autoConnectсканирует только 9222–9225: для других портов используйте--remoteDebuggingPort.
Разработка
npm install
npm run build
npm start -- --remoteDebuggingPort 9333 --toolProfile slimНагрузочное тестирование:
# LAUNCH + ATTACH 主流程
node scripts/stress-reverse-flow.mjs
# 扫描修复项回归(profile / safeEval / getActivePage / hook persist)
node scripts/stress-fix-regression.mjsТребования: Node ^20.19 || ^22.12 || >=23
License
Apache-2.0. Основан на chrome-devtools-mcp и js-reverse-strong-mcp, см. NOTICE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for understanding Javascript internals from ECMAScript specification.
Live browser debugging for AI assistants — DOM, console, network via MCP.
MCP server for Klever blockchain smart contract development.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Junjianxin/jjx-js-reverse-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server