/ ディレクトリ / プレイグラウンド / iOS Simulator MCP
● コミュニティ joshuayoes ⚡ 即起動

iOS Simulator MCP

作者 joshuayoes · joshuayoes/ios-simulator-mcp

ClaudeからXcrun simctl+idbを操作 — シミュレーターの起動、.appのインストール、タップ・入力・スクリーンショット・録画、Xcodeを切り替えることなく実行。

iOS Simulator MCPは、Appleの xcrun simctl とFacebookの idb をラップし、ClaudeがiOSシミュレーターを操作できるようにします。UIテストのループ、バグの再現、App Store申請のスクリーンショット/動画キャプチャなど、XcodeとチャットをいちいちオルタネートするのがTediousな作業にぴったりです。

なぜ使うのか

主な機能

ライブデモ

実際の動作

ios-simulator-mcp.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: iOS Simulator MCP

各デバイス向けのApp Storeスクリーンショットを生成する

👤 リリース準備中のiOS開発者 ⏱ ~25 min intermediate

使うタイミング: 6.5"・6.7"・iPad向けのライト+ダークのスクリーンショットが素早く必要な場合。

前提条件
  • Xcode+simctl — 標準のXcodeインストール
  • idbのインストールbrew tap facebook/fb && brew install idb-companion
  • .appバンドルのビルドxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
フロー
  1. デバイスをセットアップ
    Boot iPhone 15 Pro Max and iPad Pro 13-inch sims. List them when ready.✓ コピーしました
    → list_simulatorsで両方がBootedと表示される
  2. ステータスバーを設定
    Set status bar to 9:41, full battery, full signal on both. App Store style.✓ コピーしました
    → status_bar_setが成功;クリーンな見た目
  3. インストール&スクリーンショット
    Install MyApp.app on both. Launch, navigate Home → Profile → Settings, screenshot each in light and dark mode. Save under /screenshots/<device>/<mode>/.✓ コピーしました
    → デバイスごとのフォルダ、各画面のライト+ダークバリアント

結果: 手動キャプチャなしに約10分でApp Storeスクリーンショットパック完成。

注意点
  • シミュレーターが起動するがアプリがクラッシュする — simctlのログを取得;entitlementsが不足していないか確認
  • Dynamic Islandのコンテンツがステータスバーの調整を覆う — Pro Maxでもstatus_bar_setはDynamic Islandの下に適用される
組み合わせ: filesystem

UIバグのクリーンな再現動画をキャプチャする

👤 iOS開発者/QA ⏱ ~10 min beginner

使うタイミング: シミュレーターでのみバグが再現する;チケット用の動画が欲しい場合。

フロー
  1. 録画を開始
    Boot iPhone 15. Install build.app. Start screen recording.✓ コピーしました
    → record_video_startがrecording idを返す
  2. 再現
    Open the app. Tap Profile, then the Edit pencil. Type 'Test' in the name field. Tap Save. Wait 2 seconds.✓ コピーしました
    → シーケンスが実行される;再現するとバグが確認できる
  3. 録画を停止して添付
    Stop recording, save as bug-1234.mov in /tickets/.✓ コピーしました
    → MOVが保存される

結果: チケットに添付可能な再現動画が完成。

注意点
  • レイアウトが期待と異なりタップが外れる — まずdescribe_uiを使って現在のフレームを確認する
組み合わせ: filesystem · github

リビルドのたびにスモークテストループを実行する

👤 ビルド/テストサイクルを反復しているiOS開発者 ⏱ ~15 min intermediate

使うタイミング: 画面を反復しており、リビルドのたびに30秒のスモークテストを実行したい場合。

フロー
  1. リビルド+再インストール
    Run xcodebuild for scheme MyApp Debug, then reinstall on the booted sim.✓ コピーしました
    → 新しいバンドルでインストール成功
  2. スモークパスを実行
    Open app, sign in with test account, navigate to the screen I'm working on, screenshot.✓ コピーしました
    → スクリーンショットが正しく表示される;ログにクラッシュなし

結果: 手動タップなしに高速なビルド/テストサイクル。

注意点
  • サインインフローにCAPTCHAがある — CAPTCHAをバイパスするビルドを使うか、認証フローをスタブする

組み合わせ

他のMCPと組み合わせて10倍の力を

ios-simulator-mcp + filesystem

リポジトリにスクリーンショットを保存する

Capture screenshots for all main screens, save to /design/screenshots/.✓ コピーしました
ios-simulator-mcp + github

再現動画付きのバグIssueを作成する

Record the bug, then file a GitHub issue attaching the MOV and reproducer steps.✓ コピーしました
ios-simulator-mcp + xcodebuildmcp

ビルドして即スモークテストを実行する

XcodeBuild: build Debug. Sim: install + launch + screenshot.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_simulators (none) 最初のステップ free
boot_simulator device_id: str シミュレーターの起動 free
install_app device_id, path: str (.app) ビルドをプッシュ free
launch_app device_id, bundle_id: str アプリを開く free
tap device_id, x, y 座標をタップ free
type_text device_id, text: str テキストを入力 free
screenshot device_id, path? 状態をキャプチャ free
record_video_start device_id, path: str 動画開始 free
record_video_stop recording_id 動画終了 free
describe_ui device_id タップ座標を確認 free
status_bar_set device_id, time, battery, signal App Store向けのクリーンなスクリーンショット free

コストと制限

運用コスト

APIクォータ
なし — ローカル
呼び出しあたりのトークン
100〜800;スクリーンショットはパス参照であり埋め込みではない
金額
OSS無料
ヒント
describe_uiを使ってタップ座標を1回確認し、繰り返し推測しないこと

セキュリティ

権限、シークレット、影響範囲

最小スコープ: execute simctl + idb
認証情報の保管: なし — ただしシミュレーター内のアプリデータはあなたのもの
データ送信先: ローカルのみ
絶対に付与しない: root / kernel access

トラブルシューティング

よくあるエラーと対処法

idb not found

brew tap facebook/fb && brew install idb-companion; また pip install fb-idb

確認: idb list-targets
Tap doesn't land

describe_uiを使用;座標はデバイスサイズによって異なる;要素がsheetの中にある可能性

Sim booted but stays black

シミュレーターをシャットダウン+リセット;Xcodeのruntimeの再ダウンロードが必要な場合あり

Recording corrupts

simctl io recordVideo を直接使用;macOSのスリープ時にidbのラッパーが失敗することがある

代替案

iOS Simulator MCP 他との比較

代替案代わりに使う場面トレードオフ
XcodeBuildMCP (Sentry)ビルド+シミュレーターを1つのMCPにまとめたい場合より重い;スコープが広い
Maestro完全なUIテストDSLが欲しい場合デフォルトではLLM駆動ではない
Xcode Cloud / Fastlane本番CI異なる層;インタラクティブではない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る