🚀 Claude Mobile
Claude Mobileは、モバイルおよびデスクトップアプリケーションの自動化を行うMCPサーバーです。Android(ADB経由)、iOSシミュレーター(simctl経由)、デスクトップ(Compose Multiplatform)、およびAurora OS(audb経由)に対応しています。Claude in Chromeのように、自然言語でモバイルデバイスやデスクトップアプリを制御することができます。
🚀 クイックスタート
Claudeを通じて、自然言語でAndroid端末、エミュレーター、iOSシミュレーター、デスクトップアプリケーション、またはAurora OSデバイスを制御することができます。
✨ 主な機能
- 統一API — Android、iOS、デスクトップ、およびAurora OSで同じコマンドが使用可能です。
- スマートスクリーンショット — 最適なLLM処理のために自動圧縮されます(超大サイズの画像はありません!)
- 注釈付きスクリーンショット — 色付きのバウンディングボックスと番号付きの要素ラベルが付いたスクリーンショットで、視覚的なUI理解が容易になります。
- パーミッション管理 — プログラムでアプリのパーミッションを付与、取り消し、リセットすることができます(Androidのランタイムパーミッション、iOSのプライバシーサービス)
- デバイスログ — フィルター付きでlogcat/システムログを読み取り、デバッグに役立てます。
- UIインタラクション — 座標または要素のテキストでタップ、長押し、スワイプが可能です。
- テキスト入力 — フォーカスされたフィールドにテキストを入力します。
- アプリ制御 — アプリを起動、停止、インストールすることができます。
- プラットフォーム選択 — Android、iOS、デスクトップ、またはAurora OSを明示的に指定することができます。
- デスクトップサポート — ウィンドウ管理、クリップボード、およびパフォーマンスメトリクスを使用して、Compose Multiplatformデスクトップアプリをテストすることができます。
📦 インストール
ワンライナー(任意のクライアント)
add-mcpを使用すると、インストールされたクライアントを自動検出します。
npx add-mcp claude-in-mobile -y
または、特定のクライアントをターゲットにすることもできます。
npx add-mcp claude-in-mobile -a claude-code -y
npx add-mcp claude-in-mobile -a opencode -y
npx add-mcp claude-in-mobile -a cursor -y
Claude Code CLI
claude mcp add --transport stdio mobile -- npx -y claude-in-mobile
グローバルに追加するには(すべてのプロジェクトで利用可能):
claude mcp add --scope user --transport stdio mobile -- npx -y claude-in-mobile
OpenCode
インタラクティブなセットアップを使用します。
opencode mcp add
または、opencode.json(プロジェクトルートまたは~/.config/opencode/opencode.json)に手動で追加します。
{
"mcp": {
"mobile": {
"type": "local",
"command": ["npx", "-y", "claude-in-mobile"],
"enabled": true
}
}
}
Cursor
.cursor/mcp.jsonに追加します。
{
"mcpServers": {
"mobile": {
"command": "npx",
"args": ["-y", "claude-in-mobile"]
}
}
}
任意のMCPクライアント
クライアント用の設定スニペットを出力します。
npx claude-in-mobile --init <client-name>
npmから
npx claude-in-mobile
ソースから
git clone https://github.com/AlexGladkov/claude-in-mobile.git
cd claude-in-mobile
npm install
npm run build:all
注意: デスクトップサポートを使用するには、npm run build:desktop(またはbuild:all)を実行して、デスクトップコンパニオンアプリをコンパイルする必要があります。
ソースからビルドしたものをMCPクライアントで使用する
ソースからビルドした後、npxを使用する代わりに、MCPクライアントをローカルのdist/index.jsに向けます。
{
"mcpServers": {
"mobile": {
"command": "node",
"args": ["/path/to/claude-in-mobile/dist/index.js"]
}
}
}
OpenCode(opencode.json)の場合:
{
"mcp": {
"mobile": {
"type": "local",
"command": ["node", "/path/to/claude-in-mobile/dist/index.js"],
"enabled": true
}
}
}
手動設定
Claude Codeの設定(~/.claude.jsonまたはプロジェクト設定)に追加します。
{
"mcpServers": {
"mobile": {
"command": "npx",
"args": ["-y", "claude-in-mobile"]
}
}
}
Windows
claude mcp add --transport stdio mobile -- cmd /c npx -y claude-in-mobile
📚 ドキュメント
必要条件
Android
- ADBがインストールされ、PATHに含まれていること
- 接続されたAndroidデバイス(USBデバッグが有効)またはエミュレーター
iOS
デスクトップ
- macOS(Windows/Linuxのサポートは予定されています)
- デスクトップコンパニオンをビルドするためのJDK 17以上
- テストするCompose Multiplatformデスクトップアプリケーション
Aurora OS
- audb CLIがインストールされ、PATHに含まれていること(
cargo install audb-client)
- SSHが有効になった接続されたAurora OSデバイス
- タップ/スワイプにはデバイス上にPythonが必要です:
devel-su pkcon install python
利用可能なツール
コアツール(すべてのプラットフォーム)
| ツール |
Android |
iOS |
デスクトップ |
Aurora |
説明 |
list_devices |
✅ |
✅ |
✅ |
✅ |
接続されているすべてのデバイスをリスト表示します。 |
set_device |
✅ |
✅ |
✅ |
✅ |
アクティブなデバイスを選択します。 |
screenshot |
✅ |
✅ |
✅ |
✅ |
スクリーンショットを撮ります。 |
tap |
✅ |
✅ |
✅ |
⚠️ |
座標またはテキスト/ラベルでタップします(iOS: 要素タップにはWDAが必要) |
long_press |
✅ |
✅ |
✅ |
✅ |
長押しジェスチャーを実行します。 |
swipe |
✅ |
✅ |
✅ |
⚠️ |
方向または座標でスワイプします(AuroraではPythonが必要) |
input_text |
✅ |
✅ |
✅ |
❌ |
テキストを入力します。 |
press_key |
✅ |
✅ |
✅ |
✅ |
ハードウェアボタンを押します。 |
launch_app |
✅ |
✅ |
❌ |
✅ |
アプリを起動します。 |
stop_app |
✅ |
✅ |
❌ |
✅ |
アプリを停止します。 |
install_app |
✅ |
✅ |
❌ |
✅ |
APK/.app/.rpmをインストールします。 |
list_apps |
❌ |
❌ |
❌ |
✅ |
インストールされているアプリをリスト表示します(Auroraのみ) |
get_ui |
✅ |
✅ |
✅ |
❌ |
UI階層を取得します(iOS: WebDriverAgentが必要) |
find_element |
✅ |
✅ |
✅ |
❌ |
テキスト/ID/ラベルで要素を検索します(iOS: WebDriverAgentが必要) |
annotate_screenshot |
✅ |
✅ |
❌ |
❌ |
色付きのバウンディングボックスと番号付きの要素ラベルが付いたスクリーンショットを撮ります。 |
grant_permission |
✅ |
✅ |
❌ |
❌ |
アプリのパーミッションを付与します(Android: ランタイム、iOS: プライバシーサービス) |
revoke_permission |
✅ |
✅ |
❌ |
❌ |
アプリのパーミッションを取り消します。 |
reset_permissions |
✅ |
✅ |
❌ |
❌ |
アプリのすべてのパーミッションをリセットします。 |
get_current_activity |
✅ |
❌ |
❌ |
❌ |
フォアグラウンドのアクティビティを取得します。 |
open_url |
✅ |
✅ |
❌ |
❌ |
ブラウザでURLを開きます(Auroraではまだ実装されていません) |
shell |
✅ |
✅ |
❌ |
✅ |
シェルコマンドを実行します。 |
wait |
✅ |
✅ |
✅ |
✅ |
指定された時間待機します。 |
get_logs |
✅ |
✅ |
❌ |
✅ |
デバイスのログ(logcat/システムログ)を取得します。 |
clear_logs |
✅ |
⚠️ |
❌ |
✅ |
ログバッファをクリアします。 |
get_system_info |
✅ |
❌ |
❌ |
✅ |
バッテリー、メモリ情報を取得します。 |
wait_for_element |
✅ |
✅ |
❌ |
❌ |
要素が表示されるまで待機します(ポーリング + タイムアウト) |
assert_visible |
✅ |
✅ |
❌ |
❌ |
要素が表示されていることをアサートします(合格/不合格) |
assert_not_exists |
✅ |
✅ |
❌ |
❌ |
要素が存在しないことをアサートします(合格/不合格) |
batch_commands |
✅ |
✅ |
✅ |
✅ |
複数のコマンドを1回の往復で実行します。 |
get_webview |
✅ |
❌ |
❌ |
❌ |
Chrome DevTools Protocolを介してWebViewを検査します。 |
push_file |
❌ |
❌ |
❌ |
✅ |
ファイルをアップロードします(Auroraのみ) |
pull_file |
❌ |
❌ |
❌ |
✅ |
ファイルをダウンロードします(Auroraのみ) |
デスクトップ固有のツール
| ツール |
説明 |
set_target |
ターゲットプラットフォーム(android/ios/desktop)を設定します。 |
get_target |
現在のターゲットプラットフォームを取得します。 |
launch_desktop_app |
Compose Desktopアプリケーションを起動します。 |
stop_desktop_app |
実行中のデスクトップアプリケーションを停止します。 |
get_window_info |
デスクトップウィンドウの位置とサイズを取得します。 |
focus_window |
デスクトップウィンドウを前面に表示します。 |
resize_window |
デスクトップウィンドウのサイズを変更します。 |
get_clipboard |
システムクリップボードの内容を取得します。 |
set_clipboard |
システムクリップボードの内容を設定します。 |
get_performance_metrics |
デスクトップアプリのCPU/メモリ使用量を取得します。 |
詳細なデスクトップAPIドキュメントについては、Desktop Specificationを参照してください。
💻 使用例
Claudeに自然に話しかけるだけです。
"Show me all connected devices"
"Take a screenshot of the Android emulator"
"Take a screenshot on iOS"
"Tap on Settings"
"Swipe down to scroll"
"Type 'hello world' in the search field"
"Press the back button on Android"
"Open Safari on iOS"
"Switch to iOS simulator"
"Run the app on both platforms"
パーミッション管理
"Grant camera permission to com.example.app on Android"
"Revoke location access from com.example.app"
"Reset all permissions for com.apple.Maps on iOS"
注釈付きスクリーンショット
"Take an annotated screenshot" → 緑色(クリック可能)と赤色(クリック不可)のバウンディングボックス + 番号付きの要素インデックスが付いたスクリーンショット
プラットフォーム選択
プラットフォームを明示的に指定することができます。
"Screenshot on android" → Androidデバイスを使用します。
"Screenshot on ios" → iOSシミュレーターを使用します。
"Screenshot on desktop" → デスクトップアプリを使用します。
"Screenshot on aurora" → Aurora OSデバイスを使用します。
"Screenshot" → 最後にアクティブなデバイスを使用します。
または、アクティブなデバイスを設定することもできます。
"Use the iPhone 15 simulator"
"Switch to the Android emulator"
"Switch to desktop"
"Switch to Aurora device"
デスクトップの使用例
"Launch my desktop app from /path/to/app"
"Take a screenshot of the desktop app"
"Get window info"
"Resize window to 1280x720"
"Tap at coordinates 100, 200"
"Get clipboard content"
"Set clipboard to 'test text'"
"Get performance metrics"
"Stop the desktop app"
Auroraの使用例
"List all Aurora devices"
"Take a screenshot on Aurora"
"Tap at coordinates 100, 200 on Aurora"
"Launch ru.example.app on Aurora"
"List installed apps on Aurora device"
"Get logs from Aurora device"
"Push file.txt to /home/defaultuser/ on Aurora device"
ネイティブCLI
2 MBのネイティブRustバイナリで、すべてのコマンドが同じです。Node.jsや依存関係は必要ありません。
CLIのインストール
brew tap AlexGladkov/claude-in-mobile
brew install claude-in-mobile
または、Releasesからダウンロードします。
MCPと比較した利点
- 簡単なインストール —
brew installまたは2 MBの単一バイナリをコピーするだけです。
- 依存関係なし — Node.js、npmなど何も必要ありません。
- ターミナルから使用 — コマンドを直接実行でき、Claude CodeやMCPクライアントは必要ありません。
- テスト自動化 — プラットフォームの内部構造を学ぶことなく、任意のプラットフォーム用の汎用
.shスクリプトを作成できます。
- トークン効率 — スキルドキュメントは使用時にのみ読み込まれます。MCPはすべてのツールスキーマをすべてのリクエストに読み込むため、セッション中にすぐにトークンが消費されます。
- 高速 — ~5msのコマンド起動時間(Rust)対~500ms(Node.js MCP)
- CI/CD対応 — 終了コード、stdout/stderrがあり、どこでも実行できます。
テストスクリプトの例
#!/bin/bash
claude-in-mobile launch android com.example.app
claude-in-mobile wait 2000
claude-in-mobile tap android 0 0 --text "Login"
claude-in-mobile input android "test@example.com"
claude-in-mobile screenshot android -o result.png
claude-in-mobile ui-dump android | grep "Welcome" && echo "PASS" || echo "FAIL"
Claude Codeプラグイン
claude plugin marketplace add AlexGladkov/claude-in-mobile
claude plugin install claude-in-mobile@claude-in-mobile
インストール後、Claude Codeは自然言語でデバイスを制御します。スキルは必要なときにのみコンテキストに読み込まれるため、使用していないときはトークンのオーバーヘッドがありません。
完全なCLIドキュメントについては、cli/README.mdを参照してください。
iOS WebDriverAgentのセットアップ
完全なiOS UI検査と要素ベースのインタラクションには、WebDriverAgentが必要です。これにより、以下の機能が有効になります。
get_ui - JSONアクセシビリティツリーの検査
tapでlabelまたはtextパラメータを使用 - 要素ベースのタップ
find_element - 要素の検出とクエリ
swipe - 改善されたジェスチャーシミュレーション
インストール
自動(Appium経由):
npm install -g appium
appium driver install xcuitest
手動:
WDA_PATH環境変数をWebDriverAgentの場所に設定します。
export WDA_PATH=/path/to/WebDriverAgent
初回使用時
初回使用時に、WebDriverAgentは自動的に以下の手順でセットアップされます。
- Appiumのインストールまたは
WDA_PATHから検出されます。
- xcodebuildでビルドされます(一度だけ、約2分)
- iOSシミュレーター上で起動されます。
- ポート8100以上でHTTP経由で接続されます。
トラブルシューティング
ビルドが失敗した場合:
xcode-select --install
sudo xcodebuild -license accept
sudo xcode-select -s /Applications/Xcode.app
セッションが失敗した場合:
- シミュレーターが起動していることを確認します:
xcrun simctl list | grep Booted
- ポートの可用性を確認します:
lsof -i :8100
- シミュレーターを再起動してみます。
手動テスト:
cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
xcodebuild test -project WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-destination 'platform=iOS Simulator,id=<DEVICE_UDID>'
🔧 技術詳細
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude Code │────▶│ │────▶│ Android (ADB) │
├─────────────┤ │ Claude Mobile │ └─────────────────┘
│ OpenCode │────▶│ MCP Server │ ┌─────────────────┐
├─────────────┤ │ │────▶│ iOS (simctl+WDA)│
│ Cursor │────▶│ (auto-detects │ └─────────────────┘
├─────────────┤ │ client via │ ┌─────────────────┐
│ Any MCP │────▶│ MCP protocol) │────▶│ Desktop (Compose)│
│ Client │ │ │ └─────────────────┘
└─────────────┘ │ │ ┌─────────────────┐
│ │────▶│ Aurora (audb) │
└──────────────────┘ └─────────────────┘
- ClaudeはMCPプロトコルを通じてコマンドを送信します。
- サーバーは適切なプラットフォーム(ADB、simctl+WDA、デスクトップコンパニオン、またはaudb)にルーティングします。
- コマンドはデバイスまたはデスクトップアプリ上で実行されます。
- 結果(スクリーンショット、UIデータ、メトリクス)はClaudeに返されます。
📄 ライセンス
MIT