mcpField
A
android

android

ローカル
github.com/martingeidobler開発ツール6832 週間前に更新

android について

Android MCP Server は ADB を通じて Android エミュレーターと実機を操作し、AI アシスタントが画面の確認、アプリの操作、ログの読み取りを行えるようにします。テスト対象アプリの変更は不要で、モバイルアプリのデバッグやテストに適しています。

主な機能

  1. 01Android デバイス制御の 25 ツール
  2. 02最大 1280px に圧縮したスクリーンショット
  3. 03境界、テキスト、リソース ID を含む UI ツリーの確認
  4. 04タップ、スワイプ、テキスト入力、ハードウェアキー操作
  5. 05resource-id、テキスト、content-desc による要素の指定
  6. 06パッケージ、ログレベル、時刻による logcat のフィルタリング

活用シーン

  1. 01アプリのクラッシュ不具合の再現と記録
  2. 02ログイン画面などの操作フローの自動化
  3. 03APK インストール後の主要画面のスモークテスト

MCP 対応

本プロジェクトは MCP サーバーであり、デバイス管理、スクリーンショット、UI 操作、アプリ管理、ログ診断のツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"martingeidobler-android": {
"command": "npx",
"args": [
"-y",
"android-mcp-server"
],
"env": {
"ANDROID_HOME": "<ANDROID_HOME>"
}
}
}
}
起動コマンドnpx -y android-mcp-server
設定が必要な環境変数
ANDROID_HOMEPath to Android SDK (auto-detected on macOS at ~/Library/Android/sdk)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmandroid-mcp-server1.2.1

ツール

21

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Android MCP Server

npm version npm downloads License: MIT android-mcp-server MCP server Awesome MCP Servers SocketBadge

ADB を介して Android エミュレーターやデバイスを操作するための MCP サーバーです。AI アシスタントが Android アプリを確認、操作、デバッグできるようにします。スクリーンショットの撮影、要素のタップ、ログの読み取り、バグの記録などが可能です。

npm Package | GitHub | Issues

ezgif-3bbb68e918812643 ^ 見やすいように再生速度を上げています。その他のデモとテストケース。

機能

  • 25 個のツールで Android デバイスを完全に制御
  • スクリーンショットの撮影とインテリジェントな圧縮(Sharp ベース、最大 1280px)
  • UI ツリーの検査 — 境界、テキスト、リソース ID、状態を含む要素階層を読み取り
  • タッチ操作の自動化 — タップ、スワイプ、スクロール、テキスト入力、ハードウェアキーの押下
  • 要素の指定 — resource-id、テキスト、content-desc による要素の検索とタップ
  • アプリのライフサイクル — APK のインストール、アプリの起動、現在のアクティビティの確認
  • Logcat 統合 — パッケージ、ログレベル、タイムスタンプによるフィルタリング
  • デバイス管理 — デバイスの一覧表示、エミュレーターの起動、デバイス情報の取得
  • 複合アクション — tap_and_wait はタップ、安定待ち、UI ツリー取得を 1 回の往復処理にまとめます
  • 永続的な ADB シェル — 1 つのシェルセッションを再利用してコマンド実行を高速化
  • デバイス情報のキャッシュ — セッションごとにデバイスのプロパティを 1 回だけ照会
  • 複数デバイスのサポート — ID を指定して特定のデバイスを対象にできます
  • アプリの変更は不要 — SDK 統合なしで、ADB を介してあらゆる Android アプリで動作

前提条件

  • Node.js 18+
  • platform-tools(ADB)とエミュレーターを含む Android SDK
  • 起動中の Android エミュレーター、または接続済みのデバイス
ANDROID_HOME の確認方法

サーバーは ~/Library/Android/sdk(macOS)または ANDROID_HOME から SDK を自動検出します。SDK が別の場所にある場合は、MCP 設定で ANDROID_HOME を設定してください(下記参照)。

確認するには:

# macOS
ls ~/Library/Android/sdk/platform-tools/adb

# Or find it via Android Studio: Settings > Languages & Frameworks > Android SDK

セットアップ

Claude Code
claude mcp add --scope user android -- npx -y android-mcp-server

これによりサーバーがグローバルに登録され、すべてのプロジェクトで利用できるようになります。現在のプロジェクトに限定するには、代わりに --scope project を使用してください。

SDK がデフォルトの場所にない場合:

claude mcp add --scope user --env ANDROID_HOME=/path/to/sdk android -- npx -y android-mcp-server
Claude Desktop

Claude Desktop の設定ファイルに追加します:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
VS Code

VS Code の設定(.vscode/settings.json)に追加します:

{
  "mcp": {
    "servers": {
      "android": {
        "command": "npx",
        "args": ["-y", "android-mcp-server"],
        "env": {
          "ANDROID_HOME": "/path/to/android/sdk"
        }
      }
    }
  }
}
Cursor

Cursor の MCP 設定(~/.cursor/mcp.json)に追加します:

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
Windsurf

Windsurf の MCP 設定(~/.codeium/windsurf/mcp_config.json)に追加します:

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
プロジェクト設定(.mcp.json)

プロジェクトの .mcp.json に追加します(バージョン管理にチェックインすると、チームにも共有されます):

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
ソースからビルド
git clone https://github.com/martingeidobler/android-mcp-server.git
cd android-mcp-server
npm install
npm run build
claude mcp add --scope user android -- node /path/to/android-mcp-server/dist/index.js

利用可能なツール

デバイス管理
ツール説明
list_devices接続されている Android デバイスとエミュレーターを一覧表示します
list_avds利用可能な Android Virtual Devices を一覧表示します
start_emulator名前を指定して AVD を起動します(最大 60 秒待機)
スクリーンショットと UI 分析
ツール説明
screenshot視覚的な分析用にスクリーンショットを撮影します。save_path を指定するとディスクに保存できます
get_ui_tree境界、テキスト、リソース ID、状態を含む UI 要素の階層を取得します
操作
ツール説明
tap画面上の座標をタップします
tap_elementresource-id、テキスト、content-desc で要素をタップします
tap_and_wait要素をタップし、UI が安定するまで待って、新しい UI ツリーを返します — 1 回のラウンドトリップで完了します
long_press座標を長押しします(コンテキストメニュー、ドラッグハンドル)
double_tap座標をダブルタップします
multi_tap固定間隔で同じ座標を N 回タップします(連打)
tap_sequenceタップ、待機、テキスト入力、キー押下、スワイプを任意の順序で行う複数ステップの操作チェーンです
type_textフォーカスされている入力欄にテキストを入力します
press_keyキーを押します(back、home、enter、tab、delete、menu など)
swipe座標間でスワイプ操作を行います
scroll_to_element要素が表示されるまでスクロールします
wait_for_element要素が表示されるまで待機します(タイムアウト付き)
診断
ツール説明
get_logslogcat の出力を取得します。パッケージ、ログレベル、時刻で絞り込めます
clear_logslogcat バッファーをクリアします(クリーンな出力を得るため、バグを再現する前に呼び出してください)
get_device_infoモデル、Android バージョン、API レベル、画面サイズ、DPI を取得します
アプリ管理
ツール説明
launch_appパッケージ名を指定してアプリを起動します
install_apkAPK ファイルをインストールします
get_current_activityフォアグラウンドのアプリとアクティビティを取得します
pull_fileデバイスからローカルファイルシステムにファイルを取得します
adb_shell任意の ADB シェルコマンドを実行します

ワークフローの例

バグの記録

「ログをクリアして、設定画面を開き、保存ボタンをタップしてから、ログとスクリーンショットを表示してください」

Claude は次の操作を行います:clear_logs → launch_app → tap_element → get_logs(package_name="com.example.app", level="E") → screenshot(save_path="./bugs/settings-crash.png")

UI テスト

「ログインフローを進め、各画面がデザインと一致していることを確認してください」

Claude は screenshot と get_ui_tree を使って各画面を確認・把握し、tap_element/type_text で操作します。また、ビジョン機能を使ってモックアップや説明と照合します。

スモークテスト

「APK をインストールしてアプリを起動し、メイン画面を順にタップしてクラッシュしないことを確認してください」

Claude は次の操作を行います:install_apk → launch_app → tap_element で画面を移動 → 各画面の後に get_logs(level="E") でエラーを確認します。

要素の操作

「設定を開き、「display」を検索して、最初の結果をタップし、その後戻ってください」

Claude は次の操作を行います:launch_app(package_name="com.android.settings") → tap_and_wait(by="text", value="Search settings") → type_text("display") → tap_and_wait(by="text", value="Display") → press_key(key="back")

デモとプロンプトガイド

  • DEMOS.md — 今すぐ試せる、コピーして貼り付けるプロンプトのシナリオ
  • PROMPTING.md — ベストプラクティス、パフォーマンスのヒント、よくある落とし穴

仕組み

サーバーは Model Context Protocol を使用して stdio 経由で通信します。すべてのデバイス操作は ADB 経由で行われ、アプリの変更は不要です。スクリーンショットはメモリ内でキャプチャされ、圧縮された後、AI が視覚的に確認して分析できる base64 画像として返されます。

コントリビューション

コントリビューションを歓迎します!ガイドラインについては CONTRIBUTING.md をご覧ください。

ライセンス

MIT - LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。