Skip to main content
Glama

JS Reverse MCP

English | 中文

AI-first / AI-native の JavaScript リバースエンジニアリング MCP Server。あなたの AI コーディングアシスタント(Claude、Cursor、Copilot など)が、アナリストのように Web ページ内の JavaScript の挙動を継続的にデバッグ、特定、保存、振り返りできるようにします。

これは Chrome DevTools API をそのままモデルに渡すのではなく、スクリプト、ブレークポイント、ネットワーク、WebSocket、ブラウザ状態、ローカルファイル I/O を、AI Agent が連続的に推論・操作しやすいツールとして再構成したものです。アンチ検出はその能力の一部です。デフォルトでは、本 MCP 用に再コンパイル・公開され、独立してメンテナンスされている Patchright fork を使用してプロトコル層の stealth を提供し、強力なアンチクローリングサイトではオプションで CloakBrowser のソースコード層フィンガープリントモードを有効化できます。

☁️ スポンサー · Sponsored by IPWO

IPWO 住宅代理は柔軟なプロキシ設定をサポートしており、開発者はタスクに応じて適切なネットワーク環境を選択できます。Web アクセス、リクエストテスト、地域別コンテンツ分析、自動化ワークフローに利用できます。

JS リバース、ブラウザデバッグ、Web ネットワーク分析に関わるプロジェクトでは、住宅代理もネットワーク環境の補完的な選択肢として、さまざまな地域のアクセス・テストニーズに柔軟に対応するのに役立ちます。

👉 無料テスト入口、9 割引コード:0204

Related MCP server: Chrome DevTools MCP

☁️ スポンサー · Sponsored by Infistar.cc 無限星河

js-reverse-mcp × Infistar.cc 無限星河|全モデル API · 安定駆動の AI 支援デバッグ

Infistar.cc 無限星河のスポンサーシップに感謝し、js-reverse-mcp にモデルサービスサポートを提供いただいています!

  • 複雑なデバッグタスクを安定的に処理:エンタープライズ級の高並列チャネルとマルチノード冗長化を提供し、価格は公式チャネルの 1 割まで低減。レート制限、429、長時間タスクの切断問題を軽減します。

  • 🧠 1 つの API Key で主要モデルにアクセス:ChatGPT、Claude、Gemini、Kimi、GLM、DeepSeek などのモデルをサポートし、Claude Code、Codex、Cursor などの AI プログラミングツールに対応。

  • 🔎 認可されたデバッグとセキュリティ研究を支援:スクリプト検索、ブレークポイント分析、ネットワークリクエスト追跡、コールスタック検査、コードロジック理解などのマルチステップタスクに適しています。

  • 📦 プロジェクトユーザー限定特典専用プロモーションリンク から登録して初回呼び出しを完了すると、5 ドル相当のテスト枠 / 初回チャージ限定特典を受け取れます。

位置づけ:Claude Code / Codex モデル API 設定のサポート。

機能特徴

  • AI-native ツール設計:ツールの粒度、出力境界、エラーメッセージはすべて Agent の意思決定を中心に設計されており、モデルを無効な次のステップに導かないようにします

  • 振り返り可能なワークフロー:スクリプトソースコード、ネットワーク生データ、バイナリ結果をローカルファイルにエクスポートし、その後の分析入力として再利用できます

  • ブレークポイントコンテキスト実行:一時停止中に call frame 内で直接評価し、スコープ変数を検査し、ステップ実行してソースコードコンテキストを返します

  • スクリプト分析:読み込まれたすべての JS を一覧表示、コード検索、ソースの取得/保存、大型圧縮スクリプトの自動フォーマット

  • ネットワークと WebSocket 分析:リクエストコールスタック、XHR ブレークポイント、Set-Cookie 識別、生の body/header エクスポート、WebSocket メッセージのグループ化

  • ブラウザ状態のリプレイ:現在のサイトの cookies / cache / storage / sessionStorage をクリアし、reload と組み合わせて cookie およびリスク制御フローを再現

  • デフォルトでヘッドフル + 永続化ログイン状態:ブラウザが見える状態で、cookies / localStorage はセッションをまたいで保持

  • 専用 Patchright カーネル:デフォルトで本プロジェクトが独立してメンテナンスする Patchright fork に依存し、上流の既知の共有実装特徴を継続的に修正

  • オプションのアンチ検出層:専用 Patchright のプロトコル層 stealth はデフォルトで有効。強力なアンチクローリングサイトでは --cloak を追加して CloakBrowser バイナリを使用可能

専用 Patchright fork

js-reverse-mcp は Patchright の一般配布パッケージに直接依存せず、本 MCP 専用にコンパイル・公開された @zhizhuodemao/patchright を使用します。この fork は独立したリポジトリで継続的にメンテナンスされ、本 MCP の実際の検出サンプルに合わせて進化します。

  • Patchright の一般配布パッケージに直接依存しない

  • 確認済みの上流共有実装特徴に対してプロトコル層の調整を行い、再コンパイルして公開

  • アンチ検出の調整はページレベルの JS 注入に依存しない

  • evaluate、locator、ページ制御などの元の能力を保持

  • fork は本 MCP 向けの専用リポジトリで継続的にメンテナンス

公開ドキュメントは設計上の境界のみを説明し、内部の検出サンプルと実装詳細は展開しません。専用 fork の目標は確認済みの共有実装特徴を減らすことであり、ブラウザ自動化が絶対に検出されないことを約束するものではありません。

システム要件

クイックスタート(npx)

インストール不要で、MCP クライアント設定に直接追加します:

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    }
  }
}

Claude Code

claude mcp add js-reverse npx js-reverse-mcp

利用可能なモデル API がない場合、またはカスタム API アドレスを設定する必要がある場合は、Claude Code / Codex サードパーティモデル API 設定チュートリアル を参照してください。

Codex

codex mcp add js-reverse -- npx js-reverse-mcp

利用可能なモデル API がない場合、またはカスタム API アドレスを設定する必要がある場合は、Claude Code / Codex サードパーティモデル API 設定チュートリアル を参照してください。

Cursor

Cursor Settings -> MCP -> New MCP Server に移動し、上記の設定を使用します。

VS Code Copilot

code --add-mcp '{"name":"js-reverse","command":"npx","args":["js-reverse-mcp"]}'

ローカルインストール(オプション)

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

その後、MCP 設定でローカルパスを使用します:

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

AI-first 設計

このプロジェクトの核となる目標は「ブラウザを操作できること」ではなく、AI Agent が実際の JS リバースタスクを安定的に完了できるようにすることです:ページを開く、リスク制御を通過する、スクリプトを特定する、ソースを保存する、ブレークポイントを設定する、挙動をトリガーする、ランタイムを検査する、ネットワーク資料をエクスポートする、状態を再現する、そして推論を続ける。

いくつかの設計方針がコード全体に貫かれています:

  • ツールは Agent primitives であり、DevTools メニューのマッピングではないlist_network_requests はインデックス一覧も、reqid による詳細照会も、outputFile による正確な資料エクスポートも可能。evaluate_script はページ内での実行も、ブレークポイントの call frame での実行も、localFilePath 入力の受け取りも可能。

  • 出力は次のステップを導くもの:リスト出力は短くスキャンしやすく保ち、詳細出力には境界があり、長い結果はエクスポートを促し、pending リクエストは実行再開を明確に促し、Agent が完了しない response を待ち続けることを防ぎます。

  • ローカルファイルは分析ワークベンチsave_script_sourcelist_network_requests(..., outputFile)evaluate_script(..., localFilePath) により、Agent はブラウザ、ネットワーク、ローカルファイルの間を行き来でき、長大なコードやバイナリデータをチャットコンテキストに詰め込む必要がありません。

  • 状態はクリア可能、フローはリプレイ可能:デフォルト profile はログイン状態を保持。--isolated は使い捨てのクリーン環境を提供。clear_site_data は現在のサイト関連の状態のみをクリアし、cookie 生成、リスク制御初期化、リクエストチェーンの反復再現に使用します。

  • アンチ検出はデバッグチェーンに奉仕する:CDP サイレントナビゲーション、実視口、Google referer、専用 Patchright fork、CloakBrowser の目標はすべて、Agent がターゲットページに入って分析を続けられるようにすることであり、プロジェクトを汎用クローラーフレームワークにすることではありません。

アンチ検出メカニズム(基盤能力)

アンチ検出は js-reverse-mcp の基盤能力の 1 つです。ラッパー層(この MCP 自体)はゼロ JS 注入で、Object.defineProperty hack は行いません(それ自体が検出シグナルです)。すべてのアンチ検出は互いに重複しない 2 つの層で行われます:

デフォルトモード

--cloak モード

プロトコル層(CDP)

専用 Patchright fork:Runtime.enable / Console.enable を呼ばず、isolated world で evaluate を実行し、自動化 launch flag を除去し、既知の共有実装特徴を継続的に修正

ソースコード層(C++ バイナリパッチ)

なし —— システムの Google Chrome を直接使用

CloakBrowser バイナリ(プラットフォーム別のソースコード層フィンガープリントパッチを提供。navigator.webdriver、canvas、WebGL、audio、GPU、フォント、画面、WebRTC、TLS をカバー)

Profile ディレクトリ

~/.cache/chrome-devtools-mcp/chrome-profile(ログイン状態を永続化)

~/.cache/chrome-devtools-mcp/cloak-profile(デフォルトと物理的に分離)

実際のブラウザ

インストール済みの Google Chrome(Web Store、拡張機能、sync 付き)

カスタム Chromium コンパイル版(Google サービスなし、Web Store なし)

さらにいくつかのナビゲーションレベルの対策(両モードで有効):

  • CDP サイレントナビゲーション —— ページ読み込み時に Network.enable / Debugger.enable をアクティブにせず、リクエスト/コンソール収集は Playwright リスナーのみを経由し、ツールが明示的に CDP を必要とするまでアクティブにしない

  • Google Referer —— new_page はデフォルトで referer: https://www.google.com/ を付与

  • 実視口 —— Playwright デフォルトの 1280×720 の偽視口を無効化し、ブラウザは実際の画面サイズを表示

--cloak を有効にするタイミング:上記だけでは不十分で、サイトのフィンガープリントでブロックされた場合のみ。詳細は docs/cloak.md を参照。

ツール一覧(24 個)

ページとナビゲーション

ツール

説明

select_page

開いているページを一覧表示、またはインデックスでデバッグコンテキストを選択

new_page

新しいページを作成し URL にナビゲート

navigate_page

ナビゲート、戻る、進む、またはページをリフレッシュ

select_frame

すべての frame(iframe)を一覧表示、または実行コンテキストを選択

click_element

厳密マッチで現在の frame 内の単一の可視要素をクリック

take_screenshot

ページのスクリーンショットを撮影

スクリプト分析

ツール

説明

list_scripts

ページに読み込まれたすべての JavaScript スクリプトを一覧表示

get_script_source

スクリプトソースの断片を取得。行範囲または文字オフセットをサポート

save_script_source

完全なスクリプトソースをローカルファイルに保存(大型/圧縮/WASM ファイルに適しています)

search_in_sources

すべてのスクリプトで文字列または正規表現を検索

ブレークポイントと実行制御

ツール

説明

set_breakpoint_on_text

コードテキスト検索による自動ブレークポイント設定(圧縮コードに適しています)

break_on_xhr

URL パターンによる XHR/Fetch ブレークポイント設定

remove_breakpoint

明示的な action で ID、URL、またはすべてのブレークポイントを削除

list_breakpoints

すべてのアクティブなブレークポイントを一覧表示

get_paused_info

一時停止状態、コールスタック、スコープ変数を取得

pause_or_resume

明示的な action で実行を一時停止または再開

step

ステップ実行(over/into/out)、位置とソースコードコンテキストを返す

ネットワークと WebSocket

ツール

説明

list_network_requests

ネットワークリクエストの一覧表示、詳細表示、または header/body/query などの生資料のエクスポート

clear_network_requests

明示的な確認後、現在のページで収集されたリクエストと body cache をクリア

get_request_initiator

ネットワークリクエストの JavaScript コールスタックを取得

get_websocket_messages

WebSocket 接続の一覧表示、メッセージパターンの分析、またはメッセージ詳細の取得

ブラウザ状態

ツール

説明

clear_site_data

現在のサイト関連の cookies、origin storage、sessionStorage をクリア。グローバル HTTP cache のクリアは明示的に選択可能

検査ツール

ツール

説明

evaluate_script

ページまたはブレークポイントコンテキストで JavaScript を実行。メインワールド、結果保存、ローカル入力ファイルの読み取りをサポート

list_console_messages

コンソールメッセージの一覧表示、または msgid による単一詳細の取得

使用例

JS リバース基本フロー

  1. ターゲットページを開く

打开 https://example.com 并列出所有加载的 JS 脚本
  1. ターゲット関数を探す

在所有脚本中搜索包含 "encrypt" 的代码
  1. ブレークポイントを設定

在加密函数入口处设置断点
  1. トリガーして分析

在页面上触发操作,断点命中后检查参数、调用栈和作用域变量

WebSocket プロトコル分析

列出 WebSocket 连接,分析消息模式,查看特定类型的消息内容

Agent 推奨の完全キャプチャフロー

ナビゲーション段階では意図的に CDP をサイレントに保つため、初回のターゲットページ進入時には Network / Debugger ドメインはすぐには開かれません。推奨フローは、まずリスク制御を通過してから、リフレッシュしてキャプチャします:

1. new_page 打开目标页
2. 调用 list_network_requests 激活 collectors
3. navigate_page(type="reload") 刷新页面
4. 再次 list_network_requests 查看完整请求
5. 对关键 reqid 使用 outputFile 导出原始材料
1. clear_site_data(confirm=true) 清理当前站点状态
2. navigate_page(type="reload") 重新触发初始化
3. list_network_requests 找到设置 cookie 或提交 sensor 的请求
4. 导出 requestBody / responseHeaders / responseBody
5. 用 evaluate_script + localFilePath 在页面上下文中复算或验证

設定オプション

CLI は簡潔に保たれ、すべての flag はオプションです。99% のシナリオではデフォルトで十分です。ローカルファイルを扱う場合は、--allowedRoots で Agent が読み書きできるディレクトリを制限することをお勧めします。

オプション

説明

デフォルト値

--cloak

CloakBrowser ステルスバイナリに切り替え(システム Chrome の代わり)。プラットフォーム別の C++ ソースコード層フィンガープリントパッチを有効化。初回起動時に ~200MB のバイナリを自動ダウンロード。フィンガープリント ID は profile ごとに永続化。詳細は docs/cloak.md を参照。

false

--isolated

一時的な user-data-dir を使用(cookies/localStorage は保持されず、終了時に自動クリーンアップ)

false

--browserUrl, -u

実行中の Chrome インスタンスに接続(CDP HTTP エンドポイント、例:http://127.0.0.1:9222)。MCP が WebSocket debugger URL を自動検出します。ローカル Chrome、AdsPower、BitBrowser などでこのエンドポイントを取得する方法は docs/cdp-endpoint.md を参照。

--logFile

0600 通常ファイルに書き込む MCP デバッグログ。詳細ログは DEBUG=mcp:* のみを使用。DEBUG=* は使用しないでください。ブラウザプロトコルログはページ、Cookie、スクリプト、資格情報を漏洩する可能性があります。

--allowedRoots

Agent が読み書きできるローカルディレクトリを繰り返し指定可能。実パスを解決し、シンボリックリンクによる境界外アクセスを拒否。有効時は file:view-source:file:filesystem:file: ブラウザページを無効化。未指定時はローカルファイルアクセスがディレクトリ制限を受けず、起動時にセキュリティ警告を表示。

設定例

デフォルト —— システム Chrome + 永続化ログイン状態(ほとんどのデバッグシナリオで推奨):

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    }
  }
}

--cloak —— 強力なアンチクローリングサイト(Cloudflare Turnstile / DataDome / FingerprintJS 対策):

強く推奨:先にバイナリを事前ダウンロードしてください(1 回限り、~30–60 秒)。これをしない場合--cloak 付きで MCP を初回起動すると ~200MB をサイレントにダウンロードし、MCP がフリーズしたように見えます:

npx cloakbrowser install

cloakbrowser パッケージは optionalDependencies 経由で一緒にインストール済みです。このコマンドはその内蔵バイナリダウンロードロジックをトリガーするだけで、プログレスバーが表示されます)

{
  "mcpServers": {
    "js-reverse-cloak": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--cloak"]
    }
  }
}

2 セット並行 —— 2 つの MCP インスタンスの profile を物理的に分離し、ターゲットサイトに応じて切り替え:

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp"]
    },
    "js-reverse-cloak": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--cloak"]
    }
  }
}

--isolated —— 毎回新しい profile(cookies/localStorage を保持しない):

{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--isolated"]
    }
  }
}

実行中の Chrome / サードパーティフィンガープリントブラウザに接続

--browserUrlCDP endpoint/json/version に応答する HTTP エンドポイント)のみを受け付け、ベンダー独自の Local API は受け付けません。ローカル Chrome、AdsPower、BitBrowser などのシナリオで CDP ポートを取得する方法は、専用ドキュメントを参照してください:

📖 docs/cdp-endpoint.md —— CDP デバッグポートの取得方法

最短パス(ローカル Chrome):

# 先关掉所有 Chrome 窗口,然后
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug
{
  "mcpServers": {
    "js-reverse": {
      "command": "npx",
      "args": ["js-reverse-mcp", "--browserUrl", "http://127.0.0.1:9222"]
    }
  }
}

フィンガープリントブラウザ(AdsPower、BitBrowser など)の CDP ポートは起動のたびにランダムに変化するため、ベンダーの Local API でブラウザを起動してから抽出する必要があります。手順とサンプルスクリプトは上記のドキュメントにあります。

トラブルシューティング

アンチクローリングシステムにブロックされた場合

一部のサイトにアクセスしてブロックされた場合(知乎の 40362、Cloudflare チャレンジの無限ループなど):

  1. まず --isolated を試す —— 新しい profile で残留状態の汚染を排除:

    "args": ["js-reverse-mcp", "--isolated"]
  2. それでもダメなら --cloak を有効化 —— プラットフォーム別のソースコード層フィンガープリントパッチを有効化:

    "args": ["js-reverse-mcp", "--cloak"]
  3. 最後に永続化 profile の手動クリアを検討(ログイン状態が失われます):

    rm -rf ~/.cache/chrome-devtools-mcp/chrome-profile

--cloak を有効にするべきタイミング、すべきでないタイミングの詳細は docs/cloak.md を参照してください。

Agent ルーティング評価(メンテナー向け)

npm run eval:routing:validate は、実際の MCP tools/list、server instructions と evals/tool-routing.json の 30 件のツール選択契約をオフラインで検証します。このコマンドはモデルエンドポイントにアクセスせず、presubmit に組み込まれています。

実際のモデル評価は明示的な opt-in で、OpenAI-compatible Chat Completions エンドポイントを 1 件ずつ呼び出し、費用が発生する可能性があります:

MCP_ROUTING_EVAL_ENDPOINT=https://api.example.com/v1/chat/completions \
MCP_ROUTING_EVAL_MODEL=model-name \
MCP_ROUTING_EVAL_API_KEY=secret \
npm run eval:routing

MCP_ROUTING_EVAL_API_KEY は認証不要のローカルエンドポイントでは省略可能。資格情報付きのリモートエンドポイントは HTTPS を使用する必要があり、HTTP は loopback のみ許可されます。MCP_ROUTING_EVAL_TIMEOUT_MS で単一リクエストのタイムアウトを調整できます。デフォルトでは 100% の合格率を要求し、モデル間比較時には MCP_ROUTING_EVAL_MIN_PASS_RATE(0, 1] の閾値を設定できます。評価は API key、エンドポイント、エンドポイントのエラーレスポンス本文を出力しません。

セキュリティ注意事項

このツールはブラウザのコンテンツを MCP クライアントに公開し、ブラウザ内のあらゆるデータの検査、デバッグ、変更を許可します。機密情報を含むページでは使用しないでください。

evaluate_script.localFilePath、各種 outputFile/filePath は、MCP プロセスがホストマシンのファイルを読み書きする原因となります。本番環境や共有環境では、1つ以上の --allowedRoots を使用して専用の作業ディレクトリに限定する必要があります。未設定の場合、アクセス範囲は無制限となります。--allowedRoots を有効にすると、file:view-source:file:filesystem:file: のブラウザページも拒否され、ブラウザのナビゲーションによるディレクトリ境界の迂回を防ぎます。ローカルページのデバッグが必要な場合は、ローカルファイルの露出リスクを明確に受け入れるセッションでのみ、このオプションを設定しないでください。

ライセンス

Apache-2.0

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
16hResponse time
4dRelease cycle
37Releases (12mo)
Commit activity
Issues opened vs closed

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to debug frontend applications by providing direct access to browser DevTools, React state, DOM inspection, and runtime debugging capabilities. Bridges the gap between AI and complex web applications for autonomous debugging and issue resolution.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.
    18
    14
    2
    Apache 2.0

View all related MCP servers

Related MCP Connectors

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

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Give AI coding agents access to your Vynix visual feedback, bug reports, and AI diagnosis.

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/zhizhuodemao/js-reverse-mcp'

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