deepadb について
deepadbは、Android端末の確認、操作、テスト、診断を行うAIエージェント向けのMCPサーバーです。ADB経由で動作し、Termux上では端末内で直接実行する方式に切り替わります。
主な機能
- 01ADB経由の端末確認と操作
- 02Termuxでのコマンド直接実行
- 03アプリ、ファイル、権限の管理
- 04ログ収集と端末状態の診断
- 05ネットワーク、ファームウェア、ハードウェアの分析
活用シーン
- 01接続端末とシステムプロパティの確認
- 02UI操作の自動化とアプリテスト
- 03アプリクラッシュや端末問題の調査
- 04ネットワークやベースバンドの確認
MCP 対応
ツール、リソース、プロンプトを通じて、Android端末の操作機能をMCPクライアントに公開します。stdio、HTTP/SSE、WebSocketに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
209掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
DeepADB
ADB経由、またはTermuxを介したAndroidデバイス上で直接、デバイスの調査、制御、テスト、診断を行う必要があるAIエージェント向けのMCP(Model Context Protocol)サーバーです。
49のモジュールにまたがる209個のツール、5個のリソース、4個のプロンプトを提供します。UI自動化やアプリケーション管理から、ログ、ネットワークキャプチャ、ベースバンド、ファームウェア、セキュリティ、ハードウェア診断まで対応します。
はじめに
DeepADBはローカルMCPサーバーとして動作します。デフォルトではADBを使用し、Androidデバイス上でTermuxを検出すると自動的に直接実行へ切り替わります。
git clone https://github.com/fullread/DeepADB.git
cd DeepADB
npm ci
npm run build
npm start
MCPクライアントの設定にbuild/index.jsを追加し、次のワークフローから始めてください。
| 目的 | 最初に使うもの |
|---|---|
| ツールチェーンと接続済みデバイスを確認する | adb_health_check、続けてadb_devices |
| 現在のAndroid UIを調査する | adb_screen_state、続けてadb_ui_dump |
| デバイスまたはアプリを診断する | adb_device_info、adb_logcat、adb_dumpsys |
ローカル接続をガイドに沿って設定するには、Claude Code Configurationを参照してください。HTTP、WebSocket、GraphQLトランスポートをループバック以外に公開する前に、SECURITY.mdをお読みください。
アーキテクチャ
┌──────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / claude.ai) │
└──────────────────────┬───────────────────────────┘
│ stdio (JSON-RPC) or HTTP/SSE or WebSocket
┌──────────────────────▼───────────────────────────┐
│ DeepADB Server │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Tool Modules (49) │ │
│ │ device │ shell │ packages │ files │ logs │ │
│ │ diagnostics │ ui │ build │ health │ │
│ │ wireless │ control │ logcat-watch │ │
│ │ forwarding │ screen-record │ emulator │ │
│ │ testing │ multi-device │ snapshot │ │
│ │ network-capture │ ci │ plugins │ baseband │ │
│ │ accessibility │ regression │ │
│ │ device-farm │ registry │ at-commands │ │
│ │ screenshot-diff │ workflow │ sensors │ │
│ │ split-apk │ mirroring │ test-gen │ │
│ │ ota-monitor │ ril-intercept │ │
│ │ device-profiles │ firmware-analysis │ │
│ │ workflow-market │ selinux-audit │ │
│ │ thermal-power │ network-discovery │ │
│ │ input-gestures │ wireless-firmware │ │
│ │ app-network │ database-inspector │ │
│ │ runtime-audit │ wear │ │
│ ├─────────────────────────────────────────────┤ │
│ │ Resources (5) │ Prompts (4) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ ToolContext (unified DI) │ │
│ │ server │ bridge │ deviceManager │ │
│ │ logger │ security │ config │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Middleware Layer │ │
│ │ OutputProcessor │ SecurityMiddleware │ │
│ │ InputSanitizer │ Logger (stderr-safe) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Bridge Layer (auto-detect) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌────────────────────┐ │ │
│ │ │ ADB Bridge │ OR │ Local Bridge │ │ │
│ │ │ (PC mode) │ │ (on-device mode) │ │ │
│ │ │ via adb.exe │ │ via sh/su direct │ │ │
│ │ └──────┬───────┘ └────────┬───────────┘ │ │
│ │ │ │ │ │
│ │ Retry │ Timeout │ Cache │ Serial routing │ │
│ └─────────┼─────────────────────┼─────────────┘ │
└────────────┼─────────────────────┼───────────────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ ADB Binary │ │ sh / su │
│ (USB/WiFi) │ │ (local) │
└───────┬───────┘ └───────┬───────┘
│ │
┌─────▼────────────────────▼─────┐
│ Android Device │
└────────────────────────────────┘
デュアルモードアーキテクチャ
DeepADBは、起動時に自動検出される2つのモードで動作します。
ADBモード(デフォルト)— PC側ブリッジ
AI Agent (PC) ←→ MCP ←→ DeepADB (PC) ←→ ADB (USB) ←→ Android Device
標準モードです。DeepADBはPC/Mac/Linuxホスト上で動作し、ADB経由のUSBでデバイスと通信します。209個のツールすべてがADBブリッジ経由で登録され、一時的な障害時には自動的に再試行します。ホスト上で実行できない環境固有のツールは、その要件を通知します。
デバイス上モード — ローカルで直接実行
AI Agent (Termux) ←→ MCP (stdio/HTTP) ←→ DeepADB (Termux) ←→ sh/su (local)
DeepADB を Android デバイス上(例:Termux 内)で直接実行すると、環境を自動検出して LocalBridge に切り替わります。コマンドは sh/su を介して直接実行されるため、ADB サーバー、USB、シリアライズのオーバーヘッドは不要です。同じ 209 個の MCP ツールが登録され、sqlite3 などのオプションのデバイス上バイナリが利用できない場合は、機能に応じたガイダンスが表示されます。
v1.1.4 ホストハードウェア検証: Pixel 6a/Android 16 での回帰テストが完了し、**604 件成功、0 件失敗、環境固有の想定されたスキップ 17 件(合計 621 件)**でした。これには、/dev/umts_router でのライブ AT/OK 検証、読み取り専用の SQLite スキーマスナップショットとクリーンアップ(ガード付き)、統合ランタイム監査、アプリごとのルートコンテキスト、単一デバイスの Wear 事前チェックが含まれます。スキップされたのは、デバイス上のみで実行される QEMU チェック 5 件と、Windows ホストまたは利用できない tcpdump に関するセキュリティチェック 12 件です。
v1.1.3 ハードウェアベースライン: Pixel 6a(Android 16、Termux + Magisk + QEMU 10.2.1)で、4 つの条件からなるテストマトリクスを検証しました。ホスト(ADB)とデバイス上(LocalBridge)のそれぞれで、デバイス PIN あり/なしをテストし、すべての条件で失敗 0 件でした。v1.1.3 のテストスイートは、ホスト/ADB 構成で 577 件、デバイス上で 613 件でした。この差は、デバイス上でのみ実行される QEMU 仮想化および Alpine VM 起動テストによるものです。
- ADB モード、PIN なし: 556 件成功/0 件失敗/21 件スキップ(合計 577 件)。スキップ:QEMU 5 件(デバイス上のみ)、gracefulKill のユニットテスト 7 件(POSIX シグナルが必要なため、Windows ホストではスキップ)、tcpdump のサニタイズテスト 3 件(tcpdump は root 専用で、root 権限のない ADB シェルからはアクセス不可)、ホストシェルのラウンドトリップテスト 2 件(POSIX の /bin/sh が必要)、画面状態テスト 4 件(DA_TEST_PIN が必要)。
- ADB モード、PIN あり: 560 件成功/0 件失敗/17 件スキップ(合計 577 件)。画面状態テスト 4 件ではロックを解除して実行します。
- デバイス上モード、PIN なし: 606 件成功/0 件失敗/7 件スキップ(合計 613 件)。KVM アクセラレーションを使った Alpine Linux VM の起動、big.LITTLE CPU トポロジーの検出、ゲスト ADB 接続エラー処理、VM の正常なシャットダウンを含め、すべての QEMU テストが実行されます。tcpdump と gracefulKill のテストスイートも実行されます(root + POSIX)。スキップ:Alpine カーネル/initrd/ディスクがすでにキャッシュされている場合に何もしない QEMU セットアップ手順 3 件、PIN が必要な画面状態テスト 4 件。
- デバイス上モード、PIN あり: 610 件成功/0 件失敗/3 件スキップ(合計 613 件)。環境によって実行可能なテストはすべて実行されます。スキップされた 3 件は、キャッシュ済み VM のセットアップ手順です。
権限昇格: ADB モードでは、すべてのシェルコマンドは uid=2000(shell ユーザー)で実行されます。このユーザーにはシステムレベルの権限があります。Termux では、コマンドは通常のアプリユーザーとして実行されます。root(Magisk)が利用可能な場合、LocalBridge は su を介して特権コマンドを自動的に昇格します。
- コマンド許可リスト: 16 個のシステムコマンド(
settings、dumpsys、am、input、screencap、screenrecord、uiautomator、app_process、getenforce、setenforce、cmd、pm、wm、svc、ip、ifconfig)はsu -cを介して実行され、ADB モードと同じ動作になります。 - パスベースの昇格:
/sdcard、/storage、/system/のパスを参照するコマンドは、Android のスコープ付きストレージ制限を回避するために昇格されます。 - root の検出: 初回使用時に
su -c idプローブを一度実行し、その結果をキャッシュします。root が利用できない場合は、正常に機能を縮退します。 - 昇格の許可リストは固定されています(
ReadonlySet+Object.freeze)。環境変数やランタイム API では設定できません。
自動検出: /system/build.prop(すべての Android デバイスに存在し、ホストには存在しない)を確認します。DA_LOCAL=true または DA_LOCAL=false で上書きできます。
デバイス上でのセットアップ(Termux):
pkg install nodejs-lts git
git clone <deepadb-repo> && cd deepadb
npm install && npm run build
npm start # stdio — for local AI agents (Claude Code, OpenCode)
DA_HTTP_PORT=3000 npm start # HTTP/SSE — for remote AI access over WiFi
Claude Code の設定
{
"mcpServers": {
"deepadb": {
"command": "node",
"args": ["/path/to/DeepADB/build/index.js"]
}
}
}
利用可能なツール(209)
まず、タスクに合った機能領域から始めてください。完全なリファレンスは以下にあります。
ツールの完全なリファレンス
ヘルスチェック(1 ツール)
adb_health_check— ADB バイナリ、サーバー、デバイス接続、認証、ルートアクセス、ストレージへの書き込み可否を含む、ツールチェーンの包括的な検証
ランタイム監査(1 ツール)
adb_runtime_audit— トランスポート、Android ユーザー空間、ルート、SELinux、ストレージ、コマンド機能、UI/ネットワーク診断、SQLite、モデムノード、Wear の前提条件を対象とする、統合された読み取り専用の準備状況監査
デバイス(3 ツール)
adb_devices— 接続中のすべてのデバイスの状態、モデル、製品情報を一覧表示adb_device_info— デバイスの詳細なプロパティ(モデル、OS、SDK、ビルド、セキュリティパッチ、ABI)adb_getprop— 指定したシステムプロパティを読み取るか、すべてのプロパティをダンプ
シェル(2 ツール)
adb_shell— タイムアウトを設定して任意のシェルコマンドを実行(セキュリティチェック済み)adb_root_shell— su 経由でルート権限としてコマンドを実行(ルート化されたデバイスが必要、セキュリティチェック済み)
パッケージ(12 ツール)
adb_install— 置換/ダウングレードのオプションを指定して APK をインストールadb_uninstall— 必要に応じてデータを保持しながらパッケージを削除adb_list_packages— 名前または種類(すべて/システム/サードパーティ)で絞り込んでパッケージを一覧表示adb_package_info— パッケージの詳細情報(バージョン、権限、パス)adb_clear_data— アプリのデータとキャッシュをすべて消去adb_grant_permission— パッケージに実行時権限を付与adb_revoke_permission— パッケージの実行時権限を取り消す(拒否フローのテスト用に権限状態をリセット)adb_list_permissions— パッケージで宣言済みおよび付与済みのすべての権限を一覧表示。付与済み/拒否済みで絞り込み可能adb_force_stop— アプリを直ちに強制停止adb_start_app— パッケージ名でアプリを起動(ランチャーアクティビティを解決)adb_restart_app— 1 回の呼び出しで強制停止してから再起動(待機時間を設定可能)adb_resolve_intents— インテントフィルターが登録されたアクティビティ、サービス、レシーバーを検出
Room と SQLite の検査(1 ツール)
adb_sqlite_inspect— パッケージ単位のデータベース一覧表示、スキーマ検査、検証済みの読み取り専用 SQL を、行数/出力数の厳格な上限付きで実行します。run-asを優先し、失敗した場合はルートにフォールバックします。シンボリックリンクされたデータベース/WAL ファイルは拒否し、デバイスにsqlite3があればそれを使用します。ない場合は、検査後にホスト側の非公開かつサイズ制限付きスナップショットを削除します。
ファイル(18 個のツール)
adb_push— ローカルファイルをデバイスにプッシュします(カーネルパスを厳格にブロック、ファイルシステム種別を考慮、ストレージ情報を報告)adb_pull— デバイスからローカルファイルシステムにファイルをプルしますadb_ls— デバイスのディレクトリー内容を一覧表示します(簡易または詳細)adb_cat— デバイス上のテキストファイルを読み取ります(行数制限は任意)adb_file_write— heredoc を使ってテキストファイルを作成または上書きします(バッファー上限に関する警告、ファイルシステムを考慮、書き込み後に検証)adb_find— 深さを制御し、結果数を制限してファイル名/パターンでファイルを検索しますadb_file_stat— ファイルのメタデータ:サイズ、権限、タイムスタンプ、所有者、SELinux コンテキストadb_file_checksum— SHA-256/SHA-1/MD5 ハッシュを計算します(サイズに基づいてタイムアウトを推定)adb_mkdir— ディレクトリーを作成します(親ディレクトリーも作成する-pに対応、カーネルパスを厳格にブロック)adb_rm— 深さに基づく再帰保護とシンボリックリンクの解決により、ファイル/ディレクトリーを削除しますadb_file_move— 移動/名前変更を行います(ソースの深さを保護し、実行後に検証)adb_file_copy— コピーを行います(実行前にサイズと空き容量を確認し、実行後にサイズの一致を検証)adb_file_chmod— 権限を変更します(Zod で検証された 8 進数モード、深さに基づく再帰保護)adb_file_touch— 空のファイルを作成するか、タイムスタンプを更新します(タイムスタンプの明示的な指定に対応)adb_file_fsinfo— ファイルシステムのレポート:種別、マウント、容量、機能、SELinux、制限事項adb_file_chown— 所有者を変更します(root が必要、深さに基づく再帰保護)adb_grep— 固定文字列を既定値として、再帰検索の深さを制御し、結果数を制限してファイル内容を検索しますadb_file_replace— ファイル内のテキストを検索/置換します(sed を使用、適切なエスケープ、バックアップオプション)
ログ — スナップショット(3 個のツール)
adb_logcat— タグ、優先度、grep、バッファーを選択してフィルタリングした logcat スナップショットを取得しますadb_logcat_clear— すべての logcat バッファーをクリアしますadb_logcat_crash— クラッシュバッファーのログスナップショットを取得します
ログ — 永続ウォッチャー(4 個のツール)
adb_logcat_start— リングバッファーにログを蓄積するバックグラウンドの logcat ウォッチャーを開始しますadb_logcat_poll— 実行中のウォッチャーから前回のポーリング以降の新しい行を取得しますadb_logcat_stop— ウォッチャーセッション(またはすべてのセッション)を停止しますadb_logcat_sessions— 統計情報とともに、アクティブなウォッチャーセッションをすべて一覧表示します
診断(9 個のツール)
adb_dumpsys— 任意のサービスに対して dumpsys を実行します(またはすべてのサービスを一覧表示します)adb_telephony— セル情報、信号強度、ネットワーク登録情報を取得します(並列クエリ)adb_battery— バッテリーの状態、残量、温度、充電情報を取得しますadb_network— WiFi、モバイル通信、IP 接続情報を取得します(並列クエリ)adb_top— CPU とメモリーの使用状況スナップショットを取得しますadb_perf_snapshot— パッケージのメモリー、フレーム統計、CPU プロファイリングを並列で取得しますadb_bugreport— 完全なバグレポートの ZIP を取得します(デバイスの状態、ログ、システム情報)adb_crash_logs— /data/anr/ と /data/tombstones/ から ANR トレースと tombstone クラッシュダンプを取得しますadb_heap_dump— メモリー分析のため、実行中のプロセスからヒープダンプ(.hprof)を取得します
アプリごとのルートコンテキスト(1 個のツール)
adb_app_route_context— インストール済みパッケージを UID に解決し、ルートやポリシーを変更せずに、そのパッケージに適用されるip ruleの範囲、ルーティングテーブル、ネットワークポリシー、VPN、デフォルトネットワークの状態を関連付けます
UI(10 個のツール)
adb_screencap— ファイル名をサニタイズしてスクリーンショットを撮影し、ローカルに保存しますadb_screencap_annotated— UI 要素のバウンディングボックスと番号付きラベルを PNG に合成したスクリーンショットを撮影します。注釈付き画像のパスとテキストの凡例を返します。番号で要素を参照する LLM のワークフローに最適ですadb_current_activity— フォーカス中のアクティビティと最上位のウィンドウスタックを取得しますadb_input— タップ、スワイプ、テキスト、キーイベントの入力を送信しますadb_start_activity— インテントまたはコンポーネント名でアクティビティを起動しますadb_ui_dump— UI 階層全体をダンプします。3 種類の出力形式に対応しています。text(デフォルト。人が読みやすい形式)、tsv(自動化ループでトークンを効率的に使用できる、コンパクトなタブ区切り形式)、xml(生の uiautomator XML)adb_ui_find— テキスト、resource-id、または content-description で UI 階層を検索します(タップ座標を返します)adb_screen_state— 1 回の呼び出しで画面の状態をまとめて取得します。フォアグラウンドのアクティビティ、画面の寸法と密度、向き、バッテリー残量、操作可能な要素の TSV リストを取得します。個別のツール呼び出しを 3~4 回行う代わりに使用できますadb_screenrecord_start— デバイス画面の録画を開始します(1~180 秒。デバイス上に保存)adb_screenrecord_stop— 録画を停止し、mp4 動画ファイルをローカルに取り込みます
デバイス制御(9 個のツール)
adb_airplane_mode— ブロードキャストと検証を行って機内モードを切り替えますadb_airplane_cycle— 携帯電話ネットワークへの再登録を強制するため、機内モードをオン/オフに切り替えますadb_wifi— WiFi を有効または無効にしますadb_mobile_data— モバイルデータ通信を有効または無効にしますadb_location— 位置情報モードを設定します(off/sensors/battery/high)adb_screen— 画面を起動、スリープ、切り替え、ロック、またはロック解除します。ロック時にはdumpsys windowでキーロックの状態を検証します。ロック解除にはwm dismiss-keyguardを使用します(スワイプ式のキーロックで動作します)。完全な PIN 入力手順を実行するにはpinを指定します。画面を起動し、上にスワイプしてキーパッドを表示し、PIN を入力して確定した後、キーロックのスリープトークンが解放されたことを検証しますadb_settings_get— system/secure/global 名前空間の任意の Android 設定を読み取りますadb_settings_put— 任意の Android 設定を書き込み、読み戻して検証しますadb_reboot— デバイスを再起動します(通常、リカバリー、またはブートローダーモード)
ワイヤレスデバッグ(4 個のツール)
adb_pair— ペアリングコードを使用して、WiFi 経由でデバイスとペアリングしますadb_connect— WiFi/TCP 経由でデバイスに接続しますadb_disconnect— ワイヤレスデバイスとの接続を切断しますadb_tcpip— USB デバイスを TCP/IP モードに切り替えます(デバイスの IP を自動検出します)
ポートフォワーディング(8 個のツール)
adb_forward— ローカルポートをデバイスのポートに転送します(ホスト → デバイス)adb_reverse— デバイスのポートをホストにリバース転送します(デバイス → ホスト)adb_forward_list— 有効なフォワードおよびリバースのポートマッピングをすべて一覧表示しますadb_forward_remove— ポートフォワードを削除するか、すべてのフォワードを削除しますadb_reverse_remove— リバースフォワードを削除するか、すべてのリバースフォワードを削除しますadb_tunnel_open— 不透明な ID を使用して、管理対象トンネルを開きます。フォワード方向でポートが省略されている場合は、空いているホストポートを自動で選択します。サーバー終了時にトンネルが削除されるよう、クリーンアップを登録しますadb_tunnel_list— 有効な管理対象トンネル(adb_tunnel_open で開いたもの)を一覧表示します。デバイスによる絞り込みは任意です。ID、方向、エンドポイント、経過時間を表示しますadb_tunnel_close— ID を指定して管理対象トンネルを閉じます。または id="all" ですべて一度に閉じます
エミュレーター管理(3 個のツール)
adb_avd_list— 利用可能な AVD を一覧表示します(PC モード)。デバイス上モードでは、KVM/QEMU の仮想化機能を検出しますadb_emulator_start— ヘッドレス、コールドブート、GPU の各オプションを指定して AVD を起動します(PC モード)。デバイス上モードでは、QEMU の代替手段を提示しますadb_emulator_stop— 実行中のエミュレーターを正常にシャットダウンします
QEMU/KVM 仮想化(8 ツール)
adb_qemu_setup— デバイス上の仮想化に必要な QEMU を確認してインストールします。KVM を検証し、ホストの CPU/RAM を報告して、Termux pkg 経由でインストールしますadb_qemu_images— VM ディスクイメージを管理します。一覧表示、作成(qcow2/raw)、削除に対応しています。パスの包含検証により、パストラバーサルを防止しますadb_qemu_start— リソースを動的に割り当てて、KVM アクセラレーション対応の VM を起動します。CPU 数(ホスト用に 1 つを確保し、合計から 1 を引いた数)とメモリ(物理 RAM の 65%)を最適な値に自動検出します。Android の起動に向けた kernel/initrd/append と、ADB ポートフォワーディングに対応していますadb_qemu_stop— 実行中の VM を停止します(正常終了は SIGTERM、強制終了は SIGKILL)。終了前にゲスト ADB を自動切断します。名前が指定されていない場合は、実行中の VM を報告しますadb_qemu_status— KVM/QEMU の利用可否、ホストのリソース予算、PID/リソース/稼働時間/ポート/ADB 接続状態を含む実行中の VM、イメージの一覧を含む全ステータスを表示しますadb_qemu_connect— 実行中の VM のゲスト ADB サービスに接続します。localhost のみに制限されており、ポートは実行中の VM の状態から取得し、ユーザー入力は使用しません。複数デバイス対応ツールからゲスト VM を操作できるようにしますadb_qemu_disconnect— ゲスト VM の ADB サービスを切断します。接続状態をクリアし、デバイス一覧からゲストを削除しますadb_qemu_guest_shell— ADB 経由でゲスト VM 上のシェルコマンドを実行します。セキュリティミドルウェアの適用対象です。ゲストのシリアルは内部で取得されるため、ユーザーが指定したホスト/IP が ADB バイナリに渡されることはありません
テストセッション(3 ツール)
adb_test_session_start— 整理された出力ディレクトリを用意して、名前付きのテストセッションを開始しますadb_test_step— スクリーンショットと logcat をセッションに保存し、番号付きのステップを記録しますadb_test_session_end— セッションを終了し、サマリーマニフェストを書き込んで、ディレクトリパスを返します
複数デバイスのオーケストレーション(4 ツール)
adb_multi_shell— すべてまたは選択したデバイスで、コマンドを並列実行します(セキュリティチェック済み)adb_multi_install— 複数のデバイスに APK を同時にインストールしますadb_multi_compare— すべてのデバイスでコマンドを実行し、出力の違いを強調表示しますadb_multi_test— 比較テストのワークフローです。事前定義された診断プロファイル(firmware/security/network/identity/full)またはカスタムのコマンドリストを、QEMU ゲストを含むすべてのデバイスで実行し、チェックごとに比較して、一致点と相違点を報告します
Wear データレイヤー(1 ツール)
adb_wear_datalayer_preflight— 電話/ウォッチの役割、Google Play services、Bluetooth、オプションのパッケージ、コンパニオンとの関連付け、Data Layer サービスを読み取り専用で事前確認します。ペアリング識別子は意図的に省略されます
入力ジェスチャーと UI 自動化(15 個のツール)
adb_input_drag— 点 A から点 B までドラッグします(draganddropを使用し、古い Android ではスワイプにフォールバックします)adb_input_fling— リストやページ表示を勢いよくスクロールする高速フリングジェスチャーです(再生時間は 20~200ms で設定可能)adb_input_long_press— 指定した座標を、設定可能な時間だけ長押ししますadb_input_double_tap— タップ間隔を設定可能なダブルタップですadb_input_text— スペースや特殊文字を処理する専用のテキスト入力ですadb_open_url— VIEW インテントでデバイス上の URL を開きますadb_orientation— 画面の向きを取得または設定します(auto/portrait/landscape/reverse)adb_clipboard— デバイスのクリップボードを読み書きしますadb_input_pinch— マルチタッチのピンチ(縮小)またはスプレッド(拡大)ジェスチャーです。2 本の指が中心点を挟んで対称に移動します。多層式の入力方法:並列のinput swipe(汎用、root 不要)または rawsendeventMT Type B プロトコル(真のマルチタッチ、root が必要)を使用します。getevent -pでタッチスクリーンデバイスと機能を自動検出します。中心、半径、再生時間、角度、補間ステップを設定できますadb_tap_element— テキスト/resource-id/content-description で要素を検索し、その中央をタップしますadb_wait_element— 要素が表示または非表示になるまで UI 階層をポーリングします(タイムアウト/ポーリング間隔を設定可能)adb_wait_stable— 連続する UI ダンプが一致するまでポーリングします(画面遷移後の安定化に使用)adb_scroll_until— 対象の要素が見つかるまで繰り返しスクロールします。自動タップも任意で設定できますadb_screenshot_compressed— トークン効率の高いワークフロー向けに、サイズ/品質のメタデータ付きでスクリーンショットを撮影しますadb_batch_actions— セキュリティ検証を行いながら、複数の入力操作(tap/swipe/fling/long_press/double_tap/keyevent/text/drag/pinch/back/home/sleep)を 1 回のツール呼び出しで実行します
デバイス情報(3 個のツール)
adb_screen_size— 画面解像度、ディスプレイ密度(DPI)、アスペクト比、DP 幅を 1 回の呼び出しで取得しますadb_device_state— バッテリー残量/状態/温度、ネットワーク種別、WiFi の状態、画面のオン/オフ、向き、フォアグラウンドアクティビティをまとめて取得しますadb_notifications— アクティブな通知を、パッケージ、タイトル、テキスト、重要度、チャネル、フラグ、タイムスタンプとともに解析します(パッケージでフィルタリング可能)
スナップショット/復元(3 個のツール)
adb_snapshot_capture— デバイスの包括的な状態(パッケージ、設定、プロパティ)を JSON に保存しますadb_snapshot_compare— 現在の状態と保存済みスナップショットを比較します(追加/削除されたパッケージ、変更された設定)adb_snapshot_restore_settings— 保存済みスナップショットから global/secure 設定を復元します
ネットワークキャプチャ(3 個のツール)
adb_tcpdump_start— tcpdump でバックグラウンドのパケットキャプチャを開始します(root が必要)adb_tcpdump_stop— キャプチャを停止し、Wireshark で解析するために pcap ファイルをローカルに取得しますadb_network_connections— アクティブな TCP/UDP 接続を表示します(ss/netstat を使用し、利用できない場合は /proc/net にフォールバックします)
CI/CD 統合(3 個のツール)
adb_ci_wait_boot— デバイス/エミュレーターが完全に起動するまで待機します(タイムアウトを設定可能)adb_ci_device_ready— 構造化された合否形式で準備状況を確認します(起動、PM、画面、ネットワーク、ディスク)adb_ci_run_tests—am instrumentで計測テストを実行し、合否結果を解析します
ベースバンド/モデム(6 個のツール)
adb_baseband_info— モデムのファームウェア、RIL 実装、チップセット、SIM 設定(スロットごとの状態を含むデュアル SIM 検出)、ネットワーク登録情報を取得します。IMEI の取得はオプトインの場合のみです(includeImei=true)adb_cell_identity— 携帯電話ネットワークの解析に使用する、dumpsys phone からのセル ID(CID)、TAC/LAC、EARFCN、PCI、PLMN を取得しますadb_signal_detail— RSRP、RSRQ、SINR、RSSI、タイミングアドバンスなど、信号解析用の無線生測定値を取得しますadb_neighboring_cells— ID と信号強度を含む、検出可能なすべての LTE/5G/WCDMA/GSM セルを取得しますadb_carrier_config— キャリア設定のダンプ、キャリア ID、優先 APN を取得しますadb_modem_logs— RIL 無線バッファー、テレフォニーフレームワーク、RILJ/RILC、カーネル dmesg(root)からモデムログを取得します
アクセシビリティ監査(3 ツール)
adb_a11y_audit— WCAG の自動監査:ラベルの欠落、タッチターゲットのサイズ不足(<48dp)、説明の重複、フォーカスできないクリック可能要素adb_a11y_touch_targets— タッチターゲットの寸法を dp 単位で示し、サイズ不足を通知しながら、すべてのインタラクティブ要素を一覧表示しますadb_a11y_tree— スクリーンリーダーに関連する要素のみを、ロール、ラベル、状態とともに表示する、アクセシビリティに特化した UI ツリー
回帰検出(3 ツール)
adb_regression_baseline— パフォーマンスのベースライン(メモリ、CPU、フレーム統計、バッテリー、ネットワーク)を JSON に記録しますadb_regression_check— 設定可能な回帰しきい値を使って、現在のパフォーマンスを保存済みのベースラインと比較しますadb_regression_history— 保存済みのベースラインを傾向とともに一覧表示します。必要に応じてパッケージで絞り込めます
デバイスファーム(3 ツール)
adb_farm_run— Firebase Test Lab で、複数のデバイスモデルと API レベルを対象にインストルメント化テストを実行しますadb_farm_results— Test Lab の実行結果を取得するか、最近のテストマトリクスを一覧表示しますadb_farm_matrix— Firebase Test Lab で利用可能なデバイスモデルと Android バージョンを一覧表示します
プラグインレジストリ(3 ツール)
adb_registry_search— コミュニティのプラグインレジストリを検索し、インストール状況と利用可能な更新を表示しますadb_registry_install— レジストリから名前を指定してプラグインをダウンロードし、インストールしますadb_registry_installed— ローカルにインストールされたプラグインを、バージョンと更新の有無とともに一覧表示します
プラグイン(2 ツール)
adb_plugin_list— 読み込み済みのすべてのプラグインを、パスと読み込み時間とともに一覧表示しますadb_plugin_info— プラグインシステムのドキュメントとプラグイン形式の例を表示します
ビルド(2 ツール)
adb_gradle— プロジェクトディレクトリで任意の Gradle タスクを実行しますadb_build_and_install— デバッグ APK をビルドし、ANDROID_SERIAL を指定してインストールします
AT コマンド(6 ツール)
adb_shannon_session— Shannon/Exynos チップセットの検出、root 権限、キャラクターデバイスのモデムポート、および安全なAT/OKハンドシェイクをまとめて確認します。Google Tensor の/dev/umts_routerに対応し、終端結果が得られるまで範囲を限定した CPIF の読み取りを再実行します。必要に応じて読み取り専用のATIを送信します。モデム設定コマンドは送信しませんadb_at_detect— チップセットファミリー(Shannon、Qualcomm、MediaTek、Unisoc、汎用)に基づいて、モデムの AT コマンドデバイスノードを自動検出します。既知のパスをプローブし、最初に応答したノードを返しますadb_at_send— モデムに単一の AT コマンドを送信し、応答を取得します。ポートを自動検出するか、手動で指定できます。危険なコマンドのブロックリストがあり、強制的に上書きできますadb_at_batch— 複数の AT コマンドを順番に送信し、コマンドごとの結果を取得します。コマンド間の遅延を設定できますadb_at_probe— 標準的な診断プローブを実行します:モデム ID、信号品質、ネットワーク登録、SIM の状態、オペレーター、機能モードadb_at_cross_validate— AT コマンドの応答(ATI、AT+CGMR、AT+CGMM)をシステムプロパティと比較し、ベースバンドファームウェアを相互検証します。不一致を、ファームウェアの改ざん、不完全な OTA、またはプロパティの偽装の可能性として通知します。Shannon 固有の AT+DEVCONINFO に対応しています。root 権限が必要です
スクリーンショット差分(3 ツール)
adb_screenshot_baseline— メタデータ(寸法、SHA-256、タイムスタンプ)とともに、名前を付けたスクリーンショットのベースラインを撮影して保存しますadb_screenshot_diff— PNG をピクセル単位でデコードし、現在の画面を保存済みのベースラインと比較します。変更されたピクセル数/割合、変更領域のバウンディングボックスを報告し、時計などの動的要素を差分から除外する許容しきい値を設定できますadb_screenshot_history— 保存済みのスクリーンショットのベースラインをすべて、メタデータとともに一覧表示します
ワークフローオーケストレーション(3 ツール)
adb_workflow_run— JSON で定義されたワークフローを実行します。変数の置換、条件付きステップ、ループ、結果の取得に対応した、デバイス操作を順番に実行します。アクション:shell、root_shell、install、screenshot、logcat、getprop、sleepadb_workflow_validate— 実行せずにワークフローの構造を検証し、実行計画を表示しますadb_workflow_list— workflows ディレクトリ内の保存済みワークフローファイルを一覧表示します
分割 APK 管理(4 ツール)
adb_install_bundle—install-multipleを使って、置き換えとダウングレードのオプションを指定し、分割 APK(アプリバンドル)をインストールしますadb_list_splits— パッケージのすべての APK 分割パスを分類(base、config.density、config.language など)および合計サイズとともに表示しますadb_extract_apks— 分析またはバックアップ用に、パッケージのすべての分割 APK をローカルディレクトリに取得しますadb_apex_list— インストール済み APEX モジュールをバージョン情報とともに一覧表示します
デバイスのミラーリング(3 ツール)
adb_mirror_start— scrcpy で画面のライブミラーリングを開始します。ウィンドウ表示モードとヘッドレスモード、録画、ビットレート/FPS/解像度の調整、スリープ防止、画面消灯に対応しますadb_mirror_stop— デバイスまたはすべてのデバイスのミラーリングを停止しますadb_mirror_status— scrcpy が利用可能か確認し、アクティブなミラーリングセッションを一覧表示します
自動テスト生成(3 ツール)
adb_test_gen_from_ui— 現在の画面の操作可能な要素を分析し、各要素をタップしてスクリーンショットを撮影し、クラッシュを確認するワークフローを生成しますadb_test_gen_from_intents— パッケージに登録されたアクティビティを分析し、エクスポートされた各アクティビティをクラッシュ検出付きで起動するワークフローを生成しますadb_test_gen_save— 生成したワークフロー JSON を、後で実行できるよう workflows ディレクトリに保存します
OTA アップデートの監視(3 ツール)
adb_ota_fingerprint— システムのフィンガープリントを取得します:ビルド ID、Android バージョン、セキュリティパッチ、ブートローダー、ベースバンドファームウェア、カーネル、A/B スロットadb_ota_check— 現在のシステム状態を保存済みのフィンガープリントと比較し、OTA アップデートを検出します。変更されたフィールドを特定し、ベースラインの再設定を推奨しますadb_ota_history— デバイスに保存されたすべてのフィンガープリントを、バージョンの経時的な推移とともに一覧表示します
RIL メッセージの傍受(3 ツール)
adb_ril_start— radio の logcat バッファーから RIL メッセージのキャプチャを開始します。登録、セル情報、信号、ネットワーク、セキュリティ、ハンドオーバー、NAS イベントに分類しますadb_ril_poll— カテゴリで絞り込んで、キャプチャした RIL メッセージを取得します。カテゴリの分布を表示しますadb_ril_stop— カテゴリの概要とともに、RIL キャプチャセッションを停止します
デバイスプロファイル(3 ツール)
adb_profile_detect— デバイスプロファイルを自動検出して作成します:ハードウェア ID、チップセットの系統、モデムノード、root の状態、5G 対応、デュアル SIM 構成を特定します。既知の特異性について、組み込みライブラリと照合しますadb_profile_save— デバイスプロファイルをプロファイルライブラリに保存しますadb_profile_list— 組み込みおよびユーザーが保存したデバイスプロファイルを一覧表示します
モデムファームウェア分析(3 ツール)
adb_firmware_probe— ファームウェアを包括的に特定します:ベースバンド(Shannon/Qualcomm/MediaTek/Unisoc/HiSilicon/Intel)、ブートローダー、RIL 実装を解析し、構造化されたコンポーネントとして出力します。カーネル、セキュリティパッチ、A/B スロット、Verified Boot の状態、VBMeta、ハイパーバイザー、OTA パーティションの一覧を報告しますadb_firmware_diff— 保存済みのフィンガープリント間、またはライブデバイスとの間で、すべてのファームウェアコンポーネント(ベースバンド、ブートローダー、カーネル、セキュリティパッチ、ビルド ID、Android バージョン、RIL)を比較します。変更が検出された場合、ベースバンドとブートローダーを詳細に解析して差分を出力しますadb_firmware_history— 保存されたすべての OTA フィンガープリントを対象に、複数コンポーネントの変更(ベースバンド、ブートローダー、カーネル、セキュリティパッチ、ビルド ID、Android バージョン)と解析済みベースバンド差分を検出しながら、ファームウェアの推移を追跡します
ワイヤレスファームウェア(4 ツール)
adb_wifi_firmware— WiFi チップセットとファームウェアの識別:ドライバーのバージョン、ファームウェアのバージョン、対応バンド(2.4/5/6 GHz)、WiFi 規格の検出(5/6/6E/7)、現在の接続情報。MAC アドレスの取得はオプトインのみadb_bluetooth_firmware— Bluetooth ファームウェアとチップセットの識別:ファームウェアのバージョン、BT バージョン(LMP に基づく 4.0~5.4)、アダプターの状態、LE 機能(2M PHY、Coded PHY、拡張アドバタイジング)、アクティブなプロファイル(A2DP/HFP/HID/LE Audio)、ペアリング済みデバイス数。MAC アドレス/名前の取得はオプトインのみadb_nfc_firmware— NFC コントローラーファームウェア:コントローラーの種類(NXP/Broadcom/Samsung/ST)、ファームウェアのバージョン、対応テクノロジー(NFC-A/B/F/V、MIFARE)、セキュアエレメント(eSE/UICC)、HCE のサポートadb_gps_firmware— GNSS/GPS チップセットとファームウェアの識別:ハードウェアモデル(メーカー、チップ、ファームウェア)、対応コンステレーション(GPS/GLONASS/Galileo/BeiDou/QZSS/NavIC/SBAS)、周波数を含む信号タイプ、デュアル周波数(L1+L5)の検出、生 GNSS 測定機能、A-GPS モード(MSB/MSA)、SUPL サーバー設定、搬送波位相測定
ワークフローマーケットプレイス(3 ツール)
adb_market_search— キーワードとタグで絞り込み、コミュニティで共有されたワークフロー定義をワークフローマーケットプレイスから検索します。インストール状況も表示しますadb_market_install— マーケットプレイスのワークフローをダウンロードし、検証(JSON 構造+SHA-256 整合性)してインストールします。すぐに adb_workflow_run で使用できますadb_market_export— ローカルのワークフローをマーケットプレイスのメタデータ(作成者、バージョン、タグ、SHA-256)とともにパッケージ化し、共有用のレジストリマニフェストエントリを生成します
SELinux と権限の監査(3 ツール)
adb_selinux_status— SELinux の強制モード、ポリシーバージョン、シェルコンテキスト、直近の AVC 拒否数を表示します。root を使用すると、カーネルの dmesg による拒否統計を取得できますadb_selinux_denials— 直近の AVC 拒否メッセージを一覧表示し、送信元/送信先のコンテキスト、権限クラス、拒否された操作を解析して表示します。プロセスによる絞り込みに対応していますadb_permission_audit— パッケージの実行時権限の付与状況を危険な権限カテゴリ(カメラ、位置情報、電話、SMS など)ごとに監査します。機密性の高い権限の付与を警告します
サーマルと電力のプロファイリング(3 ツール)
adb_thermal_snapshot— すべてのサーマルゾーンの温度、CPU ごとの周波数/ガバナー、冷却デバイスの状態、バッテリーの温度/電流/電圧/消費電力を取得します。ベースラインを JSON として任意で保存できますadb_thermal_compare— 現在のサーマル状態を保存済みのベースラインと比較し、ゾーンごとの温度差とバッテリー電流の変化を表示しますadb_battery_drain— 設定可能な時間(3~60 秒)にわたってバッテリーの消耗率を測定します。平均 mA、mW、推定 %/時間を報告します。パッケージ固有の batterystats も任意で取得できます
ネットワークの検出(3 ツール)
adb_network_scan— ARP テーブルと任意の IP 範囲スイープを使って、ローカルネットワーク上の ADB 対応デバイスをスキャンします。ポート 5555-5558 を対象に、バッチ処理による並列 TCP プローブを実行しますadb_network_device_ip— 複数の方法で、接続済みデバイスの WiFi IP を取得します。ADB TCP の状態とワイヤレス接続手順も表示しますadb_network_auto_connect— 検出と接続をワンステップで実行します。ADB デバイスをスキャンし、見つかったリスナーごとに自動で adb connect を実行します
ハードウェアセンサーへのアクセス(2 ツール)
adb_sensor_read— dumpsys sensorservice を介して、ハードウェアセンサーの現在値を読み取ります。ベンダー、タイプ、モード、レート範囲、ウェイク機能を含むすべてのセンサーを列挙します。最後に記録された値をタイムスタンプ付きで返し、軸名を付けて表示します。カテゴリフィルター(13 カテゴリ)と listOnly 検出モードに対応しています。root は不要ですadb_iio_read— Linux IIO サブシステムからハードウェアの生データを読み取ります。IIO デバイスを自動検出し、カーネルドライバー別に分類します。Tensor/Exynos では、SoC サブシステムごとのリアルタイム消費電力を示す、レールごとの ODPM 電力モニターを公開します。汎用 IIO パスでは、キャリブレーション済みのスケールとオフセットを適用した生チャンネルデータを処理します。root が必要です
結果ハンドル(3 ツール)
adb_result_list— 一時ディレクトリベースのキャッシュにあるアクティブな結果ハンドルを一覧表示します。各ハンドルのツール、名前、サイズ、経過時間、残り TTL を表示しますadb_result_get— ツールと名前を指定して、保存されたハンドルの内容を取得します。元のコンテンツブロックを、ソースツールが生成した形式のまま返し、最終アクセス時刻を更新します。URI ベースで取得する場合は、代わりにresult://{tool}/{name}MCP リソースを使用してくださいadb_result_drop— 保存された結果ハンドルを削除するか、現在の名前空間にあるすべてのハンドルを消去します。特定のハンドルを削除するにはtoolとnameの両方を渡し、すべて削除するにはall: trueを渡します。DA_AUTH_TOKEN を変更する前に使用すると便利です(変更しないと、古いトークンハッシュのディレクトリに孤立したハンドルが残ります)
MCP リソース(5)
MCP クライアントからアクセスできる、読み取り専用のデバイス状態情報です。
device://list— 状態とモデル情報を含む、接続中のすべてのデバイスの一覧device://info/{serial}— デバイスのプロパティ(モデル、OS、ビルド、ABI)device://battery/{serial}— 解析済みのバッテリー状態(レベル、充電状態、温度、電圧)device://telephony/{serial}— 携帯電話の分析に使用するテレフォニーレジストリの状態result://{tool}/{name}— 保存されたツール結果ハンドル。URI で解決します。result_handleパラメーターによる結果ハンドルの保存を有効にしたツールが作成します。adb_result_list に一覧表示されます
MCP プロンプト(4)
複数ステップで行う一般的なデバッグタスク向けの、事前構築済みワークフローテンプレートです。
debug-crash— logcat をクリア → アプリを再起動 → 再現を待機 → クラッシュバッファーを取得 → 分析deploy-and-test— ビルド → インストール → logcat をクリア → ウォッチャーを開始 → 起動 → スクリーンショットを撮影 → 報告telephony-snapshot— テレフォニー状態、SIM/ネットワーク事業者、ネットワーク種別を取得 → 異常を要約airplane-cycle-test— ウォッチャーを開始 → テレフォニーのベースラインを取得 → 機内モードを切り替え → 切り替え前後の状態を比較
主な機能
デバイスキャッシュ
デバイス検出結果は設定可能な TTL(デフォルトは 5 秒)でキャッシュされるため、ツールを連続して実行する際に adb devices のサブプロセス呼び出しが繰り返されるのを防ぎます。接続エラー時、およびワイヤレス接続、切断、ペアリングの操作後には、キャッシュが自動的に無効化されます。
一時的な失敗の再試行
ADB ブリッジは、デバイスのオフライン、接続リセット、プロトコル障害などの一時的な失敗時に、設定可能な再試行回数と指数バックオフを使用して自動的に再試行します。診断コマンドでは再試行を行わず、実際の問題がすぐに表面化するようにします。
出力保護
すべての ADB 出力は OutputProcessor を通過し、改行を正規化し、設定可能な文字数制限を適用します。また、行の途中で切るのではなく、改行やセクション区切りなどの論理的な境界で、コンテキストに沿って出力を切り詰めます。バッテリー、meminfo、getprop の出力に対応する構造化パーサーも含まれています。
logcat の永続ストリーミング
バックグラウンドの logcat ウォッチャーは、リングバッファーにデータを蓄積する子プロセスとして実行されます。各ポーリングでは、前回の読み取り以降の新しい行のみを返します。独立したフィルターを使用する複数のセッションを同時に(最大 10 件まで)実行できます。プロセスのクリーンアップハンドラーにより、サーバー終了時に adb logcat プロセスが孤立するのを防ぎます。
UI 階層分析
uiautomator dump を使用してビュー階層全体を取得し、XML を解析して抽出します。テキスト、resource-id、content-description、クラス名、タップ可能な中心点を含む境界座標、操作フラグなどの構造化された要素データを返します。効率的な解析のため、属性抽出には事前コンパイル済みの正規表現を使用します。
セキュリティミドルウェア
DA_SECURITY=true によって、多層セキュリティが有効になります。コマンドのブロックリスト/許可リストによるフィルタリング、レート制限(1 分あたりのコマンド数)、認証情報を自動的にマスキングする監査ログを提供します。セキュリティチェックは adb_shell、adb_root_shell、adb_multi_shell、adb_multi_compare、adb_input、adb_batch_actions、adb_start_activity に統合されています。さまざまなデプロイシナリオに合わせて、環境変数で設定できます。
入力のサニタイズ
ユーザー指定のパラメーターをシェルコマンド文字列に埋め込むすべてのツールは、実行前にシェルのメタ文字に対して入力を検証します。パッケージ名、プロパティキー、サービス名、設定キー、テスト識別子、ネットワークインターフェース名、tcpdump フィルターはすべて、一元化された validateShellArg() 関数で検証されます。この関数は、;、|、&、$、バッククォート、括弧、その他のインジェクション経路を拒否します。ファイルパスには、$() によるコマンド置換を防ぐため、シングルクォートによるシェルエスケープを使用します。adb_input ツールは型別の検証を適用します。tap/swipe は数値の座標のみ、keyevent は英数字のキーコードのみを受け付け、text は文字列をそのまま渡せるようシェルエスケープします。adb_batch_actions ツールもアクションの型ごとに同じ検証を行い(座標は数字のみ、キーコードは英数字のみ、テキストはシェルエスケープ)、組み立てたすべてのコマンドをセキュリティミドルウェアに渡します。スナップショットファイルからデシリアライズした JSON は、シェル文字列に埋め込む前に検証されます。209 個すべてのツールにある z.number() パラメーターには、極端な値によるリソース枯渇を防ぐため、明示的な .min()/.max() の Zod 境界値が設定されています。LocalBridge には、ツールモジュールで使用されるすべての ADB サブコマンドに対する明示的なハンドラーがあり、引用符で囲まれないままデフォルトのシェルハンドラーにフォールスルーするのを防ぎます。デバイス上モードでは、権限昇格に固定された 16 個のコマンドの許可リストと制限対象パスの正規表現を使用します。昇格対象のセットは ReadonlySet と Object.freeze で固定されており、実行時に設定できません。HTTP/SSE トランスポートは、デフォルトでクロスオリジンリクエストを拒否します(DA_HTTP_CORS_ORIGIN で設定可能)。プラグインレジストリは SHA-256 整合性ハッシュを検証し、ディレクトリ内にパスが収まっているかを確認してパストラバーサルを防ぎます。また、ワークフローエンジンはステップ数(200)、スリープ時間(5 分)、繰り返し回数(100)の上限を適用します。フェッチヘルパーはレスポンスボディのサイズを 5 MB に制限します。getprop の出力解析では、正規表現で照合する前に .trim() を使い、Windows の \r\n 改行を処理します。また、デバイスプロパティの破損によるリソース枯渇を防ぐため、デュアル SIM スロット数は 4 に制限されています。
マルチデバイスのオーケストレーション
複数の接続デバイスに対して、コマンドの実行、APK のインストール、出力の比較を並行して行います。Android のバージョンやデバイスモデルをまたいだ比較テストに不可欠です。
スナップショット/復元
包括的なデバイス状態のスナップショット(パッケージ、すべての名前空間の設定、システムプロパティ)を取得し、JSON ファイルに保存します。現在の状態を保存済みのスナップショットと比較して、差異を検出します。スナップショットから設定を復元し、再現可能なテスト環境を構築できます。
ネットワークトラフィックのキャプチャ
デバイス上で tcpdump を使ってパケットをキャプチャし、pcap ファイルを取得して Wireshark で解析できます。アクティブな接続の一覧表示には ss/netstat を使用し、これらのツールがないデバイスでは /proc/net にフォールバックします。
CI/CD 連携
自動パイプライン向けに設計されたツールを提供します。ポーリングによるデバイスの起動待機、構造化された準備状況のチェック、パス/失敗の結果を解析した計装テストの実行が可能です。
プラグインアーキテクチャ
設定可能な plugins ディレクトリからツールモジュールを動的に読み込みます。プラグインは、完全な ToolContext を受け取る register(ctx) 関数をエクスポートする標準的な JavaScript ESM モジュールです。サーバーの起動時に読み込まれるため、コアコードを変更せずにコミュニティからの貢献を取り入れられます。
コミュニティプラグインレジストリ
設定可能なレジストリ URL からプラグインを検索、インストール、管理できます。インストール状況、バージョン比較、利用可能な更新が表示されます。プラグインファイルは付随するメタデータとともに plugins ディレクトリにダウンロードされ、次回の再起動時に読み込まれます。セキュリティ機能として、SHA-256 整合性検証(レジストリのマニフェストで指定されている場合)、パストラバーサル対策、register() エクスポートの妥当性チェックを備えています。
ベースバンド/モデムの統合
高度な Android 開発と研究向けの、詳細なセルラー無線の検査ツールです。モデムファームウェアの識別情報、セル識別パラメーター(CID、TAC、EARFCN、PCI)、生の信号測定値(RSRP、RSRQ、SINR)、近隣セルの調査結果、キャリア設定、複数のソースから取得したモデムログ(RIL 無線バッファー、テレフォニーフレームワーク、カーネルの dmesg)を取得します。標準の Android テレフォニー API を介して、Shannon/Exynos、Qualcomm、MediaTek、Unisoc のチップセットファミリーに対応します。Google Tensor SoC(gs101/gs201/zuma/zumapro)の検出機能も備えており、Pixel 6~9 デバイスで Shannon モデムの経路を自動的に選択します。デュアル SIM 検出では、DSDS、DSDA、TSTS の構成について、SIM スロットごとの SIM の状態、通信事業者、ネットワークの種類、国を報告します。
アクセシビリティ監査
実行中の UI 階層に対して、WCAG アクセシビリティチェックを自動実行します。インタラクティブ要素のラベル不足、48dp のガイドラインを下回るタッチターゲット(画面密度を考慮)、content-description が設定されていない画像、フォーカス可能になっていないクリック可能要素、重複した content-description を検出します。重大度レベル付きの構造化レポートを生成します。スクリーンリーダーのデバッグ用に、専用のアクセシビリティツリービューも備えています。
リグレッション検出
パフォーマンスのベースライン(メモリ、CPU、フレーム統計、バッテリー、ネットワーク状態)を取得し、後続の実行結果と比較します。メモリ(+20%)、CPU(+50%)、ジャンク率(+25%)のリグレッションしきい値を設定できます。リリース間の傾向分析に向けて、ベースラインの履歴を保持します。
デバイスファームとの統合
gcloud CLI を介した Firebase Test Lab による、クラウドベースのテスト実行に対応します。複数のデバイスモデルと API レベルにわたってインストルメント化テストを実行し、構造化された結果を取得して、利用可能なテストマトリックス設定を一覧表示します。gcloud が利用できない場合は、セットアップ手順を提示して適切にフォールバックします。
HTTP/SSE トランスポート
ブラウザベースの MCP クライアント向けの、stdio の代替手段です。DA_HTTP_PORT を設定すると、SSE ストリーミング対応の HTTP サーバーが起動します。/sse(クライアントのサブスクリプション)、/message(JSON-RPC)、/health エンドポイントを提供します。クロスオリジンリクエストはデフォルトで拒否されます。特定のオリジンを明示的に許可するには、DA_HTTP_CORS_ORIGIN を設定します。
テストセッション管理
番号付きステップを使用した、構造化テストワークフローです。各ステップでスクリーンショットと logcat スナップショットを取得し、整理されたディレクトリ内に保存して、Markdown マニフェストを作成します。再現可能なテスト記録を目的として設計されています。
AT コマンドインターフェース
root アクセスを介してモデムに AT コマンドを直接パススルーし、Android テレフォニーフレームワークを超えた生の問い合わせを可能にします。複数のチップセットに対応し、Samsung Shannon/Exynos、Qualcomm Snapdragon、MediaTek、Unisoc/Spreadtrum、および汎用 USB モデムのデバイスノードを自動検出します。root シェルで展開する前に、AT コマンド文字列とデバイスノードパスの両方からシェルメタ文字を検証して拒否します。危険なコマンド(AT+CFUN=0、AT+EGMR など)の誤実行を防ぐ安全ブロックリストを備えており、明示的な強制上書きにも対応します。
スクリーンショットの差分比較
ピクセル単位で視覚的なリグレッションを検出します。名前付きのスクリーンショットベースラインを取得し、PNG ピクセルデータ(IHDR の解析、IDAT の展開、5 種類すべての PNG フィルター)をデコードして実際の RGB 値を比較し、現在の画面状態を照合します。変更されたピクセル数と割合、変更領域のバウンディングボックスと画面上の垂直位置、寸法とサイズの差分を報告します。tolerancePercent パラメーター(0~100)に対応し、時計表示や通知バッジなどの軽微な動的変化を許容します。1%の許容値を設定すると、ナビゲーションバーの時計の変化(ピクセルの約0.5%)を確実に許容しつつ、実際の UI リグレッションを検出できます。完全一致時には SHA-256 による高速判定を行います。外部依存関係はありません。
ワークフローオーケストレーション
繰り返し実行できる複数ステップのデバイス操作向けの宣言型 JSON ワークフローエンジンです。変数置換({{pkg}})、条件付きステップ(==、!=、contains を使った if 式)、ループ(repeat、最大 100 回)、後続のステップで使用する変数への結果の保存に対応しています。アクションは ADB ブリッジ操作に直接対応し、セキュリティミドルウェアによる完全な適用を受けます。ワークフローの検証では、悪意のある定義や不正なワークフロー定義によるリソース枯渇を防ぐため、最大 200 ステップ、各ステップの sleep は最大 5 分に制限されます。
分割 APK の管理
最新の Android 配信形式に対応しています。アプリバンドルを install-multiple でインストールし、分割 APK の構造(base と、言語、密度、ABI 向けの config 分割)を調査し、すべての分割 APK をローカルに抽出して分析し、APEX モジュールを一覧表示できます。
デバイスのミラーリング
scrcpy との連携により、画面をリアルタイムでミラーリングできます。視覚的なフィードバックを得られるウィンドウモードと、録画のみのワークフロー向けのヘッドレスモードに対応しています。デバイスごとのセッション管理により、複数の接続済みデバイスを同時にミラーリングできます。プロセスのクリーンアップハンドラーにより、scrcpy プロセスが孤立するのを防ぎます。
自動テスト生成
実行中の UI 階層とパッケージのインテント登録を分析し、ワークフローオーケストレーションエンジンと互換性のあるテストワークフロー JSON を自動生成します。UI ベースの生成では、各インタラクティブ要素をタップしてスクリーンショットを撮影し、クラッシュを確認します。インテントベースの生成では、エクスポートされた各アクティビティを起動し、クラッシュを検出します。
OTA アップデートの監視
セッション間で、システムのフィンガープリント(ビルド ID、Android バージョン、セキュリティパッチ、ブートローダー、ベースバンドファームウェア、カーネルバージョン、A/B パーティションスロット)を包括的に追跡します。現在の状態を保存済みのフィンガープリントと比較し、OTA アップデートを検出します。変更されたフィールドを正確に特定し、アップデート後にパフォーマンス指標とスクリーンショットの基準を再設定することを推奨します。
RIL メッセージの傍受
Android の radio logcat バッファーから、Radio Interface Layer のメッセージを継続的にキャプチャします。バックグラウンドプロセスを起動し、RIL メッセージを収集して、registration、cell_info、signal、network、security、handover、data、radio_state、sms、NAS の各イベントに分類します。カテゴリで絞り込めるポーリング方式の取得に対応しています。無線診断やセルラーネットワークの研究において、ベースバンドとフレームワーク間の通信を受動的に監視するのに役立ちます。セッション数の上限(5)とプロセスのクリーンアップハンドラーにより、リソース枯渇を防ぎます。
デバイスプロファイルライブラリ
ハードウェア識別情報、チップセットファミリー、既知のモデムデバイスノード、AT コマンドの互換性、ルート権限の要件、デュアル SIM スロット数、固有の動作を含む、デバイス固有のナレッジベースです。接続済みデバイスからプロファイルを自動検出し、既知のデバイスを収録した組み込みライブラリと照合します。保存したプロファイルはセッション間で保持され、adb_at_detect などのツールの自動検出精度を高めます。保存済みのプロファイルファイルを通じて、コミュニティによる拡張が可能です。
WebSocket トランスポート
真の双方向ストリーミングを必要とする MCP クライアント向けに、stdio や HTTP/SSE の代替手段を提供します。SSE ポーリングより低遅延で、ウェブフレームワークとの互換性にも優れています。オプションのピア依存関係として ws npm パッケージが必要です。有効にするには DA_WS_PORT を設定します。
モデムファームウェア分析
複数のコンポーネントにわたるファームウェアの識別、差分比較、履歴追跡を包括的に行います。6つのチップセットファミリーのベースバンドバージョン文字列を解析します。対象は、Shannon/Exynos(Google Pixel/Tensor の g5123b-* 形式と従来の Samsung の S5123AP_CL* 形式を含む)、Qualcomm MPSS のブランチ/バージョン/ビルド、MediaTek MOLY のブランチ/リリース/マイルストーン、Unisoc/Spreadtrum の SoC モデル/バージョン、HiSilicon/Kirin のモデル/キャリアコード、Intel XMM のモデル/ブランチです。また、ブートローダーのバージョン(Pixel のコードネーム/バージョン/ビルド、Samsung のモデル/キャリア/リビジョン)と、RIL 実装文字列(Samsung S.LSI のベンダー/ID/API/ビルド日、Qualcomm、MediaTek)も解析します。ファームウェアプローブは、ベースバンド、ブートローダー、RIL、カーネル、セキュリティ/ビルド、パーティション/ブート(A/B スロット、セキュアブート、検証済みブート、フラッシュロック)、VBMeta の整合性、OTA パーティションのインベントリの8つのセクションを報告します。差分ツールは、保存済みのフィンガープリントまたは接続中のデバイスの状態をもとに、すべてのファームウェアコンポーネントを比較し、ベースバンドとブートローダーについては詳細な解析結果の差分も表示します。履歴ツールは、OTA フィンガープリントをまたいだ複数コンポーネントのファームウェアの変遷を追跡します。
ワークフローマーケットプレイス
ワークフローオーケストレーションエンジンのための、コミュニティ共有レイヤーです。コミュニティが提供するテストワークフロー、診断シーケンス、監査手順のレジストリを検索できます。ワークフローをダウンロードしてインストールし、adb_workflow_run でただちに実行できます。マーケットプレイスのメタデータと、自動生成されるレジストリマニフェストエントリを付けて、ローカルのワークフローを投稿用にエクスポートできます。ダウンロード時に SHA-256 による整合性検証を行います。
GraphQL API
デバイスに対する複合クエリを提供する GraphQL API のオプションの HTTP エンドポイントです。複数の MCP ツール呼び出しの代わりに、1回のリクエストでデバイス情報、バッテリー、ネットワーク、任意のプロパティを取得できます。POST ボディのサイズ上限は 1 MB です。サブプロセス呼び出しを最小限に抑えるため、デバイスのプロパティは各解決処理につき1回だけ事前取得されます。オプションのピア依存関係である graphql npm パッケージが必要です。有効にするには DA_GRAPHQL_PORT を設定します。
SELinux と権限の監査
SELinux の強制モードを確認し、logcat とカーネル監査ログから AVC 拒否を照会するとともに、パッケージごとの実行時権限の付与状況を監査します。付与済みの権限を危険なカテゴリ(カメラ、位置情報、電話、SMS など)ごとに分類し、バックグラウンドでの位置情報アクセスや外部ストレージの管理など、機密性の高い権限の付与にフラグを立てます。OS の権限レイヤーまでセキュリティ監査の対象を拡張します。
サーマル・電力プロファイリング
sysfs からサーマルゾーンの温度、CPU ごとの周波数スケーリング状態とガバナー、冷却デバイスの動作状況、バッテリーの消耗率を取得します。フレーム落ちではなく、発熱やバッテリー消耗として現れる問題に対応するサーマル/電力のベースラインを用いて、リグレッション検出を補完します。mA/mW/1時間あたりの推定消耗率(%)を計算する、時間指定の消耗測定も含まれます。
ネットワークデバイスの検出
ARP テーブルの照会と、オプションの IP 範囲スキャンにより、ローカルネットワーク上の ADB 対応デバイスをスキャンします。一般的な ADB ポート(5555-5558)に対し、バッチ処理した並列 TCP 接続を試みます。複数の方法でデバイスの WiFi IP を取得します。自動接続モードでは、デバイスの検出と接続を1つのステップで行います。ワイヤレスデバッグのワークフローを効率化します。
QEMU/KVM 仮想化
KVM ハードウェアアクセラレーションを使用した、デバイス上での QEMU 仮想マシン管理です。物理デバイス上でゲスト Android VM を直接実行できます。これは DeepADB 独自の機能です。動的なリソース割り当てでは、ホストの CPU コア数と物理 RAM を自動検出し、ホスト OS のリソース不足を防ぐため、コアを 1 つ、メモリの 35% を確保します。マルチ VM サポートでは、同時実行中の VM 全体のリソース消費量を追跡し、ホストのパフォーマンスを低下させるのではなく、リソースプールが枯渇した場合は新しい VM の起動を拒否します。ディスクイメージ管理では、qcow2(スパース形式、スナップショット対応)と raw 形式を使用できます。ゲスト VM への ADB ポートフォワーディングにより、DeepADB の全ツールをホストデバイスとゲストデバイスの両方で同時に使用できます。プロセスのライフサイクルは一元化されたクリーンアップレジストリで追跡され、SIGTERM/SIGKILL によってシャットダウンされます。すべてのイメージ操作でパスの包含関係を検証し、ディレクトリトラバーサルを防止します。
ToolContext アーキテクチャ
49 個すべてのツールモジュールは、server、bridge、deviceManager、logger、security、config を含む統一された ToolContext 依存関係バンドルを受け取ります。横断的な依存関係を新たに追加する際、モジュールのシグネチャを変更する必要はありません。
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
DA_LOCAL | 自動検出 | オンデバイスモードを強制します(true/false)。/system/build.prop を使用して自動検出します |
ADB_PATH | 自動検出 | ADB バイナリへのパス(オンデバイスモードでは無視されます) |
DA_TIMEOUT | 30000 | コマンドのデフォルトのタイムアウト(ミリ秒) |
DA_MAX_OUTPUT | 50000 | 切り詰めるまでの最大出力文字数 |
DA_MAX_LOGCAT | 500 | スナップショットあたりの logcat の最大行数 |
DA_DEVICE | (自動) | デフォルトのデバイスシリアル番号(デバイスが 1 台の場合は自動選択) |
DA_TEMP_DIR | OS の一時ディレクトリ | スクリーンショット、取得ファイル、バグレポート、テストセッション、スナップショット用の一時ディレクトリ |
DA_CACHE_TTL | 5000 | デバイスリストのキャッシュ TTL(ミリ秒、0 = 無効) |
DA_RETRY_COUNT | 1 | 一時的な ADB エラーの再試行回数 |
DA_RETRY_DELAY | 500 | 基本の再試行間隔(ミリ秒、試行ごとに 2 倍になります) |
DA_LOG_LEVEL | info | ログレベル:debug、info、warn、error |
DA_ASCII_ONLY | (自動検出) | 起動時の警告バナーの出力を ASCII のみにするには、1 を設定します。デフォルトでは、Unicode 対応ターミナルかどうかを WT_SESSION/TERM_PROGRAM/TERM で自動検出し、レガシーな cmd.exe では ASCII にフォールバックします。 |
DA_RESOURCE_CACHE_TTL_MS | 0(無効) | MCP リソースのキャッシュ TTL(ミリ秒)。正の値を設定すると、その期間にわたってリソースの読み取り(device://info、device://battery など)がキャッシュされます。 |
DA_RESULT_HANDLE_DIR | {tempDir}/result-handles | 一時ディレクトリを使用するツール結果ハンドルの保存先ルート。上書きすると、保存先をデフォルトの一時ディレクトリ以外に変更できます。 |
DA_RESULT_HANDLE_TTL | 43200(12h) | ハンドルごとの TTL(秒)。この期間を超えたハンドルは、起動時のスキャンと定期的な削除処理で削除されます。範囲は [60, 7 days] に制限されます。 |
DA_RESULT_HANDLE_MAX_BYTES | 5242880(5 MB) | ハンドルごとのサイズ上限。このサイズを超えるコンテンツブロックを保存しようとしたツールは、エラーになります。 |
DA_RESULT_HANDLE_TOTAL_BYTES | 104857600(100 MB) | すべてのハンドルを合わせた結果ハンドルストアの合計サイズ上限。超過すると LRU 削除が実行されます。 |
DA_RESULT_HANDLE_MAX_COUNT | 100 | アクティブなハンドルの最大数。超過すると LRU 削除が実行されます。 |
DA_SECURITY | false | セキュリティミドルウェア(コマンドのフィルタリング、レート制限)を有効にします |
DA_BLOCKED_COMMANDS | (なし) | ブロックするシェルコマンドの部分文字列をカンマ区切りで指定します |
DA_ALLOWED_COMMANDS | (なし) | 許可リスト(設定した場合、一致するコマンドのみが実行されます) |
DA_RATE_LIMIT | 0 | 1 分あたりのコマンド最大数(0 = 無制限) |
DA_CI_PING_TARGET | 1.1.1.1 | adb_ci_device_ready が使用するネットワーク到達性の確認先(ネットワーク到達性は、起動完了、ADB 認証、パッケージマネージャーの利用可能性とともに、準備状態の確認項目の 1 つです)。1.1.1.1 がファイアウォールでブロックされている場合は、内部の確認先を指定するよう上書きしてください。 |
DA_AUDIT_LOG | true | 実行したすべてのコマンドを監査証跡として記録します(無効にするには false を設定します) |
DA_PLUGIN_DIR | {tempDir}/plugins | 起動時にプラグインの .js モジュールを検索するディレクトリ |
DA_REGISTRY_URL | GitHub のデフォルト | コミュニティプラグインレジストリの JSON マニフェストの URL |
DA_HTTP_PORT | (無効) | HTTP/SSE トランスポートモードを有効にするには、ポート番号を設定します |
DA_HTTP_HOST | 127.0.0.1 | HTTP/SSE、WebSocket、GraphQL サーバーのバインドアドレス |
DA_AUTH_TOKEN | (なし — オープン) | ネットワークトランスポート用のベアラートークン。設定すると、すべての HTTP/SSE/WS/GraphQL リクエストで Authorization: Bearer <token> ヘッダーが必要になります。ヘルスエンドポイントは対象外です。 |
DA_HTTP_CORS_ORIGIN | (なし — 拒否) | HTTP/SSE で許可する CORS オリジン |
DA_WS_PORT | (無効) | WebSocket トランスポートモードを有効にするには、ポート番号を設定します(npm install ws が必要です) |
DA_WS_CORS_ORIGIN | (なし — 拒否) | WebSocket ヘルスエンドポイントで許可する CORS オリジン |
DA_GRAPHQL_PORT | (無効) | GraphQL API エンドポイントを有効にするには、ポート番号を設定します(npm install graphql が必要です) |
DA_GRAPHQL_CORS_ORIGIN | (なし — 拒否) | GraphQL API で許可する CORS オリジン |
DA_WORKFLOW_REGISTRY_URL | (DA_REGISTRY_URL から導出) | ワークフローマーケットプレイスの JSON マニフェストの URL |
DA_TEST_PIN | (なし) | tests/test-ui-control.mjs で画面ロック/ロック解除テストを実行するために使用する数値 PIN。設定しない場合、ロック状態に関する 4 つのテストはスキップされます。形式:DA_TEST_PIN=0000 npm test。 |
プロジェクト構成
DeepADB/
├── src/
│ ├── index.ts # Entry point — stdio, HTTP/SSE, WebSocket, or GraphQL transport
│ ├── server.ts # MCP server wiring, config, module registration (exports CreateServerResult)
│ ├── http-transport.ts # HTTP/SSE transport server for browser clients
│ ├── ws-transport.ts # WebSocket transport (optional `ws` peer dependency)
│ ├── graphql-api.ts # GraphQL API endpoint (optional `graphql` peer dependency)
│ ├── tool-context.ts # Unified dependency bundle (ToolContext interface)
│ ├── bridge/
│ │ ├── adb-bridge.ts # Core ADB subprocess wrapper, retry logic, error types
│ │ ├── local-bridge.ts # On-device direct execution bridge with privilege escalation (Termux/local mode)
│ │ └── device-manager.ts # Device discovery, TTL cache, serial routing
│ ├── tools/
│ │ ├── health.ts # Toolchain health check (1 tool)
│ │ ├── runtime-audit.ts # Unified read-only runtime readiness audit (1 tool)
│ │ ├── device.ts # Device info and properties (3 tools)
│ │ ├── shell.ts # Shell and root command execution (2 tools)
│ │ ├── packages.ts # App lifecycle, install, permissions, intents (12 tools)
│ │ ├── database-inspector.ts # Package-scoped read-only Room/SQLite inspection (1 tool)
│ │ ├── files.ts # File operations — push, pull, write, find, grep, replace, stat, checksum, chmod, chown, touch, fsinfo (18 tools)
│ │ ├── logs.ts # Logcat snapshots — filtered (3 tools)
│ │ ├── logcat-watch.ts # Persistent logcat with ring buffer and poll (4 tools)
│ │ ├── diagnostics.ts # dumpsys, telephony, battery, network, perf, bugreport, crash logs, heap dump (9 tools)
│ │ ├── ui.ts # Screenshots, input, activity, UI hierarchy, annotated screencap, screen state (8 tools)
│ │ ├── input-gestures.ts # Drag, long press, double tap, text, URL, orientation, clipboard, tap-element, wait-element, wait-stable, scroll-until, compressed screenshot, batch actions, fling, pinch, screen size, device state, notifications (18 tools)
│ │ ├── screen-record.ts # Screen video recording start/stop (2 tools)
│ │ ├── control.ts # Airplane, WiFi, data, location, screen, settings, reboot (9 tools)
│ │ ├── wireless.ts # WiFi pairing, connect, disconnect, TCP/IP (4 tools)
│ │ ├── forwarding.ts # Port forwarding — forward, reverse, list, remove, managed tunnels with auto-port-pick (8 tools)
│ │ ├── emulator.ts # AVD list, start, stop with on-device KVM/QEMU detection (3 tools)
│ │ ├── qemu.ts # QEMU/KVM VM management — setup, images, start, stop, status, guest ADB connect/disconnect/shell (8 tools)
│ │ ├── testing.ts # Structured test sessions with numbered steps (3 tools)
│ │ ├── multi-device.ts # Multi-device shell, install, compare, comparative testing (4 tools)
│ │ ├── snapshot.ts # Device state capture, compare, restore (3 tools)
│ │ ├── network-capture.ts # tcpdump start/stop, network connections (3 tools)
│ │ ├── ci.ts # CI wait-boot, device-ready, run-tests (3 tools)
│ │ ├── plugins.ts # Plugin loader, info, and dynamic tool loading (2 tools)
│ │ ├── baseband.ts # Modem/baseband inspection and radio diagnostics (6 tools)
│ │ ├── accessibility.ts # Automated WCAG accessibility auditing (3 tools)
│ │ ├── regression.ts # Performance baseline and regression detection (3 tools)
│ │ ├── device-farm.ts # Firebase Test Lab integration via gcloud (3 tools)
│ │ ├── registry.ts # Community plugin registry search/install (3 tools)
│ │ ├── at-commands.ts # AT command modem interface, Shannon session, cross-validation (6 tools)
│ │ ├── screenshot-diff.ts # Visual regression — screenshot baseline/diff (3 tools)
│ │ ├── workflow.ts # Declarative workflow orchestration engine (3 tools)
│ │ ├── split-apk.ts # App bundles, split APKs, APEX modules (4 tools)
│ │ ├── mirroring.ts # Live screen mirroring via scrcpy (3 tools)
│ │ ├── test-gen.ts # Automated test workflow generation (3 tools)
│ │ ├── ota-monitor.ts # OTA update monitoring and fingerprinting (3 tools)
│ │ ├── ril-intercept.ts # RIL message interception from radio buffer (3 tools)
│ │ ├── device-profiles.ts # Device profile library with built-in entries (3 tools)
│ │ ├── firmware-analysis.ts # Modem firmware version parsing and diffing (3 tools)
│ │ ├── workflow-market.ts # Workflow marketplace — search, install, export (3 tools)
│ │ ├── selinux-audit.ts # SELinux status, AVC denials, permission auditing (3 tools)
│ │ ├── thermal-power.ts # Thermal zones, CPU frequency, battery drain (3 tools)
│ │ ├── network-discovery.ts # ADB-over-network scanning and auto-connect (3 tools)
│ │ ├── app-network.ts # Per-app UID routing and network-policy context (1 tool)
│ │ ├── wear.ts # Wear OS Data Layer phone/watch preflight (1 tool)
│ │ ├── sensors.ts # Hardware sensor enumeration, IIO power monitor reading (2 tools)
│ │ ├── result-handles.ts # Tempdir-backed result handle store — list, drop, drop-all (3 tools) + the result://{tool}/{name} resource
│ │ ├── wireless-firmware.ts # WiFi, Bluetooth, NFC, GPS firmware identification (4 tools)
│ │ ├── build.ts # Gradle build and install (2 tools)
│ │ ├── resources.ts # MCP Resources — 4 device-state surfaces: device://info|battery|telephony|list (5th, result://, lives in result-handles.ts)
│ │ └── prompts.ts # MCP Prompts — workflow templates (4 prompts)
│ ├── middleware/
│ │ ├── auth.ts # Bearer token authentication for network transports (DA_AUTH_TOKEN)
│ │ ├── output-processor.ts # Contextual truncation, structured parsers, settledValue helper
│ │ ├── security.ts # Command filtering, rate limiting, audit logging with redaction
│ │ ├── sanitize.ts # Shell injection prevention — validateShellArg/validateShellArgs/shellEscape
│ │ ├── chipset.ts # Shared chipset family detection, modem path mapping, SIM config detection
│ │ ├── fetch-utils.ts # Shared HTTP helpers with 5 MB streaming response size limit
│ │ ├── png-utils.ts # Zero-dependency PNG decode/encode/draw primitives for screenshot annotation and diffing
│ │ ├── ui-dump.ts # Shared uiautomator XML capture with concurrent-safe paths, on-device /data/local/tmp routing, and cleanup
│ │ ├── cleanup.ts # Centralized process cleanup registry for SIGINT/SIGTERM/exit
│ │ ├── logger.ts # stderr-safe logging (MCP-compliant)
│ │ ├── fs-utils.ts # Filename sanitization, atomic write, private-dir helpers, within-dir containment check
│ │ ├── parse-utils.ts # Shared parseIntSafe for env-var numeric parsing (single source of truth)
│ │ └── result-handle.ts # Tempdir-backed tool result content cache with TTL, LRU, and token-hash isolation
│ └── config/
│ └── config.ts # Configuration, env vars, startup validation
├── package.json
├── tsconfig.json
├── server.json # MCP Registry metadata (io.github.fullread/deepadb)
├── .gitignore
├── README.md
├── SECURITY.md # Threat model, security architecture, deployment hardening, vulnerability reporting
├── CHANGELOG.md # Version history from v0.1.0 to current
├── LICENSE # Apache 2.0 license
└── tests/
├── run-all.mjs # Run all test suites sequentially with summary (tracks skipped counts)
├── test-hw.mjs # Hardware core: health, identity, baseband, thermal, profiles, wireless firmware, crash analysis (34 tests)
├── test-shell-files.mjs # Shell, filesystem, packages, diagnostics (24 tests)
├── test-ui-control.mjs # UI hierarchy, screenshots, settings, input gestures, UI automation, device awareness, accessibility, screen lock/unlock, multi-touch (46 tests)
├── test-monitoring.mjs # Logcat watchers, snapshots, OTA, regression, workflows (43 tests)
├── test-security.mjs # Input sanitization, shell injection, AT command safety, QEMU shell escaping, heap-dump validation (116 on-device, 105 host)
├── test-lifecycle.mjs # App lifecycle, file push/pull, input, port forwarding, screen recording, test sessions (24 tests)
├── test-analysis.mjs # Thermal/snapshot/regression comparison, firmware diff, screenshot diff, test gen, RIL intercept, AT cross-validation, permission management (23 tests)
├── test-boundaries.mjs # Zod bounds enforcement, input injection, error paths, sensitive data protection, wireless ADB coverage, multi-device basics, tunnel automation, device-free coverage boundaries (78 tests)
├── test-sensors.mjs # HAL sensors, IIO power monitors, category filters, formatting, wake-up, rate display (30 tests)
├── test-files-extended.mjs # File tool coverage — write, find, stat, checksum, mkdir, rm, move, copy, chmod, touch, fsinfo, chown, grep, replace; push safety; sed-escape regression (95 tests)
├── test-result-handles.mjs # Result handle store — listing, retrieval, drop, isolation, eviction (19 tests)
├── test-qemu.mjs # QEMU/KVM setup, image management, VM status, guest connectivity errors (13 on-device tests)
├── test-qemu-boot.mjs # QEMU Alpine VM boot with auto-fetch of kernel/initrd, KVM acceleration, topology detection, guest ADB connectivity (17 on-device tests)
├── test-supply-chain.mjs # Supply-chain hardening checks for fetch and network paths (24 tests)
├── test-sanitize-fuzz.mjs # Property-based fuzzing of shell sanitizers — shellQuote/shellEscape round-trip, validateShellArg rejection (19 tests)
├── test-transports.mjs # Transport smoke — HTTP/SSE + WebSocket MCP round-trip, GraphQL health query (8 tests)
└── lib/
└── harness.mjs # Shared test harness (stdio JSON-RPC transport, assertion primitives)
技術スタック
- ランタイム: Node.js ≥22(ES2024、ESM)
- 開発: ESLint を含むツールチェーン全体には、Node 22 系の Node.js 22.13 以降、または Node 24 以降が必要です。c8 によるカバレッジ計測のみの場合は、Node 22 系の Node.js 22.12 以降が必要です。
- 言語: TypeScript 6.0(strict モード、NodeNext モジュール解決)
- MCP SDK:
@modelcontextprotocol/sdk^1.32.1(現在は 1.32.1 に解決されます) - バリデーション: Zod ^4.6.5
- トランスポート: stdio(JSON-RPC)、HTTP/SSE、WebSocket(オプションの
ws)、GraphQL API(オプションのgraphql)
ライセンス
Apache License 2.0 — LICENSE と NOTICE を参照してください。v1.1.2 リリースでは、明示的な特許許諾と貢献者の帰属要件に対応するため、MIT から Apache 2.0 に移行しました。既存のフォークやインストールは、引き続き以前の MIT 条項の下で有効です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。