Closed6

[Scraps] Mobile MCP を使ってみる

ヘブンヘブン

はじめにやること

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

https://github.com/mobile-next/mobile-mcp/wiki/Getting-Started-with-iOS-Simulators

ヘブンヘブン

上記を実行すると 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ヶ月前にクローズされました