本文へスキップ
Device MCP

Device MCP ドキュメント

コマンドライン

Device MCP のコマンドライン device-mcp-cli を使って、ターミナル、シェルスクリプト、CI から iPhone、iPad、Android デバイス、シミュレータを操作できます。どのコマンドも JSON で結果を返せます。

device-mcp-cli は Device MCP のコマンドラインです。アプリで行う操作や AI エージェントに頼む操作を、ターミナル、シェルスクリプト、Makefile、CI から実行できます。デバイスの一覧表示、スクリーンショット、画面の読み取り、タップや入力、アプリの起動やインストール、位置情報の設定、ライセンスの管理ができます。

どのコマンドも JSON で結果を返せるので、スクリプトではテキストを解析しなくても、jq で結果を読み取れます。

1. インストール

  • Homebrew:brew install --cask device-mcp で、device-mcp-cli が PATH に追加されます。
  • Web サイトからダウンロードした場合:ターミナルで次のコマンドを一度だけ実行して、PATH に追加します。
sudo ln -sf "/Applications/Device MCP.app/Contents/MacOS/device-mcp-cli" /usr/local/bin/device-mcp-cli

このリンクは、Device MCP がアップデートされても使えます。次のコマンドで確認します。

device-mcp-cli --version
device-mcp-cli --help                  # every command
device-mcp-cli help apps launch        # one command, with its options

2. 仕組み

  • コマンドは Device MCP が実行します:デバイスのコマンドは、Mac 上の Device MCP アプリに送られます。Device MCP が起動していない場合、コマンドは Device MCP を開く前に確認します。--launch を付けると確認せずに開き(スクリプトではこちらを使います)、--no-launch を付けると開きません。status、mcp、tools、logs は Device MCP を開きません。
  • 使うデバイス:--device(または -d)でデバイスの名前か UDID を指定します。指定しない場合は devices select で選んだデバイスを使い、それもなければ Device MCP で選択されているデバイスを使います。
  • JSON:どのコマンドにも --json を付けられます。エラーも JSON で返ります。
  • 主導権はあなたに:アプリのインストールと削除、リンクを開く操作、クリップボードの読み取りと変更、Build & Run は、AI エージェントの場合と同じく、まず Device MCP であなたに確認します。承認を参照してください。デバイスのペアリング解除とライセンスの無効化は、常に確認します。
  • 無料版と Pro:どのコマンドも Device MCP の無料版で使えます。ただし、Build & Run、アプリのインストール、3D ビューインスペクタには Device MCP Pro が必要です。無料版でミラーリングできるのは、一度に 1 台のデバイスだけです。

3. コマンド

<device> はデバイスの名前か UDID です。どのコマンドにも --json を、デバイスのコマンドには --device を付けられます。

デバイス

コマンド内容
devicesデバイスを一覧表示します(名前、種類、OS、接続方法、状態、UDID)。--all を付けると、すべてのシミュレータとエミュレータに加え、新しいシミュレータに選べるモデルも表示します。
devices infoデバイスのモデル、OS、画面サイズ、ミラーリングとロックの状態を表示します。--settings を付けると、外観とアクセシビリティの設定も表示します。
devices select <device>以降のコマンドで使うデバイスを選び、Device MCP に表示します。
devices start-mirroring、devices stop-mirroringデバイスのミラーリングを開始または停止します。
devices reconnectミラー画面が固まったデバイスに再接続します。
devices unpair <device>iPhone や iPad と Mac のペアリングを解除します。
devices remove <device>Device MCP のリストからデバイスを削除します。
simulatorsiOS と watchOS のシミュレータ、Android エミュレータを一覧表示します。
simulators start <name>シミュレータまたはエミュレータを起動し、起動が完了するまで待ちます。--model "iPhone 17 Pro" を付けると、新しいシミュレータを作成します。
simulators stop <name>シミュレータまたはエミュレータをシャットダウンします。

画面

コマンド内容
screenshotフル解像度のスクリーンショットを保存します。-o で保存先のファイル(.png または .jpg)かフォルダを指定します。デフォルトは ~/Pictures/Device MCP です。
record start、record stop画面を収録して、~/Movies/Device MCP にムービーとして保存します。
elements画面上の要素を一覧表示します。要素ごとに、種類、ラベル、値、フレーム、tap --ref で使う ref(e12)を表示します。

タッチとキー

コマンド内容
tap要素をテキスト(--text "Sign In")か ref(--ref e12)で指定するか、座標(-x 120 -y 640)を指定してタップします。--double でダブルタップ、--long で長押しします。
type <text>フォーカスのあるフィールドに入力します。--field "Email" はフィールドをタップし、中身を消してから入力します。--submit で Return キーを押します。- を指定すると、パイプやファイルからテキストを読み込みます。
scroll up|down|left|rightスクロールします。--distance 300 を付けると、コンテンツを指定したポイント数だけ正確に動かします。
swipe --from x,y --to x,yある位置から別の位置までスワイプします。
press <button>home、lock、volume_up、volume_down、mute、siri、back のいずれかのボタンを押します。
key <key>キーボードのキーを押します。--modifier command などで修飾キーも指定できます。
gesture <gesture>go_home、app_switcher、control_center、notification_center、spotlight のいずれかのジェスチャを行います。
rotate <orientation>portrait、landscape_left、landscape_right、portrait_upside_down のいずれかの向きに回転します。
hide-keyboard画面上のキーボードを隠します。
wait-for <text>テキストが画面に表示されるまで(--gone の場合は消えるまで)、最大 --timeout 秒待ちます。
alert accept|dismissアクセスの許可を求めるアラートなど、システムのアラートに応答します。--button を付けると、テキストで指定したボタンをタップします。

アプリ

コマンド内容
appsインストールされているアプリを一覧表示します(名前、バンドル ID、バージョン)。--user を付けると、自分でインストールしたアプリだけを表示します。
apps foreground前面にあるアプリとそのバンドル ID を表示します。
apps launch <app>バンドル ID か名前でアプリを起動します。テスト用に起動するときは、--language、--locale、--arg、--env を使います。
apps terminate <bundle-id>実行中のアプリを終了します。
apps install <path>.ipa、.app、.apk をインストールします。Device MCP Pro の機能です。
apps uninstall <bundle-id>アプリとそのデータを削除します。
apps container <bundle-id>開発用アプリのデータを、Xcode と同じく .xcappdata パッケージとしてダウンロードします。
open-url <url>Web ページかディープリンク(myapp://…)を開きます。
build-and-run <project>Xcode プロジェクトをビルドし、インストールして起動します。Device MCP Pro の機能です。Build & Run を参照してください。
crashesクラッシュレポートを新しい順に一覧表示します。--app でアプリを絞り込みます。
crashes show <path>クラッシュレポートを表示します。何がどこでクラッシュしたかがわかります。--app を付けると、そのアプリの最新のクラッシュを表示します。

デバイスの設定

コマンド内容
location set <latitude> <longitude>位置情報をシミュレートします。location clear で実際の位置に戻します。
appearance light|darkデバイスをライトモードかダークモードに切り替えます。
clipboard get、clipboard set <text>デバイスのクリップボードのテキストを読み取るか、置き換えます。

Device MCP

コマンド内容
statusDevice MCP が起動しているかどうか、そのバージョン、MCP サーバー、ライセンスを表示します。
app open、app quitDevice MCP をバックグラウンドで開くか、終了します。
mcpMCP サーバーがオンかどうかと、そのアドレスを表示します。mcp on と mcp off でオン/オフを切り替えます。
mcp setup claude|codexClaude Code または Codex に Device MCP を追加します。--print を付けると、追加する代わりにコマンドを表示します。
mcp configCursor など、ほかの MCP クライアントで使う JSON を表示します。
licenseライセンスを表示します。無料版か、プラン、キー、シート数、対象となるバージョンがわかります。
license activate <key>この Mac でライセンスキーを有効にします。
license revokeこの Mac でライセンスを無効にし、シートを解放します。
logsバグ報告用に、Device MCP のログを表示します。-f を付けると、新しい行を表示し続けます。

その他

コマンド内容
call <tool> [name=value…]Device MCP のどの MCP ツールも、AI エージェントと同じように実行できます。
toolsそれらのツールと引数を一覧表示します。

4. 使用例

サインインして結果を確認する

シェルスクリプトや CI のステップで使える、アプリのスモークテストです。

set -e
device-mcp-cli apps launch com.example.myapp --launch
device-mcp-cli wait-for "Sign In"
device-mcp-cli type "[email protected]" --field "Email"
device-mcp-cli type - --field "Password" < password.txt
device-mcp-cli tap --text "Sign In"
device-mcp-cli wait-for "Welcome" --timeout 20 || {
  device-mcp-cli screenshot -o failure.png
  exit 1
}

すべてのデバイスのスクリーンショットを撮る

device-mcp-cli devices --json |
  jq -r '.devices[] | select(.state == "ready" or .state == "running") | .udid' |
  while read -r udid; do device-mcp-cli screenshot --device "$udid" -o ~/Desktop/; done

画面上の要素をタップする

elements は画面の要素を ref 付きで一覧表示します。jq で目的の要素を見つけて、タップします。

REF=$(device-mcp-cli elements --json | jq -r '.elements[] | select(.label == "General") | .ref')
device-mcp-cli tap --ref "$REF"

ほかの言語と場所でアプリをテストする

device-mcp-cli apps launch com.example.myapp --language fr --locale fr_FR
device-mcp-cli location set 48.8584 2.2945
device-mcp-cli open-url "myapp://map"
device-mcp-cli appearance dark

新しいシミュレータでビルドして実行する

device-mcp-cli simulators start --model "iPhone 17 Pro" --launch
device-mcp-cli build-and-run ~/Projects/MyApp/MyApp.xcodeproj --scheme MyApp
device-mcp-cli screenshot -o ~/Desktop/myapp.png

バグを画面収録する

device-mcp-cli record start
# reproduce the bug on the device
device-mcp-cli record stop

Mac をセットアップする

CI 用の Mac や、新しく加わったチームメンバーの Mac で実行します。

device-mcp-cli license activate --launch < license-key.txt
device-mcp-cli mcp on
device-mcp-cli mcp setup claude
device-mcp-cli status

5. JSON と終了コード

--json を付けると、コマンドは JSON オブジェクトを 1 つ出力します。たとえば、device-mcp-cli devices --json の出力は次のとおりです。

{
  "devices" : [
    {
      "connection" : "USB",
      "current" : true,
      "kind" : "iphone",
      "mirroringStopped" : false,
      "model" : "iPhone 17 Pro",
      "name" : "My iPhone",
      "osVersion" : "27.0.1",
      "platform" : "iOS",
      "state" : "ready",
      "udid" : "00008150-000A1B2C3D4E5F60"
    }
  ]
}

デバイスの kind は iphone、ipad、watch、android、simulator、emulator のいずれかです。state は ready、locked、blocked(issue と fix に理由と対処法が入ります)、connecting、running、shut_down、booting、shutting_down、creating、starting のいずれかです。

エラーの場合は {"error": {"code": "…", "message": "…"}} を出力します。

コード終了コード意味
not_running69Device MCP が起動しておらず開かれなかったか、応答する前に終了しました。
no_answer69Device MCP は起動していますが、応答しませんでした。アップデートするか、いったん終了してからもう一度開いてください。
not_installed69Device MCP がインストールされていません。
invalid_arguments64引数が間違っているか、ライセンスキーの形式が正しくありません。
pro_required1このコマンドには Device MCP Pro が必要です。
not_approved1Device MCP であなたが拒否したか、誰も応答しませんでした。
timed_out1Device MCP が時間内に完了しませんでした。
cancelled1あなたが「いいえ」と答えました。
failed1その他のエラーです。理由はメッセージに示されます。

成功したコマンドは、終了コード 0 で終了します。

6. AI エージェントと使う

エージェントもコマンドラインを使えます。たとえば、アプリのテストスクリプトや CI のステップを書かせることができます。

  • 「iPhone でサインインして、ホーム画面が読み込まれなかったら失敗するスクリプトを書いて。」
  • 「オンボーディングのすべての画面のスクリーンショットを撮る CI ステップを追加して。」

エージェントが実行したコマンドは、Agent タブに device-mcp-cli として表示されます。エージェントのアクティビティを参照してください。