コマンドライン
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 のリストからデバイスを削除します。 |
simulators | iOS と 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
| コマンド | 内容 |
|---|---|
status | Device MCP が起動しているかどうか、そのバージョン、MCP サーバー、ライセンスを表示します。 |
app open、app quit | Device MCP をバックグラウンドで開くか、終了します。 |
mcp | MCP サーバーがオンかどうかと、そのアドレスを表示します。mcp on と mcp off でオン/オフを切り替えます。 |
mcp setup claude|codex | Claude Code または Codex に Device MCP を追加します。--print を付けると、追加する代わりにコマンドを表示します。 |
mcp config | Cursor など、ほかの 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_running | 69 | Device MCP が起動しておらず開かれなかったか、応答する前に終了しました。 |
no_answer | 69 | Device MCP は起動していますが、応答しませんでした。アップデートするか、いったん終了してからもう一度開いてください。 |
not_installed | 69 | Device MCP がインストールされていません。 |
invalid_arguments | 64 | 引数が間違っているか、ライセンスキーの形式が正しくありません。 |
pro_required | 1 | このコマンドには Device MCP Pro が必要です。 |
not_approved | 1 | Device MCP であなたが拒否したか、誰も応答しませんでした。 |
timed_out | 1 | Device MCP が時間内に完了しませんでした。 |
cancelled | 1 | あなたが「いいえ」と答えました。 |
failed | 1 | その他のエラーです。理由はメッセージに示されます。 |
成功したコマンドは、終了コード 0 で終了します。
6. AI エージェントと使う
エージェントもコマンドラインを使えます。たとえば、アプリのテストスクリプトや CI のステップを書かせることができます。
- 「iPhone でサインインして、ホーム画面が読み込まれなかったら失敗するスクリプトを書いて。」
- 「オンボーディングのすべての画面のスクリーンショットを撮る CI ステップを追加して。」
エージェントが実行したコマンドは、Agent タブに device-mcp-cli として表示されます。エージェントのアクティビティを参照してください。