jshookmcp について
jshookmcpは、JavaScriptやフロントエンド全般のリバースエンジニアリングを行うAIエージェント向けのMCPサーバーです。検索可能なツールプロファイル、セッション復元、ブラウザー・ネットワーク・WASM・ネイティブ解析を備え、大規模なツール群を段階的に利用できます。
主な機能
- 01検索優先のツールプロファイル
- 02CDPによるブラウザー自動化
- 03ネットワークとWebSocketの傍受
- 04JavaScriptとWASMの解析
- 05プロセスとバイナリーの計装
- 06拡張可能なプラグインとワークフロー
活用シーン
- 01圧縮されたJavaScriptの解析と難読化解除
- 02OAuth通信の取得と再生
- 03WASMルーチンの逆アセンブルと計装
- 04APKの一次調査と実行中プロセスの検査
MCP 対応
stdioとStreamable HTTPで、リバースエンジニアリング用ツールをMCPクライアントに公開します。検索・ワークフロー・フルの各プロファイルで利用するツール群を制御でき、HTTPセッションは再接続後に状態を復元できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 呼び出す前に、意図を2~5個の主要概念に絞り込んでください。どのような操作を、どの対象に、どのドメインで行うかを示します。絞り込んだキーワードだけを渡し、元のユーザーリクエストは渡さないでください。 |
| top_k | number | いいえ | 返す結果の最大数(デフォルト:10、最大:30) |
| auto_activate | boolean | いいえ | 見つかったツールを自動的に有効化し、すぐに呼び出せるようにします。検索のみで有効化しない場合は false に設定します(デフォルト:true) |
詳細
@jshookmcp/jshook
AI エージェントのための、検索優先でプロファイルを考慮したリバースエンジニアリングの作業環境です。
ページにフックし、ネットワークをキャプチャし、バンドルを難読化解除し、WASM を逆アセンブルし、プロセスを計測します。そして、スキーマでモデルを圧倒することなく、攻撃対象領域全体に手が届くよう、1 つの MCP サーバーが支えます。
英語 · 中国語
特徴 · 機能 · ユースケース · 主な特徴 · トランスポート · レジストリ · アーキテクチャ · ビルド
ドキュメント · はじめに · 設定 · ツールリファレンス
JS解析用の多くのMCPサーバーは、手作りのツールをいくつか公開するか、単一のブラウザーエンジンをラップしています。jshookは、フロントエンドのリバースエンジニアリングのためのオペレーティングシステムに近い存在です。自動検出される36のドメイン、トークンコストを抑える検索優先のメタツール、そして壊れたページや切断されたセッションにも耐えるランタイム復旧機能を備えています。
- 検索優先で、プロファイルを考慮。
searchプロファイルでは約3Kトークン分のツールメタデータを読み込み、fullプロファイルでは約109Kトークンで735個すべてのツールを公開します(2026-10-10に測定。この数値はツール数に応じて増えるため、カタログが拡大したら再測定してください)。エージェントはタスクの進行に合わせて、最初からスキーマに圧倒されることなく、search→workflow→fullと切り替えます。 - ランタイム復旧とセッションの分離。 Streamable HTTPセッションでは、再接続後に有効化されたドメイン、ブラウザーのアタッチ状態、カバレッジ状態が復元されます。クライアントごとのブラウザー側の状態は分離されるため、複数のエージェントが互いのCDPセッションを妨げることはありません。
- フルスタックのブラウザー自動化。 CDP経由でChromiumとCamoufoxをアンチ検出機能付きで操作し、明示的な入力を受け取るCAPTCHAソルバー(ページや機能を組み込みでプローブすることはありません)、必要に応じて生成する自己署名HTTPSインターセプトCA、HTTP/2フレーム構築機能を備えています。
- 文字列検索ではなく、本格的なリバースエンジニアリング。 wabt(
wasm2wat/wasm-decompile/wasm-objdump)によるWASMの逆アセンブル、Frida/Ghidra/IDAブリッジ、ネイティブFFIスキャン、ハードウェアブレークポイント、PEイントロスペクション、GraphQL/Burp Suiteプロキシブリッジ、AST変換に対応しています。ツールとしてラップした正規表現呼び出しだけではありません。 - 動的な拡張性。 ホットリロード可能なプラグイン、宣言型ワークフロー、自動検出により、再デプロイなしでサーバーを拡張し続けられます。
機能の概要
利用できる機能を一覧で確認できます。各行から、以下の詳細な機能の概要に移動できます。
| 領域 | 主な機能 |
|---|---|
| ツールプロファイル | search(約3Kトークン、BM25 + ハイブリッドベクトルランキング) · workflow(複合スクリプト) · full(全735ツール) |
| ブラウザー自動化 | Chromium および Camoufox · 既存ターゲットへの CDP 接続 · 検出回避プリセット · 明示的な入力による CAPTCHA ソルバー · ポップアップ、ダウンロード、権限、プロトコルのインターセプター |
| ネットワークインターセプト | HTTP/1.1 + HTTP/2 フレーム構築 · CA を自動生成する MITM プロキシ · WebSocket キャプチャ · GraphQL イントロスペクションヘルパー · Burp Suite ブリッジ |
| JS フックと解析 | LLM を活用した難読化解除 · 暗号ルーチンの検出 · AST の把握 · ソースマップの再構築 · スクリプト/スクリプトレットの抽出と再生 |
| WASM リバースエンジニアリング | wabt による逆アセンブル/C へのトランスパイル(wasm2wat / wasm-decompile / wasm-objdump / wasm2c) · Binaryen wasm-opt · 純粋な TS によるセクションパーサー · インポート/エクスポート一覧表示 · name セクションの復元を伴う、セクションごとの文字列抽出 · 関数単位のバイナリ差分 · 難読化検出 · 関数および基本ブロック単位の計装 |
| プロセスとメモリのフォレンジック | ネイティブ FFI スキャン · 相互参照グラフ · ハードウェアブレークポイント · PE イントロスペクション · 実行中プロセスへのアタッチ · 領域ガード付きメモリ読み書き |
| バイナリ計装 | Frida ブリッジ · Ghidra および IDA ブリッジ · システムコールのフック · TLS キーログとセッション用ツール · Mojo IPC 解析 |
| Android および APK 解析 | APK 静的トリアージ · マニフェストのダンプとクエリ · apktool によるデコード/ビルド · jadx による逆コンパイルとコード検索 · DEX スキャン · ネイティブライブラリ一覧表示 · APK 署名 · unidbg エミュレーション · 実行時 DEX ダンプ |
| ネイティブランタイム | 外部アーキテクチャのサンプル向けネイティブエミュレーター · プラットフォームのイントロスペクション · Mojo IPC · Dart Inspector · デバイス上のトラフィック向け ADB ブリッジ |
| エンコーディングと変換 | URL/Base64/Hex/JWT/Protobuf エンコーダー · AST 変換 · ストリーミングデコードパイプライン |
| 連携 | 進捗表示、キャンセル、非同期モードに対応したバックグラウンドタスクキュー · マルチエージェント連携 · カバレッジレポート |
| スキーマ優先のメタツール | describe_tool · 引数検証付きの call_tool · coverage_report · search_tools |
| プラグイン可能な拡張レジストリ | ホットリロード対応プラグイン · 宣言型ワークフロー · 自動検出されるドメイン |
ユースケース
| シナリオ | 実行すること | 関連するドメイン |
|---|---|---|
| ミニファイされたバンドルをざっと確認する | search_tools → deobfuscate → search_in_scripts → understand_code | core |
| CAPTCHA チャレンジをリバースする | Camoufox ページを操作 → スクリーンショットを撮影 → 明示的な入力で解決 → 再生 | browser, canvas |
| OAuth フローをキャプチャして再生する | proxy_start(CA を自動生成) → network_get_requests → graphql_introspect → graphql_replay | proxy, network, graphql |
| WASM の暗号ルーチンをリバースする | wasm_dump → wasm_disassemble → generate_hooks → memory_breakpoint | wasm, binary-instrument, memory |
| 不審な APK をトリアージする | apk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_file | binary-instrument |
| 切断されたブラウザーセッションを復旧する | Streamable HTTP に再接続 → 有効化されたドメインとブラウザーの状態を復元 | browser, coordination |
| Node プロセスの認証情報を監査する | process_list → memory_scan_filtered → binary_strings_extract | process, memory, binary-instrument |
| カスタムワークフローを構築する | list_extension_workflows → run_extension_workflow | workflow, extension-registry |
| 実行中プロセスの関数にフックする | frida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functions | binary-instrument |
クイックスタート
グローバルインストールは不要です。MCP クライアントの設定に追加すれば、すぐに使えます。
Claude Desktop / Cursor(claude_desktop_config.json):
{
"mcpServers": {
"jshook": {
"command": "npx",
"args": ["-y", "@jshookmcp/jshook@latest"],
"env": {
"MCP_TOOL_PROFILE": "search",
"npm_config_omit": "optional"
}
}
}
}
(Windows:npx が見つからない場合は、npx.cmd の絶対パスを使用してください。)
この軽量構成では、オプションの ONNX、Z3、Binaryen、Camoufox、Playwright パッケージを省略します。フルプロファイルのランタイムが必要な場合は、npm_config_omit を削除してください。
複数のエージェントで1つのデーモンを共有する
デフォルトの stdio 構成では、MCP ホストごとに jshook プロセスが1つ起動します。埋め込みモデル、ブラウザーランタイム、キャッシュを共有するには、ローカルの Streamable HTTP デーモンを1つ起動します。
pnpm build
pnpm daemon
ベクトル検索は、すべてのトランスポートでデフォルトで有効です。軽量な静的モデルを使用し、カタログの埋め込みはディスクに保存され、必要に応じて読み込まれ、アイドル時に解放されます。字句検索で十分な場合は、SEARCH_VECTOR_ENABLED=false を設定してください。
各 MCP クライアントの HTTP/URL サーバー設定で、http://127.0.0.1:3000/mcp を指定します。各クライアントにはそれぞれ独自の MCP セッションと応答ルートが割り当てられ、重量級のランタイムリソースは1つのプロセス内に維持されます。デフォルトのループバックバインドを維持してください。エンドポイントを localhost の外部に公開する場合は、MCP_AUTH_TOKEN を設定してください。
タスクの進行に合わせてプロファイルを切り替える
{
"env": {
"MCP_TOOL_PROFILE": "search" // start here, ~3K tokens of metadata
}
}
複合スクリプトを連結し始めたら MCP_TOOL_PROFILE を workflow に切り替え、すべてのツールが必要になった場合は full に切り替えてください。coverage_report で、必要に応じて有効なツールセットを確認できます。
主な特長
- 段階的なプロファイル。
search(メタデータ約3Kトークン)から始め、複合スクリプトを連結する場合はworkflowに切り替え、すべてのツールが実際に必要な場合にのみfullに移行します。coverage_reportで、必要に応じて有効な項目を確認できます。 - メタツール。
describe_toolは JSON Schema を返し、call_toolは呼び出し前に引数を検証します。すべてのツールにはreadOnlyHint/destructiveHint/idempotentHint/openWorldHintが付属します。 - ブラウザーの自動化。 CDP 経由の Chromium と Camoufox、既存ターゲットへの接続、検出回避プリセット、ポップアップ/ダウンロード/権限のインターセプター、明示的な入力を用いる CAPTCHA ソルバー、3つのドキュメントフェーズでの JS/CSS の挿入、再接続後も保持されるカバレッジ。
- ネットワークのインターセプト。 自動生成される HTTPS インターセプト CA、HTTP/1.1 + HTTP/2 フレームの構築、WebSocket のキャプチャ、GraphQL ヘルパー、Burp Suite ブリッジを、すべて同じ MCP ツール群で利用できます。
- リバースエンジニアリング。 wabt WASM の逆アセンブル(
wasm2wat/wasm-decompile/wasm-objdump)と Binaryenwasm-opt、Frida/Ghidra/IDA ブリッジ、ハードウェアブレークポイント、ネイティブ FFI スキャン、PE のイントロスペクション、システムコールのフック、AST 変換、ソースマップの再構築。 - セッションの復旧。 Streamable HTTP トランスポートは、再接続後に有効化済みドメイン、ブラウザー接続状態、カバレッジ状態を復元します。ブラウザー側の状態はクライアントごとに分離されます。
- プラグインとワークフロー。 ディレクトリを追加するだけでドメインを利用できます。YAML パイプラインを記述して、1つのツールとして実行できます。レジストリは自動的に検出します。
トランスポートとデプロイ
このサーバーは、すぐに使える2種類のトランスポートをサポートしています。
| トランスポート | 使用する場面 | 備考 |
|---|---|---|
| stdio | Claude Desktop、Cursor、その他の単一ホストのクライアントでのデフォルト | MCP ホストごとにフルプロセスを1つ起動します。軽量プロファイルを推奨します |
| Streamable HTTP | 複数のエージェントで埋め込みモデル、ブラウザーランタイム、キャッシュを共有する場合 | デフォルトではループバックにバインドされます。外部に公開する前に MCP_AUTH_TOKEN を設定してください |
どちらのトランスポートも同じツール群を提供します。coverage_report で各セッションで有効化されたドメインを確認できます。長時間実行されるセッションでは、再接続後もブラウザー接続状態、カバレッジ状態、ツールの有効化状態が復元されます。
本番環境へのデプロイについては、セキュリティと本番環境ガイドを参照してください。
最近のランタイムに関する注意事項
- HTTP トランスポートは、独立した MCP セッションを多重化し、再接続後にランタイム状態を復元できるようになりました。
proxy_startは、必要に応じてローカルの HTTPS 傍受 CA を自動生成します。- ブラウザーの CAPTCHA 解決は、明示的な入力に基づく方式になりました。必要に応じて
taskKind、siteKey、imageBase64、callbackName、responseSelectorを渡してください。組み込みのウィジェット/ページ署名のプローブは意図的に使用しません。
レジストリのスナップショット
以下の組み込み機能一覧はランタイムレジストリから生成され、CI で検証されています。
- パッケージバージョン:
0.4.2 - 組み込みツール:
735 - ドメイン:
adb-bridge、binary-instrument、browser、canvas、coordination、core、cross-domain、dart-inspector、debugger、encoding、exploit-dev、extension-registry、graphql、instrumentation、maintenance、memory、mojo-ipc、native-bridge、native-emulator、network、platform、process、protocol-analysis、proxy、session、sourcemap、streaming、syscall-hook、tasks、tls-inspector、trace、transform、v8-inspector、wasm、webgpu、workflow - 注:このスナップショットはランタイムレジストリから生成されています。件数を手動で編集しないでください。
アーキテクチャ
- ランタイムレジストリ —
manifest.tsを使ってドメインを自動検出します。ファイルを1つ作成するだけでドメインを追加できます。 - 遅延初期化 — ハンドラーは起動時ではなく、初回呼び出し時にインスタンス化されます。
- BM25 + ベクトル検索 — ハイブリッドランキングと適応型重み付けを備えた
search_toolsメタツールです。 - MCP
ToolAnnotations— 各ツールにreadOnlyHint/destructiveHint/idempotentHint/openWorldHintが付与されています。 - プロファイルの段階 —
search(約3Kトークン)→workflow(複合スクリプト)→full(全735ツール)。 - トランスポートの対称性 — stdio と Streamable HTTP は同じ機能を公開し、セッションはクライアントごとに分離されます。
正式な詳細については、アーキテクチャガイドと設定リファレンスをご覧ください。
ソースからビルド
要件:Node.js 22.22.2 以降、pnpm 10.x。
pnpm install
pnpm build
pnpm start # run the built server from dist/
pnpm dev # run from source under tsx watch
pnpm check # drift guards (metadata + openapi + domain + event contracts) + lint + format check + typecheck + unit tests
pnpm test # Vitest unit suites
pnpm test:e2e # end-to-end browser/tooling suites
pnpm daemon # run the Streamable HTTP daemon after build
ネイティブヘルパーは pnpm build でバンドルされます。初回実行時に、プロファイルに応じてサーバーがオプションのランタイム(ONNX、Z3、Binaryen、Camoufox、Playwright)をダウンロードする場合があります。
プロジェクトの統計
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。