jjx-js-reverse-mcp
jjx-js-reverse-mcp
Einheitliches JavaScript-Reverse-MCP: Vollständiges Hook / Breakpoint / Script-Debugging + Browser-Aktionskette + CDP-Anti-Erkennung.
Ein Prozess verbindet nur einen Browser, um das Problem zu lösen, dass gleichzeitig js-reverse-mcp und chrome-devtools-mcp zwei Fenster öffnen.
Der Modus wird durch die Startparameter bestimmt, nicht durch den Dialog-Prompt.
Der Prompt kann das MCP nicht dazu bringen, ATTACH / LAUNCH „automatisch zu erkennen“; um den Modus zu wechseln, änderemcp.jsonund lade neu, oder registriere zwei MCP-Einträge und wähle einen aus.
Schnellauswahl
Dein Szenario | Empfohlener Modus | Schlüsselparameter |
Bereits mit bat / manuell Browser geöffnet und eingeloggt, Login-Zustand erhalten | ATTACH |
|
Von Null automatisieren, erneutes Einloggen möglich, gelber Balken egal | LAUNCH |
|
Tägliches Reverse, weniger Agent-Tool-Rauschen | Beliebig + |
|
Nur Aufklärung (Skripte/Netzwerk lesen, Navigation/Seiten schließen deaktiviert) | Beliebig + |
|
Fokus auf Hook / Breakpoint | Beliebig + |
|
Performance-Trace / Heap-Snapshot / tiefes Wasm-Decompile benötigt | Beliebig + |
|
Reines Debugging, CDP-Leak-Guard deaktivieren | Beliebig + |
|
Dual-Mode-Browser-Lebenszyklus
Modus | Wann verwenden | CLI (sich gegenseitig ausschließend) | Beim Beenden |
ATTACH | Browser bereits mit |
| Nur |
LAUNCH | MCP soll Chrome/CloakBrowser selbst starten |
| Schließt die vom MCP gestartete Instanz |
ATTACH- und LAUNCH-Parameter schließen sich gegenseitig aus (nicht gleichzeitig
--remoteDebuggingPortund--executablePathschreiben).Bei ATTACH-Fehler wird nicht heimlich ein neuer Browser geöffnet (vermeidet „denkt, er übernimmt, startet aber einen weiteren“).
Zur Laufzeit kann
attach_browserdynamisch übernehmen; es gibt kein symmetrisches „dynamisches Launch“-Tool – für echten Selbststart muss LAUNCH-Startparameter verwendet werden.
Tools: get_browser_mode / attach_browser / check_browser_health
ATTACH: CLI-Beispiel
# 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-Beispiel
node build/src/index.js ^
--executablePath "你的chrome.exe路径" ^
--isolated ^
--toolProfile slimCursor mcp.json: Nach Szenario kopieren
Globaler Konfigurationspfad normalerweise: %USERPROFILE%\.cursor\mcp.json
Nach Änderung unbedingt: Settings → Tools & MCP → Reload des entsprechenden Servers.
Pfade bitte an dein System anpassen: deinjjx-js-reverse-mcp-Pfad, deinchrome.exe-Pfad.
Szenario 1 — ATTACH tägliches Reverse (empfohlen)
Geeignet: Login-Zustand erhalten, wenig neue Fenster, in Kombination mit 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"
]
}
}
}Ablauf: Zuerst bat öffnen → manuell Zielseite besuchen → MCP neu laden (falls nicht geladen) → im Dialog „new_page verbieten / launch verbieten, zuerst list_pages“ anfordern.
Szenario 2 — ATTACH klassisch 9222
Wenn Browser mit --remote-debugging-port=9222 gestartet wird:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9222",
"--toolProfile",
"slim"
]
}
}
}Szenario 3 — LAUNCH Selbststart Cloak (Automatisierung / erneutes Einloggen)
Geeignet: Kein vorhandener Login-Zustand nötig; akzeptiert möglichen gelben Balken „Chrome wird von automatisierter Testsoftware gesteuert“.
{
"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: Temporäres Profil, reduziert „browser already running / profile belegt“.Nicht mit dem gleichen Profilverzeichnis einer bat-Instanz konkurrieren; bei Konflikt zuerst überflüssige Browser schließen oder auf ATTACH zurückwechseln.
Szenario 4 — Zwei Sätze parallel (ATTACH + LAUNCH, Auswahl im Dialog)
Wenn du die Konfiguration nicht ständig ändern möchtest, registriere zwei Server und aktiviere/wähle den entsprechenden in 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"
]
}
}
}Hinweis: Wenn beide aktiviert sind, könnte der Agent den „falschen“ Satz ansprechen; im Prompt klarstellen, dass jjx-attach oder jjx-launch verwendet wird, oder nur einen aktivieren.
Szenario 5 — Kleinere Tool-Oberfläche (observe / hook)
Nur --toolProfile ändern, Modus-Parameter bleiben gleich.
Aufklärung (weniger Tools, schnellere Entscheidungen):
--toolProfile observeHook / Breakpoint im Fokus:
--toolProfile hookVollständig (mit performance / heapsnapshot / schweres AI / tiefes Wasm):
--toolProfile fullProfile | Ungefähre Verwendung | Beschreibung |
| Alle Fähigkeiten | Standard; enthält |
| Tägliches Reverse | Empfohlen; enthält |
| Nur-Lesen-Aufklärung | Enthält nicht |
| Hook + Debugging | Fokus auf Injection und Breakpoints |
Szenario 6 — Stealth deaktivieren (reines Debugging)
Am Ende der args von ATTACH oder LAUNCH anhängen:
"--no-stealth"Bei starken Risikokontroll-Seiten wird normalerweise Standard-Stealth beibehalten (diesen Eintrag nicht hinzufügen).
Szenario 7 — ATTACH automatische Port-Erkennung
Erkennt lokale Ports 9222–9225; falls nicht gefunden, Fehler und kein Launch:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--autoConnect",
"--toolProfile",
"slim"
]
}
}
}Wenn das Desktop-bat fest 9333 verwendet und nicht im Bereich 9222–9225 liegt, verwende für Szenario 1 den expliziten Port, nicht --autoConnect.
Zusammenhang zwischen Prompt und Konfiguration
Was du tun möchtest | Richtige Vorgehensweise |
Bereits geöffneten Browser von bat übernehmen |
|
MCP selbst Browser öffnen |
|
Nur Prompt ändern, um Modus zu wechseln | Ungültig – Server liest Chat-Inhalt nicht |
Lokale Vorlagentexte:
deinATTACH-Modus-Prompt-VorlagenpfaddeinLAUNCH-Modus-Prompt-Vorlagenpfad
Weitere Erläuterungen: docs/guides/browser-modes.md, docs/guides/anti-detect.md
CDP-Anti-Erkennung (kompakt)
Standardmäßig aktivierter CDP-Leak-Guard (kann mit --no-stealth deaktiviert werden):
CdpLeakGuard: Bereinigtcdc_*/ selenium-Globals, repariertnavigator.webdriver, minimiertchrome.*, Error-Stack-Desensibilisierung; Vorinjektion in neue Dokumente + Nachinjektion nach Navigationevaluate_script/ Injektionspfad: Bevorzugt CDPRuntime.evaluate, reduziert__puppeteer_evaluation_script__-LeakEntfernt:
StealthScripts2025(Chrome 131 UA / Canvas / WebGL / Audio etc. Fingerabdruck-Tarnung) – veraltet und leicht mit echtem Kernel in Konflikt
Tools: enable_cdp_guard / inject_stealth (entspricht Basis-Guard) / stealth_status
Manuelles UA: set_user_agent (ändert keine Client Hints)
Bei starken Risikokontrollen verwende CloakBrowser native Fingerabdrücke + echten Login-Zustand ATTACH. Dieses MCP bietet kein „starke Erkennung überwindendes“ Komplett-Stealth; protokollbasierte Lösungen (wie rebrowser-patches) müssen separat integriert werden, sind nicht eingebaut.
Siehe docs/guides/anti-detect.md.
Fähigkeitsübersicht
Hook:
create_hook/inject_hook(Standard persist über Navigation) /get_hook_data/remove_hook(gleichzeitig Seiten-Store leeren) /hook_function…Debugging: Skript-Quellcode, Breakpoints, XHR-Break, Step, Callframe-Evaluate (
hook_functionetc. über CDPsafeEvaluateIife)Browser: Navigation, Snapshot+uid Klicken/Formular ausfüllen,
fill_form, Netzwerk/Konsole, SitzungszustandReverse: Sammeln, Entschleierung, Verschlüsselungserkennung, Wasm, Rebuild, Beweis-Export
Beobachtung:
performance_*(mit Insight),take_heapsnapshot, leichtespage_vitals_audit– meist infull;performance_start_tracereloadstandardmäßig falseSammeln mit Sitzungserhalt: Bei bereits auf Ziel-URL
collect_code/collect_wasmstandardmäßig keingoto; explizitforceNavigate=truezum Aktualisieren; auf ausgewählter Seite des MCP wird nicht UA erzwungenDOM / Session:
query_dom, localStorage etc. bevorzugt CDP, reduziert puppeteer sourceURL-Leak
Stabilitätshinweise (Reverse-Ablauf)
Zuerst
list_pages+select_page: Ohne ausgewählte Seite gibt der Collector direkt einen Fehler, nicht heimlich wieder mit Standard 9222 verbinden.collect_codesammelt nur einmal: Behebt doppeltescollectbei altemreturnMode=full; bei großen Seiten bevorzugtreturnMode=summary.inject_hookstandardmäßig persist: Hook bleibt nach Navigation erhalten; wenn globale wieJSON.stringifygehookt werden, könnte dies die JSON-Serialisierung auf nachfolgenden Seiten stören – vorsichtig verwenden oder rechtzeitigremove_hook/ aktualisieren.restore_session_statestandardmäßig keine Navigation: Bei BedarfnavigateToSavedUrl=trueübergeben.attach_browser: Wenn aktuell LAUNCH-Sitzung, wird beim Shutdown der selbstgestartete Browser geschlossen und dann umgeschaltet (Antwort enthältpreviousLaunchClosed).--autoConnectscannt nur 9222–9225: Andere Ports bitte--remoteDebuggingPortverwenden.
Entwicklung
npm install
npm run build
npm start -- --remoteDebuggingPort 9333 --toolProfile slimStresstest:
# LAUNCH + ATTACH 主流程
node scripts/stress-reverse-flow.mjs
# 扫描修复项回归(profile / safeEval / getActivePage / hook persist)
node scripts/stress-fix-regression.mjsErfordert: Node ^20.19 || ^22.12 || >=23
Lizenz
Apache-2.0. Basierend auf chrome-devtools-mcp und js-reverse-strong-mcp weiterentwickelt, siehe 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