vmoranv/jshookmcp

A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.

📦 @jshookmcp/jshook とは?

MCP (Model-Context-Protocol) サーバーとして動作する、検索ファーストかつプロファイル対応のリバースエンジニアリングワークスペースです。AIエージェント(Claude Desktop、Cursorなど)が、ブラウザ自動化からWASM逆アセンブルまで、フロントエンドおよびバイナリ解析のための豊富なツールボックスを、数千ものツールスキーマを事前に読み込むことなく利用できるようにします。


🎯 コアコンセプト

  • MCPサーバー – AIエージェントが呼び出せる統一されたJSON-RPC風インターフェースを提供します。
  • プロファイル – 3つの軽量ツールセット(search 約3Kトークン、workflow、full 約40Kトークン)を用意。エージェントは最小のプロファイルから開始し、タスクの成長に合わせて「昇格」することで、LLMのトークン消費を低く抑えます。
  • ランタイム復元 – ストリーミング可能なHTTPセッションにより、切断後もブラウザの接続状態、カバレッジデータ、有効化されたドメインを復元しつつ、各クライアントのセッションを分離して保持します。

🔧 主な機能(概要)

分野 できること
ブラウザ自動化 CDP経由でのChromium/Camoufox操作、アンチ検知プリセット、CAPTCHA解決、HTTPS-MITM、HTTP/2フレーム構築、ポップアップ/ダウンロード/権限インターセプト。
ネットワークインターセプト HTTPS CA自動生成、WebSocketキャプチャ、GraphQLイントロスペクション、Burp Suiteブリッジ。
JS解析 LLM支援による難読化解除、暗号ルーチン検出、AST変換、ソースマップ再構築、スクリプト抽出/リプレイ。
WASM RE wabtベースの逆アセンブル (wasm2wat, wasm-decompile, wasm-objdump)、Binaryen最適化、セクション解析、差分、難読化検出、インストゥルメンテーション。
バイナリ・プロセスフォレンジック Frida/Ghidra/IDAブリッジ、ハードウェアブレークポイント、PEイントロスペクション、メモリ読み書き、相互参照グラフ。
Android/APK 静的トリアージ、マニフェストダンプ、apktoolデコード/ビルド、jadx逆コンパイル、DEXスキャン、ネイティブライブラリ一覧、unidbgエミュレーション。
調整 進捗/キャンセル機能付きタスクキュー、マルチエージェントセッション管理、カバレッジレポート。
拡張性 ホットリロードプラグイン、宣言的YAMLワークフロー、自動ドメイン検出(36個内蔵)。

📚 代表的なユースケース

シナリオ jshookの活用方法
難読化されたバンドルの確認 search_tools → deobfuscate → search_in_scripts → understand_code (coreドメインを使用)。
CAPTCHAの解決 Camoufoxを起動し、スクリーンショットを撮り、LLMに渡して手動入力し、解決策をリプレイ。
OAuthフローのキャプチャとリプレイ MITMプロキシ (proxy_start) を起動し、リクエストを収集、GraphQLをイントロスペクトし、シーケンスをリプレイ。
WASM暗号ルーチンのリバース モジュールをダンプし、逆アセンブルし、フックを生成し、メモリブレークポイントを設定。
不審なAPKの監査 静的トリアージを実行し、マニフェストをダンプし、jadxで逆コンパイルし、DEX内の不審なパターンをスキャン。
切断されたブラウザセッションの復元 ストリーミング可能なHTTPトランスポート経由で再接続。サーバーが以前のCDP接続とカバレッジ状態を復元。
カスタムワークフローの構築 利用可能な拡張ワークフローを一覧表示し、単一ツールとして実行 (run_extension_workflow)。
ライブプロセスのフック Fridaブリッジを使用して起動/アタッチし、インターセプターをインストールして関数を列挙。

🚀 AIエージェントクライアント向けクイックスタート

MCPクライアント設定にサーバーを追加します(Claude Desktop / Cursorの例):

{
  "mcpServers": {
    "jshook": {
      "command": "npx",
      "args": ["-y", "@jshookmcp/jshook@latest"],
      "env": {
        "MCP_TOOL_PROFILE": "search",
        "npm_config_omit": "optional"
      }
    }
  }
}

search プロファイルは最小限の3Kトークンのメタデータのみを読み込みます。

複数のエージェントで重いランタイム(ブラウザ、埋め込みなど)を共有したい場合は、共有デーモンを起動します:

pnpm build
pnpm daemon   # 127.0.0.1:3000 で Streamable HTTP サーバーを実行

その後、各クライアントを http://127.0.0.1:3000/mcp に向けます。各クライアントは引き続き分離されたMCPセッションを取得します。


🏗️ アーキテクチャの概要

  • ランタイムレジストリ – ドメインは manifest.ts から検出されます。ファイルを追加すると自動的に新しいドメインが作成されます。
  • 遅延初期化 – ツールハンドラーは初回呼び出し時にのみインスタンス化され、起動を高速に保ちます。
  • ハイブリッド検索 – search_tools は BM25 + オプションのベクトルランキングを使用して、スキーマ全体を読み込まずに適切なツールを見つけます。
  • ツールアノテーション – 各ツールは readOnlyHint、destructiveHint、idempotentHint、openWorldHint を宣言し、より安全なエージェントオーケストレーションを実現します。
  • トランスポートの対称性 – stdio と Streamable HTTP は全く同じツールインターフェースを公開します。後者はセッションを多重化し、再接続後に状態を復元します。

📦 ソースからのビルド/実行

# 前提条件
#   Node 22.22.2+   pnpm 10.x
pnpm install          # 依存関係のインストール(必要な場合を除き、オプションのランタイムは省略)
pnpm build            # TypeScriptのコンパイル
pnpm start            # サーバーの実行 (stdioモード)
# または
pnpm daemon           # HTTPデーモンの実行

その他のスクリプト:

  • pnpm dev – ウォッチモードでの開発。
  • pnpm check – リント、フォーマット、型チェック、生成されたメタデータの検証。
  • pnpm test / pnpm test:e2e – ユニットテストおよびエンドツーエンドテストスイート。

📄 ライセンス

AGPL-v3 (LICENSE を参照)。


結論: @jshookmcp/jshook は、軽量なMCPインターフェースを通じてLLMエージェントが駆動できる、フルスタックで拡張可能なリバースエンジニアリングプラットフォームです。ブラウザ自動化から低レベルのバイナリ解析までを提供しつつ、トークン消費を制御下に置くことができます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト