local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Enables automation of native Android applications through accessibility snapshots or coordinate-based interactions, supporting both emulators and physical devices for testing, data-entry, and multi-step user journeys.
Provides platform-agnostic automation of iOS applications using accessibility trees and screenshots, allowing for scripted flows and form interactions on both simulators and physical devices without manual control.
Supports interaction with Samsung mobile devices for application testing and automation through structured accessibility snapshots or coordinate-based taps.
Mobile Next - モバイルオートメーション向けMCPサーバー
これは、プラットフォームに依存しないインターフェースを通じてスケーラブルなモバイル自動化を実現するモデルコンテキストプロトコル(MCP)サーバーです。iOSまたはAndroidの個別の知識は不要です。このサーバーにより、エージェントとLLMは、構造化されたアクセシビリティスナップショットやスクリーンショットに基づく座標ベースのタップを通じて、ネイティブiOS/Androidアプリケーションやデバイスと対話できます。
https://github.com/user-attachments/assets/c4e89c4f-cc71-4424-8184-bdbc8c638fa1
🚀 モバイル MCP ロードマップ: モバイルの未来を築く
Mobile MCPの継続的な改善にご協力ください。今後の機能、改善点、マイルストーンについては、詳細なロードマップをご覧ください。皆様からのフィードバックは、モバイルオートメーションの未来を形作る上で非常に貴重です。
主な使用例
モバイル自動化の拡張を支援する方法:
- 📲 テストまたはデータ入力シナリオ用のネイティブ アプリ自動化 (iOS および Android)。
- 📝 シミュレーター/エミュレーターや物理デバイス(iPhone、Samsung、Google Pixel など)を手動で制御せずに、スクリプト化されたフローとフォームのインタラクションを実行できます。
- 🧭 LLM を活用した複数ステップのユーザー ジャーニーの自動化
- 👆 エージェントベースのフレームワーク向けの汎用モバイルアプリケーションインタラクション
- 🤖 モバイル自動化ユースケース、データ抽出のためのエージェント間通信を可能にします
主な特徴
- 🚀高速かつ軽量: ほとんどのインタラクションにはネイティブのアクセシビリティ ツリーを使用し、a11y ラベルが利用できない場合はスクリーンショット ベースの座標を使用します。
- 🤖 LLM 対応: アクセシビリティ (スナップショット) ではコンピューター ビジョン モデルは必要ありません。
- 🧿視覚認識:画面上に実際にレンダリングされたものを評価・分析し、次のアクションを決定します。アクセシビリティデータやビュー階層座標が利用できない場合は、スクリーンショットベースの分析にフォールバックします。
- 📊決定論的なツールの適用: 可能な限り構造化されたデータに依存することで、純粋にスクリーンショットベースのアプローチに見られる曖昧さを軽減します。
- 📺構造化データの抽出: 画面に表示されているあらゆるものから構造化データを抽出できます。
モバイルMCPアーキテクチャ
インストールと設定
前提条件
MCP をエージェントおよびモバイル デバイスに接続するために必要なもの:
- Xcodeコマンドラインツール
- Android プラットフォーム ツール
- ノード.js
- MCP は、 Claude MCP 、 OpenAI Agent SDK 、 Copilot Studioなどの基本モデルまたはエージェントをサポートしています。
シミュレータ、エミュレータ、物理デバイス
起動すると、Mobile MCP は次のものに接続できます。
- macOS/Linux上のiOSシミュレータ
- Linux/Windows/macOS 上の Android エミュレータ
- 物理的な iOS または Android デバイス (適切なプラットフォーム ツールとドライバーが必要)
Mobile Next Mobile MCP を実行する前に、モバイル プラットフォーム SDK (Xcode、Android SDK) が適切にインストールされ、構成されていることを確認してください。
シミュレータ/エミュレータ上で「ヘッドレス」モードで実行する
物理的な電話がマシンに接続されていない場合は、エミュレーターまたはシミュレーターを使用してバックグラウンドで Mobile MCP を実行できます。
たとえば、Android の場合:
- エミュレータを起動します (avdmanager / emulator コマンド)。
- 必要なフラグでモバイルMCPを実行する
iOS では、シミュレータ インスタンスで Mobile MCP を使用する前に、Xcode とシミュレータを実行する必要があります。
xcrun simctl list
xcrun simctl boot "iPhone 16"
モバイルコマンドとインタラクションツール
コマンドとツールは、アクセシビリティ ベースのロケーター (推奨) と座標ベースの入力の両方をサポートしているため、アクセシビリティ/自動化 ID が欠落している場合でも、信頼性が高くシームレスな自動化を柔軟に行うことができます。
モバイルリストアプリ
- **説明:**デバイスにインストールされているすべてのアプリを一覧表示します
- パラメータ:
bundleId
(文字列): アプリケーションの一意のバンドル/パッケージ識別子 (例: com.google.android.keep または com.apple.mobilenotes)
モバイルアプリ起動
- **説明:**デバイス/エミュレータ上で指定されたアプリを起動します
- パラメータ:
bundleId
(文字列): アプリケーションの一意のバンドル/パッケージ識別子 (例: com.google.android.keep または com.apple.mobilenotes)
モバイルアプリを終了する
- **説明:**実行中のアプリケーションを終了します
- パラメータ:
packageName
(文字列): アプリケーションのバンドル/パッケージ識別子に基づいて、強制停止を呼び出したり、pid に基づいてアプリを強制終了したりします。
モバイル画面サイズを取得
- **説明:**モバイルデバイスの画面サイズをピクセル単位で取得します
- **パラメータ:**なし
モバイル画面上の座標をクリック
- **説明:**座標に基づいて指定された画面座標をタップします。
- パラメータ:
x
(数値): X座標y
(数値): Y座標
モバイルリストの要素を画面上に表示する
- **説明:**画面上の要素とその座標を、表示テキストまたはアクセシビリティ ラベルとともに一覧表示します。
- **パラメータ:**なし
モバイル要素タップ
- **説明:**アクセシビリティロケータによって識別される UI 要素をタップします
- パラメータ:
element
(文字列): 人間が読める要素の説明 (例:「ログインボタン」)ref
(文字列): アクセシビリティ/自動化IDまたはスナップショットからの参照
モバイルタップ
- **説明:**指定された画面座標をタップします
- パラメータ:
x
(数値): X座標y
(数値): Y座標
モバイルボタンを押す
- **説明:**デバイスのボタン (ホーム、戻る、音量、Enter、電源ボタン) を押します。
- **パラメータ:**なし
モバイルオープンURL
- **説明:**デバイスのブラウザで URL を開く
- パラメータ:
url
(文字列): 開く URL (例: " https://example.com ")。
モバイルタイプテキスト
- **説明:**フォーカスされた UI 要素 (例: TextField、SearchField) にテキストを入力します。
- パラメータ:
text
(文字列): 入力するテキストsubmit
(boolean): 入力後にEnter/Returnキーを押すかどうか
モバイル要素のスワイプ
- **説明:**ある UI 要素から別の UI 要素へのスワイプ ジェスチャを実行します
- パラメータ:
startElement
(文字列): 開始要素の人間が読める説明startRef
(文字列): 開始要素のアクセシビリティ/オートメーションIDendElement
(文字列): 終了要素の人間が読める説明endRef
(文字列): 終了要素のアクセシビリティ/オートメーションID
モバイルスワイプ
- 説明: 2つの画面座標間のスワイプジェスチャを実行します
- パラメータ:
startX
(数値): 開始X座標startY
(数値): 開始Y座標endX
(数値): 終了X座標endY
(数値): 終了Y座標
モバイルキーを押す
- **説明:**ハードウェア キーを押すか、特別なイベントをトリガーします (例: Android の [戻る] ボタン)
- パラメータ:
key
(文字列): キー識別子 (例: HOME、BACK、VOLUME_UP など)
モバイルスクリーンショット
- **説明:**現在のデバイス画面のスクリーンショットをキャプチャします
- **パラメータ:**なし
モバイル_get_source
- **説明:**現在のデバイスの UI 構造 (アクセシビリティ スナップショット) (xml 形式) を取得します。
- **パラメータ:**なし
ご協力いただいた皆様に感謝いたします❤️
このプロジェクトの改善にご協力いただいた皆様に感謝いたします。
You must be authenticated.
Tools
iOS および Android デバイスのプラットフォームに依存しないインターフェースを通じてスケーラブルなモバイル自動化を可能にするモデル コンテキスト プロトコル サーバー。これにより、エージェントと LLM はアクセシビリティ スナップショットまたは座標ベースのインタラクションを使用してモバイル アプリケーションと対話できるようになります。
- 🚀 Mobile MCP Roadmap: Building the Future of Mobile
- Main use cases
- Main Features
- Mobile MCP Architecture
- Installation and configuration
- Prerequisites
- Mobile Commands and interaction tools
- mobile_list_apps
- mobile_launch_app
- mobile_terminate_app
- mobile_get_screen_size
- mobile_click_on_screen_at_coordinates
- mobile_list_elements_on_screen
- mobile_element_tap
- mobile_tap
- mobile_press_button
- mobile_open_url
- mobile_type_text
- mobile_element_swipe
- mobile_swipe
- mobile_press_key
- mobile_take_screenshot
- mobile_get_source
- Thanks to all contributors ❤️