mcpField
E
Expo Android MCP

Expo Android MCP

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

Expo Android MCP について

Expo Android MCP は、ADB 経由で Android エミュレーターや接続済みデバイスを調査・操作する MCP サーバーです。UI 要素の認識、スクリーンショット、デバイス選択を備え、Android アプリのテストに使えます。

主な機能

  1. 01接続デバイスの一覧表示と選択
  2. 02UI 要素の検査とスクリーンショット撮影
  3. 03UI 要素の検索・待機・検証
  4. 04タップ、スワイプ、長押し、テキスト入力
  5. 05アプリの起動とインストール済みパッケージの一覧表示
  6. 06指定された Expo Go APK のインストール

活用シーン

  1. 01テスト中の Android アプリ操作の自動化
  2. 02エミュレーター画面の確認とコントロールの特定
  3. 03操作前後の UI 状態の検証

MCP 対応

MCP クライアントに、検査、スクリーンショット、入力、アプリ起動など、ADB ベースの Android デバイス・UI 操作用ツールを公開します。ツールのアノテーションで、読み取り専用の検査とデバイスを操作する処理を区別します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"frndchagas-expo-android": {
"command": "npx",
"args": [
"-y",
"@fndchagas/expo-android"
],
"env": {
"ADB_PATH": "<ADB_PATH>",
"ADB_SERIAL": "<ADB_SERIAL>",
"ADB_TIMEOUT_MS": "<ADB_TIMEOUT_MS>",
"ADB_MAX_BUFFER_MB": "<ADB_MAX_BUFFER_MB>",
"ADB_DEBUG": "<ADB_DEBUG>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"PORT": "<PORT>"
}
}
}
}
起動コマンドnpx -y @fndchagas/expo-android
設定が必要な環境変数
ADB_PATHPath to adb executable.
ADB_SERIALDevice serial to target (optional, use 'auto' to clear and auto-detect).
ADB_TIMEOUT_MSTimeout for adb commands in milliseconds.
ADB_MAX_BUFFER_MBMax buffer size for adb output in MB.
ADB_DEBUGEnable adb debug logs (set to 1).
MCP_TRANSPORTTransport: stdio, http, or both.
PORTHTTP port when MCP_TRANSPORT is http or both.

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

パッケージ
npm@fndchagas/expo-android0.5.2

ツール

17

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

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

詳細

expo-android

npm version npm downloads license node version typescript CI

ADB 経由で Android エミュレーターを自動操作する MCP サーバーです。

要件

  • Node 18+
  • Android SDK platform-tools(adb)が使用可能であること
  • Android エミュレーターまたはデバイスが接続されていること

adb を確認します:

adb devices

インストール

Claude Desktop、ワンクリック: 最新リリースから expo-android.mcpb をダウンロードし、Settings → Extensions にドラッグします。両方のフィールドは空のままでかまいません。adb は自動検出され、接続されているデバイスが1台だけの場合は、そのデバイスがデフォルトで使用されます。

npm 経由:

npm install -g @fndchagas/expo-android
# or
npx -y @fndchagas/expo-android

クイックスタート

  1. エミュレーターを起動するか、デバイスを接続します。
  2. doctor を実行して、adb とデバイスの選択を検証します。
  3. inspect、tapElement、inputText などを使用します。

例:

await client.callTool({ name: 'expo-android.doctor', arguments: {} });
await client.callTool({
  name: 'expo-android.inspect',
  arguments: { onlyInteractive: true, maxElements: 200 },
});

Claude Code CLI で使用する

claude mcp add expo-android \
  --env ADB_PATH="$HOME/Library/Android/sdk/platform-tools/adb" \
  --env ADB_SERIAL="auto" \
  -- npx -y @fndchagas/expo-android

OpenAI Codex CLI で使用する

codex mcp add expo-android \
  --env ADB_PATH="$HOME/Library/Android/sdk/platform-tools/adb" \
  --env ADB_SERIAL="auto" \
  -- npx -y @fndchagas/expo-android

または、~/.codex/config.toml を編集します:

[mcp_servers.expo-android]
command = "npx"
args = ["-y", "@fndchagas/expo-android"]
env = { ADB_PATH = "/Users/you/Library/Android/sdk/platform-tools/adb", ADB_SERIAL = "emulator-5554" }

シリアル番号の選択優先順位: serial パラメーター(ツール呼び出しごと)→ setDevice による上書き → ADB_SERIAL 環境変数 → 自動(デバイスが1台だけの場合)。

環境変数

変数デフォルト説明
ADB_PATHadbadb 実行ファイルのパス
ADB_SERIAL任意対象デバイスのシリアル番号(クリアして自動検出する場合は auto)
ADB_TIMEOUT_MS15000adb コマンドのタイムアウト
ADB_MAX_BUFFER_MB10出力バッファーの最大サイズ
ADB_DEBUG0adb の診断情報を stderr に記録
MCP_TRANSPORTstdioトランスポート:stdio、http、または both
PORT7332http/both 使用時の HTTP ポート

トラブルシューティング

adb が見つからない(spawn adb ENOENT)

adb が見つからない場合でもサーバーは起動します。adb が使用可能になるまで、ツールは ADB executable not found エラーを返します(診断には doctor を実行してください)。解決するには、ADB_PATH を設定するか、SDK のパスをエクスポートします:

export ADB_PATH="$HOME/Library/Android/sdk/platform-tools/adb"
# or
export ANDROID_HOME="$HOME/Library/Android/sdk"

複数のデバイスが接続されている場合は、対象デバイスを ADB_SERIAL に設定します。 実行中に setDevice を実行することもできます:

await client.callTool({
  name: 'expo-android.setDevice',
  arguments: { serial: 'emulator-5554' },
});

PATH または SDK の環境変数を更新した場合は、新しい環境を読み込めるように MCP プロセスを再起動してください。

テスト

npm run build
npm test

ツール

ツール名は単純な識別子(例:tap)です。MCP クライアントは、登録したサーバー名をプレフィックスとして付加します。

  • devices — 接続されているデバイスとエミュレーターを一覧表示します。
  • doctor — adb が利用可能かを検証し、接続されているデバイスを表示します。
  • setDevice — この MCP プロセスで使用するアクティブなデバイスのシリアル番号を上書きします。
  • inspect — UI ダンプを要約付きで解析し、要素を表示します(スクリーンショットは任意です)。
  • screenshot — スクリーンショットのみをキャプチャします(base64 またはファイルパス)。
  • findElement — 検索条件に一致する要素を返します。
  • tapElement — 要素を検索し、その中央をタップします。
  • waitForElement — 要素が表示されるまで待機します(状態チェックは任意です)。
  • assertElement — 要素の存在と状態を確認します。
  • tap — x/y 座標をタップします。
  • swipe — 座標間をスワイプします。
  • longPress — 座標を長押しします。
  • inputText — フォーカスされているフィールドにテキストを入力します。
  • keyEvent — Android のキーイベントを送信します(例:BACK、HOME)。
  • openApp — パッケージ名を指定してアプリを起動します。
  • listPackages — インストール済みのパッケージ名を一覧表示します。
  • installExpoGo — 固定された Expo Go APK をダウンロードし、adb install -r でインストールします(url の上書きで指定できるのは、公式の github.com/expo/expo-go-releases URL のみです)。

すべてのツールは MCP アノテーション(readOnlyHint/destructiveHint)を宣言しているため、クライアントは検査ツールを自動承認し、デバイスを操作するツールには承認を求めることができます。

検索条件

次のツールは柔軟な検索入力を受け付けます:findElement、tapElement、 waitForElement、assertElement。

共通フィールド:

  • text、textContains
  • contentDesc、contentDescContains
  • resourceId、resourceIdContains
  • class
  • normalizeWhitespace、caseInsensitive

MCP の使用例

検査
const result = await client.callTool({
  name: 'expo-android.inspect',
  arguments: { onlyInteractive: true, includeScreenshot: false, maxElements: 200 },
});

検査オプション:

  • includeScreenshot(デフォルト:false)
  • screenshotMode:base64 または path
  • screenshotPath:path 使用時の任意のファイルパス
  • maxElements:返す要素数の上限
  • includeElements:要素を返すか、要約のみを返すか
Doctor
await client.callTool({
  name: 'expo-android.doctor',
  arguments: {},
});
呼び出しごとにシリアル番号を上書き
await client.callTool({
  name: 'expo-android.tapElement',
  arguments: { text: 'Search', serial: 'emulator-5554' },
});
要素をタップ
await client.callTool({
  name: 'expo-android.tapElement',
  arguments: { text: 'Private account' },
});
待機+確認
await client.callTool({
  name: 'expo-android.waitForElement',
  arguments: { text: 'Save', timeout: 10000, shouldBeClickable: true },
});

await client.callTool({
  name: 'expo-android.assertElement',
  arguments: { text: 'Private account', shouldBeChecked: true },
});

コメント

MCP は初めてですか?

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

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