mcpField
M
Mobile Device Mcp

Mobile Device Mcp

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

Mobile Device Mcp について

Mobile Device MCP は、AI エージェントが iOS と Android のデバイスを操作できるようにする MCP サーバーです。複数のデバイスを同時に扱え、デバイス上の UIAutomator や XCUITest のサーバーを通じて UI ツリーの取得と操作を行います。モバイルアプリの自動テストや操作を行う開発者を対象としています。

主な機能

  1. 01複数の iOS および Android デバイスの同時対応
  2. 02検索と件数制限に対応したフラットな UI 要素ツリー
  3. 03タップ、ダブルタップ、長押し、スワイプ、テキスト入力
  4. 04デバイス画面の JPEG スクリーンショット
  5. 05デバイス上のサンドボックスでの JavaScript 実行

活用シーン

  1. 01実機やシミュレーターでエージェントにアプリを操作させる
  2. 02ネイティブ画面と WebView の要素を読み取り自動検証を行う
  3. 03複数デバイスへのアプリインストールと操作の実行

MCP 対応

本プロジェクトは MCP サーバーであり、list_devices、tap、uitree などのツールを MCP クライアントに公開してモバイルデバイスの操作を可能にします。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mobile-device-mcp-srmorete": {
"command": "npx",
"args": [
"-y",
"@srmorete/mobile-device-mcp"
]
}
}
}
起動コマンドnpx -y @srmorete/mobile-device-mcp

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

パッケージ
npm@srmorete/mobile-device-mcp0.1.10

ツール

14

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

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

詳細

Mobile Device MCP

AI エージェントが iOS および Android デバイスを操作できる MCP サーバーです(タップ、スクロール、テキスト入力、スクリーンショットの撮影、UI ツリーの読み取り、コードの実行)。複数のデバイスを同時に使用できます。

仕組み

3 層アーキテクチャです。

  1. デバイス上のサーバー — 各モバイルデバイス上で動作する軽量な HTTP サーバーです(Android では UIAutomator、iOS では XCUITest)。アクセシビリティツリーを公開し、操作コマンドを受け付けます。
  2. UI ツリーフィルター — 両プラットフォームの未加工の UI ツリーを、統一されたフラットな要素リストに正規化します。
  3. MCP サーバー — 外部インターフェースです。デバイスの検出、ブートストラップ、ポートの割り当てを処理し、デバイス上のサーバーにリクエストをプロキシします。

デバイスは初回使用時にブートストラップされます。サーバーはドライバーアプリをインストールし、ポートを割り当て、デバイス上のサーバーを起動して、正常に動作するまでポーリングします。その後のすべてのツール呼び出しは、デバイスごとのベアラートークン認証を使用して localhost の HTTP 経由でプロキシされます。

ツール

ツール説明
list_devices利用可能な iOS および Android デバイスを一覧表示します
screenshotデバイスの画面をキャプチャします(JPEG)
uitreeUI 要素ツリーをフラットなリストとして取得します。検索と件数制限を任意で指定できます。include_invisible: true を指定しない限り、画面外の要素は除外されます
tap画面座標をタップします
double_tap画面座標をダブルタップします
long_press画面座標を長押しします(継続時間を設定可能)
scroll始点から終点の座標までスワイプします
type_textフォーカス中の要素にテキストを入力します
press_buttonハードウェアボタンまたはナビゲーションボタンを押します(home、back、enter、volumeUp/Down、dpadUp/Down/Left/Right/Center)
launch_appバンドル ID またはパッケージ名でアプリを起動します
terminate_appアプリを強制終了します
list_appsインストール済みアプリを一覧表示します
install_appホスト上のローカルファイルからアプリをインストールします(Android は .apk、iOS シミュレーターは .app、iOS デバイスは .app/.ipa)。既存のインストールを置き換えます
run_codeデバイス上でサンドボックス化された JavaScript を実行します(下記の run_code を参照)
run_code

エージェントは、内部ではどちらも JavaScript である UIAutomator または XCUITest のように_見える_コードを渡せます。 サンドボックスでは、Android で危険性のある Java 操作を制限し、iOS では一部の XCUITest 風コマンドのみを許可します。

  • Android: UIAutomator バインディングを備えた Rhino エンジン — uiDevice(クリック、スワイプ、要素の検索、キーの押下、ディスプレイ情報の読み取り)、By(セレクター)、Until(待機条件)、console.log()
  • iOS: XCUITest バインディングを備えた JavaScriptCore — app(要素の検索、タップ、テキスト入力、スワイプ)、springboard、device、openApp(bundleId)、sleep(ms)、console.log()

どちらのプラットフォームでも、実行が止まらないスクリプト(無限ループ)は自動的に終了し、呼び出しごとに新しいサンドボックスが作成されます。

前提条件

  • Node.js 18 以降(npx 経由で実行する場合)
  • Android: PATH に adb が設定された Android SDK
  • iOS シミュレーター: xcrun と simctl を含む Xcode
  • iOS 実機: xcodebuild、devicectl、および libimobiledevice の iproxy を含む Xcode
  • ソースからビルドする場合: Bun ランタイム、Gradle(Android)、Xcode(iOS)

インストール

Claude Code
claude mcp add mobile-device-mcp -- npx -y @srmorete/mobile-device-mcp@latest

または、カスタムポートを使用する場合:

claude mcp add mobile-device-mcp -e MDMS_PORT_ANDROID=20000 -e MDMS_PORT_IOS=21000 -- npx -y @srmorete/mobile-device-mcp@latest
.mcp.json の変更(Cursor、Claude Desktop など)
{
  "mcpServers": {
    "mobile-device-mcp": {
      "command": "npx",
      "args": ["-y", "@srmorete/mobile-device-mcp@latest"],
      "env": {
        "MDMS_PORT_ANDROID": "18000",           # optional
        "MDMS_PORT_IOS": "19000"                # optional
      }
    }
  }
}

ソースからのビルド

git clone <repo-url>
cd mobile-device-mcp
bun install

# Build drivers for both platforms and pack tarball
./scripts/build.sh

ビルドスクリプトはデバイス上のドライバーをコンパイルし(Gradle で Android APK、xcodebuild で iOS テストバンドル)、それらを drivers/ にコピーして npm tarball を作成します。

開発中にローカルで実行するには:

bun run start           # Start the MCP server
bun test                # Run the test suite

設定

環境変数デフォルト説明
MDMS_PORT_ANDROID18000Android のデバイス上サーバーの基準ポート
MDMS_PORT_IOS19000iOS のデバイス上サーバーの基準ポート

ポートは順番に割り当てられます。Android デバイスの 1 台目には 18000、2 台目には 18001 が割り当てられ、以降も同様です。iOS も 19000 から同様に割り当てられます。

謝辞

Mobile Device MCP server は、mobile-mcp や Maestro のような先駆者の成果を基盤としています。 これらを参考にしつつ、複数デバイスに対応し、Native/WebView をシームレスにサポートする現在のアプローチへと再構成しました(特に Android)。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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