Closed6
[Scraps] Mobile MCP を使ってみる

Mobile MCP
これ
今回試した条件
- iOS Simulator で iOS アプリを操作
- Cursor を使用

はじめにやること
iOS Simulator を立ち上げた状態で下記を実行。
任意のディレクトリで、
# close WebDriverAgent if you haven't done so already
git clone --depth 1 https://github.com/appium/WebDriverAgent.git
cd WebDriverAgent
# start wda as an xcuitest, replace 'iPhone 16' with your simulator name
# 色々 parameter があるのでここは各人の環境に依ります。私の場合は `iPhone 16` を `iPhone 16 Plus` に書き換えて実行しました。
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 16' test

上記を実行すると WebDriverAgent というアプリが iOS Simulator 上でインストールされた状態になります。WebDriverAgent を Kill すると、mcp が使えなくなるので注意です。

Cursor のセットアップ
下記を MCP の設定に追加します。
{
"mobile-mcp": {
"command": "npx",
"args": [
"-y",
"@mobilenext/mobile-mcp@latest"
]
}
}
}

これで設定完了ですが、私は .curser/rules に下記の rule を追加で記述しています。
# Mobile MCP サーバー設定
## 概要
Mobile MCPは、モバイルデバイスやシミュレーターを操作するためのMCPサーバーです。このプロジェクトでは、`@mobilenext/mobile-mcp` を使用してFlutterアプリのテストと操作を行います。
## MCP設定
`.cursor/mcp.json` に以下の設定が含まれています:
\`\`\`json
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": [
"-y",
"@mobilenext/mobile-mcp@latest"
]
}
}
}
\`\`\`
## 利用可能なツール
### デバイス管理
- **`mcp_mobile_use_default_device`**: デフォルトのシミュレーターを使用
- **`mcp_mobile_list_available_devices`**: 利用可能なデバイス一覧を取得
- **`mcp_mobile_use_device`**: 特定のデバイス(シミュレーター/実機)を選択
### アプリ操作
- **`mcp_mobile_list_apps`**: インストール済みアプリ一覧を取得
- **`mcp_mobile_launch_app`**: アプリを起動(パッケージ名を指定)
- **`mcp_mobile_terminate_app`**: アプリを終了
### 画面操作
- **`mcp_mobile_get_screen_size`**: 画面サイズを取得
- **`mcp_mobile_click_on_screen_at_coordinates`**: 指定座標をクリック
- **`mcp_mobile_list_elements_on_screen`**: 画面上の要素一覧を取得
- **`mcp_mobile_swipe_on_screen`**: スワイプ操作(上下左右)
- **`mcp_mobile_type_keys`**: テキスト入力
### デバイス制御
- **`mcp_mobile_press_button`**: 物理ボタン操作(HOME、BACK、音量等)
- **`mcp_mobile_open_url`**: ブラウザでURLを開く
- **`mcp_mobile_set_orientation`**: 画面の向きを変更(portrait/landscape)
- **`mcp_mobile_get_orientation`**: 現在の画面の向きを取得
### スクリーンショット
- **`mcp_mobile_take_screenshot`**: スクリーンショットを撮影して表示
- **`mcp_mobile_save_screenshot`**: スクリーンショットをファイルに保存
## 使用例
### 1. デバイスの選択とアプリ起動
\`\`\`
1. mcp_mobile_list_available_devices でデバイス一覧を確認
2. mcp_mobile_use_device でiPhone 16 Plusシミュレーターを選択
3. mcp_mobile_launch_app でアプリを起動(例:com.example.itpassmaster)
\`\`\`
### 2. 画面操作とテスト
\`\`\`
1. mcp_mobile_list_elements_on_screen で画面要素を確認
2. mcp_mobile_click_on_screen_at_coordinates で要素をクリック
3. mcp_mobile_type_keys でテキスト入力
4. mcp_mobile_take_screenshot で結果を確認
\`\`\`
#### 画面要素クリックの具体例
\`\`\`
1. mcp_mobile_list_elements_on_screen を実行して要素情報を取得
例: 選択肢Bの座標情報
- coordinates: {"x": 17, "y": 464, "width": 396, "height": 80}
2. 要素の中央付近をクリック
- x座標: 17 + (396 / 2) ≈ 215
- y座標: 464 + (80 / 2) ≈ 504
- mcp_mobile_click_on_screen_at_coordinates(x: 215, y: 504)
\`\`\`
## 注意事項
- シミュレーターが起動していない場合は、事前に `open -a Simulator` で起動する必要があります
- Flutter アプリの場合、`flutter run` と組み合わせて使用すると効果的です
- [[memory:61061922764312626]] Flutter開発時は、iPhone 16 Plus シミュレーターを優先的に使用します
- **画面要素のクリック時の重要な注意点**:
- `mcp_mobile_click_on_screen_at_coordinates` を使用する前に、必ず `mcp_mobile_list_elements_on_screen` で要素の正確な座標を確認すること
- 推測で座標を指定すると、要素の位置がずれていてクリックが失敗することがある
- 各要素の `coordinates` プロパティには `x`, `y`, `width`, `height` が含まれており、クリック可能な範囲を正確に把握できる
## 関連設定
- Flutter プロジェクトのパッケージ名: `com.example.mobile`
- iOS Bundle ID: 同上(firebase.json で設定済み)

実行
上記の設定が完了した状態で、iOS アプリを iOS Simulator 上でデバッグ起動させると、Mobile MCP が使えるようになります。
以上です。
このスクラップは2ヶ月前にクローズされました