MCP-ADB について
MCP-ADBはAndroid Debug Bridge(ADB)と連携し、AIアシスタントがAndroidデバイスを操作できるMCPサーバーです。画面キャプチャやキーイベントに対応し、複数台から対象を指定できます。
主な機能
- 01画面キャプチャとリサイズ
- 02Base64形式での画像取得
- 03Androidキーイベントの送信
- 04対象デバイスの指定
- 05接続デバイスの一覧表示
活用シーン
- 01Androidデバイスの画面確認
- 02ナビゲーションや戻るキーの送信
- 03接続中の複数デバイスから対象を選択
MCP 対応
MCPサーバーは画面キャプチャとキー送信のツールを提供します。リソースURIから接続デバイス一覧、スクリーンショット、デバイス情報にアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-ADB
AI アシスタントが Android デバイスとやり取りできるように、Android Debug Bridge(ADB)との連携を提供する Model Context Protocol(MCP)サーバーです。
機能
- スクリーンショットの撮影:接続された Android デバイスのスクリーンショットを、自動でサイズ変更して撮影します
- Base64 画像データ:Base64 エンコードされた文字列として、スクリーンショットのデータを直接受け取ります
- キーイベントの制御:Android デバイスにキーイベントを送信します(ナビゲーション、戻る、ホーム)
- 複数デバイスのサポート:複数のデバイスが接続されている場合、対象のデバイスを指定できます
- デバイス一覧:接続されているすべての Android デバイスをリソースとして一覧表示します
- リソースへのアクセス:リソース URI を通じてスクリーンショットやデバイス情報にアクセスできます
前提条件
- Node.js(v16 以降を推奨)
- Android Debug Bridge(ADB)がインストールされ、PATH から利用可能であるか、ADB_PATH 環境変数で設定されていること
- USB デバッグが有効な Android デバイスが接続されていること
インストール
# Clone the repository
git clone https://github.com/isseikz/mcp-adb.git
cd mcp-adb
# Install dependencies
npm install
# Build the project
npm run build
使用方法
Claude Desktop での使用
この MCP サーバーを Claude Desktop で使用するには、Claude Desktop のインストールディレクトリ、または Claude - Settings - Developer - Edit Config から確認できる claude_desktop_config.json に mcp-adb を追加します。
claude_desktop_config.json ファイルの設定例を以下に示します。
{
"mcpServers": {
"mcp-adb": {
"command": "node",
"args": ["/path/to/mcp-adb/build/index.js"],
"env": {
"ADB_PATH": "/path/to/adb"
}
}
}
}
```json
{
"mcpServers": {
"mcp-adb": {
"command": "node",
"args": ["/path/to/mcp-adb/build/index.js"],
"env": {
"ADB_PATH": "/path/to/adb"
}
}
}
}
利用可能なツール
スクリーンショットツール
接続された Android デバイスからスクリーンショットを撮影し、幅が 640px になるよう自動でサイズ変更します。
パラメーター:
deviceId(任意):複数のデバイスが接続されている場合、対象のデバイスを指定します
応答:
- Base64 エンコードされた画像データ(PNG 形式)が応答に直接含まれます
例:
{
"name": "screenshot",
"arguments": {
"deviceId": "emulator-5554"
}
}
キー入力ツール
接続された Android デバイスにキーイベントを送信します。
パラメーター:
keycode:送信する Android キーコード(以下の一覧を参照)deviceId(任意):複数のデバイスが接続されている場合、対象のデバイスを指定します
利用可能なキーコード:
KEYCODE_DPAD_CENTER- 中央/OK ボタンKEYCODE_DPAD_DOWN- 下へのナビゲーションKEYCODE_DPAD_UP- 上へのナビゲーションKEYCODE_DPAD_LEFT- 左へのナビゲーションKEYCODE_DPAD_RIGHT- 右へのナビゲーションKEYCODE_DPAD_UP_LEFT- 左上への斜め移動KEYCODE_DPAD_UP_RIGHT- 右上への斜め移動KEYCODE_DPAD_DOWN_LEFT- 左下への斜め移動KEYCODE_DPAD_DOWN_RIGHT- 右下への斜め移動KEYCODE_BACK- 戻るボタンKEYCODE_HOME- ホームボタン
例:
{
"name": "pressKey",
"arguments": {
"keycode": "KEYCODE_DPAD_DOWN",
"deviceId": "emulator-5554"
}
}
リソース
接続されたデバイス
接続されているすべての Android デバイスを一覧表示します。
adb://devices
応答:
- 接続されたデバイス ID の一覧
スクリーンショット
ファイル名を指定して、特定のスクリーンショットにアクセスします。
adb://screenshots/{filename}
例:
adb://screenshots/screenshot-2025-04-10T16-30-48-931Z.png
開発
プロジェクト構成
mcp-adb/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript files
├── temp/ # Temporary directory for screenshots
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration
ビルド
npm run build
これにより、TypeScript コードがコンパイルされ、build ディレクトリに JavaScript が生成されます。
要件
このプロジェクトでは、以下の依存関係を使用しています。
@modelcontextprotocol/sdk:MCP サーバーの実装fs-extra:拡張ファイルシステムメソッドsips:画像のサイズ変更に使用します(macOS に組み込まれており、コンテキストの消費を抑えます)
ライセンス
MIT
貢献
貢献を歓迎します!お気軽に Pull Request を送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。