/ ディレクトリ / プレイグラウンド / Android-MCP
● コミュニティ CursorTouch ⚡ 即起動

Android-MCP

作者 CursorTouch · CursorTouch/Android-MCP

チャットからAndroidデバイスやエミュレータを操作 — タップ、スワイプ、文字入力、通知確認 — QA自動化やデモに最適です。

CursorTouch製のAndroid-MCPは、ADBをラップしてMCPクライアントにタップ、スワイプ、文字入力、ハードウェアキー、通知、シェルコマンドによるAndroid 10+デバイスへのアクセスを提供します。UIテストの雛形作成、再現可能なデモ、面倒なアプリ操作の自動化に最適です。ADBと接続済みのデバイスまたはエミュレータが必要です。

なぜ使うのか

主な機能

ライブデモ

実際の動作

android.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "android": {
      "command": "uvx",
      "args": [
        "Android-MCP"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "android": {
      "command": "uvx",
      "args": [
        "Android-MCP"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "android": {
      "command": "uvx",
      "args": [
        "Android-MCP"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "android": {
      "command": "uvx",
      "args": [
        "Android-MCP"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "android",
      "command": "uvx",
      "args": [
        "Android-MCP"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "android": {
      "command": {
        "path": "uvx",
        "args": [
          "Android-MCP"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add android -- uvx Android-MCP

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Android-MCP

Androidアプリのスモークテストを自動化する

👤 モバイルQAエンジニア、テストフレームワーク未導入の開発チーム ⏱ ~30 min intermediate

使うタイミング: リリースごとに「アプリ起動→ログイン→メイン画面表示」を自動実行したい場合に使います。

前提条件
  • ADBがインストール済みでデバイスが接続されていること — Android StudioにADBが同梱されています。adb devicesでデバイスが表示されることを確認してください
  • デバイスのUSBデバッグまたはワイヤレスデバッグが有効であること — 設定 > 開発者向けオプション > USBデバッグ
フロー
  1. 現在の状態をキャプチャ
    UIの状態を取得して — 今どの画面にいて、どの要素が表示されていますか?✓ コピーしました
    → ラベル付き要素を含むUIツリー
  2. フローを実行
    「Sign In」ボタンをタップし、メールフィールドに「[email protected]」、パスワードに「P@ss」を入力して送信してください。✓ コピーしました
    → アプリがホーム画面に遷移
  3. 成功を検証
    ホーム画面の「Welcome」バナーが表示されていることを確認してください。表示されていなければ失敗とします。✓ コピーしました
    → 合格/不合格の判定

結果: ビルドごとに実行できるスクリプト化されたスモークテスト。

注意点
  • デバイスサイズによって座標が変わる — Stateツールのクエリでラベル/IDから要素を検索し、返された座標をクリックする方法を推奨
  • A/Bテストでフローが壊れる — ビルドコンフィグを固定するか、QAビルドではエクスペリメントを無効にする
組み合わせ: github

実機で再現可能なプロダクトデモを実行する

👤 セールスエンジニア、投資家向けデモを行うプロダクト担当者 ⏱ ~20 min intermediate

使うタイミング: プレゼン中にアプリをハンズフリーで操作したい場合に使います。

フロー
  1. デモをスクリプト化
    3秒間隔で以下の5ステップをスクリプト化してください: アプリを開く、Exploreをタップ、Category Bまでスクロール、アイテムXをタップ、スクリーンショットを撮影。✓ コピーしました
    → ステップ計画
  2. リハーサル実行
    実行してください。ナレーションできるようにステップ間でポーズを入れてください。✓ コピーしました
    → デバイスが追従

結果: 同一手順で何度でも再実行できる、不具合のないデモ。

開発デバイスの通知をトリアージする

👤 通知フローをテストする開発者 ⏱ ~10 min beginner

使うタイミング: プッシュ通知が正しく届き、表示が適切かを検証する場合に使います。

フロー
  1. 最近の通知を確認
    アクティブな通知を一覧表示してください。com.myapp.prodからの通知をフラグしてください。✓ コピーしました
    → フィルタリングされたリスト
  2. 個別に詳細確認
    最新のmyapp通知の全内容を取得してください。期待するフォーマットと一致していますか?✓ コピーしました
    → 期待値との差分

結果: プッシュパイプラインが正常に動作していることの迅速な確認。

組み合わせ

他のMCPと組み合わせて10倍の力を

android + github

PRでスモークテストを実行し結果を投稿する

PR #88に新しいAPKアーティファクトが追加されたら、接続中のデバイスにインストールし、スモークテストフローを実行して、結果をPRにコメントしてください。✓ コピーしました
android + filesystem

スクリーンショットとログをQAアーティファクトとして保存する

デモフローの各ステップ後にスクリーンショットを撮影し、./qa/2026-04-14/step-N.pngに保存してください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
State-Tool (none) 常に最初に呼ぶ — 画面に何が表示されているかを把握する free
Click-Tool x: int, y: int Stateが返した座標をタップする free
Long-Click-Tool x, y, duration_ms? コンテキストメニューの表示 free
Type-Tool text: str, clear_first?: bool フォーカス中のフィールドにテキストを入力する free
Swipe-Tool x1,y1,x2,y2, duration_ms? スクロールやジェスチャー操作 free
Drag-Tool start_x,y,end_x,y ドラッグ&ドロップ操作 free
Press-Tool key: Back|Home|VolumeUp|... ハードウェアキー / システムナビゲーション free
Wait-Tool ms: int アニメーションやトランジションの完了を待つ free
Notification-Tool (none) or package: str 通知の確認 free
Shell-Tool cmd: str ログ取得、am/pmコマンドなどの高度な操作用エスケープハッチ free (ただし強力 — 要注意)

コストと制限

運用コスト

APIクォータ
なし — すべてADB経由のローカル処理
呼び出しあたりのトークン
Stateツールは画面の複雑さに応じて2,000〜10,000トークンのUIツリーを返します
金額
無料
ヒント
ツリー全体をダンプせず、Stateにクエリでフィルタリングを指示してください(例: 「Sign Inボタンを探して」)。

セキュリティ

権限、シークレット、影響範囲

認証情報の保管: なし。ADBの信頼設定はデバイス側で管理されます
データ送信先: すべてローカル処理。ADBはUSBまたはローカルWi-Fi経由のみ
絶対に付与しない: Shell-Tool on devices with production data — it can read private files

トラブルシューティング

よくあるエラーと対処法

adb: device unauthorized — デバイスが未承認です

デバイス画面に表示されるフィンガープリント確認プロンプトを承認してから再試行してください。

確認: adb devices
No devices found — デバイスが見つかりません

USBデバッグが有効であること、USBケーブルがデータ転送対応であることを確認してください。WiFiの場合はadb connectでIP:portを確認してください。

確認: adb devices
Coordinates off on different screen — 別の画面で座標がずれる

ハードコードされたx,yではなく、Stateツールでラベル付き要素の現在の座標を取得してください。

確認: Call State before click
Type-Tool inserts garbage characters — 文字化けが発生する

デバイスが非USキーボードを使用しています。USキーボードに切り替えるか、Shell-Tool経由でadb shell input textを使用してください。

確認: adb shell settings get secure default_input_method

代替案

Android-MCP 他との比較

代替案代わりに使う場面トレードオフ
Appiumアサーションやレポート機能を備えたフルQAフレームワークが必要な場合セットアップが重い。MCP連携なし
MaestroYAMLベースのUIテストを行いたい場合MCP連携なし

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る