/ ディレクトリ / プレイグラウンド / XcodeBuild
● 公式 getsentry ⚡ 即起動

XcodeBuild

作者 getsentry · getsentry/XcodeBuildMCP

iOS/macOS AI コーディングのループを完成させます — ビルド、テスト、シミュレーター実行、ログ・スクリーンショット取得をすべてチャットから実行できます。

XcodeBuildMCP(Sentry 提供、ex-getsentry org メンバー Cameron 作)は xcodebuild、xcrun simctl、シミュレーター実行時をラップしています。エージェントがプロジェクトをコンパイル、テスト実行、シミュレーターをブート、アプリをインストール・操作、ログ・スクリーンショットを読み込めます — これは AI が作成した iOS コードの不足していたフィードバックループです。

なぜ使うのか

主な機能

ライブデモ

実際の動作

xcodebuild.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "xcodebuild",
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "xcodebuild": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "xcodebuildmcp@latest"
        ]
      }
    }
  }
}

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

claude mcp add xcodebuild -- npx -y xcodebuildmcp@latest

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

ユースケース

実用的な使い方: XcodeBuild

AI が生成した iOS コードが実際にビルド・シミュレーター実行できることを検証します

👤 Claude でフィーチャー開発・SwiftUI プロトタイピングを行う iOS 開発者 ⏱ ~15 min intermediate

使うタイミング: Claude が SwiftUI ビューを作成・編集した直後です。『完了』と言う前に、コンパイル・シミュレーター実行・スクリーンショットを取りたいときに使用します。

前提条件
  • Xcode がインストールされていること — Mac App Store から Xcode 15 以上をインストール;xcodebuild -version で確認してください
  • 起動可能なシミュレーターがあること — Xcode → Settings → Platforms → iOS Simulator をダウンロード
フロー
  1. プロジェクトを検出・ビルドします
    /Users/me/Projects/MyApp の Xcode プロジェクトを見つけて、スキーム 'MyApp' を iOS Simulator ディスティネーション 'iPhone 16' 向けにビルドしてください。エラー・警告があれば報告してください。✓ コピーしました
    → ビルド成功、または file:line のエラーが表示される
  2. シミュレーターをブート、インストール、起動します
    iPhone 16 シミュレーターがまだブートされていなければブートしてください。ビルドされたアプリをインストール・起動して、3 秒後にスクリーンショットを取ってください。✓ コピーしました
    → アプリが実行中;スクリーンショットが取得される
  3. フィーチャーを操作します
    'Sign Up' ボタンをタップ、メールフィールドに '[email protected]' を入力、Submit をタップしてください。各ステップ後にスクリーンショットを取ってください。✓ コピーしました
    → フローを示すスクリーンショットシーケンス、またはタップ失敗のはっきりしたエラーが表示される

結果: フィーチャーが動作することを証明するビフォー・アフタースクリーンショット。コードと一緒にコミットされます。

注意点
  • 座標によるタップはデバイスサイズ間で脆弱です — MCP が対応していれば、アクセシビリティラベルベースのタップを優先してください。座標はフォールバックとしてのみ使用します。
  • シミュレータービルドは実機と異なるアーキテクチャを使用します — アーキテクチャに敏感なコードについては、マージ前に少なくとも一度は実機用にビルドしてください。
組み合わせ: filesystem · github

チャットから Xcode ユニット・UI テストを実行して障害を分類します

👤 Xcode に切り替えずに高速なテストフィードバックを望む iOS 開発者 ⏱ ~10 min beginner

使うタイミング: 変更を加えて、⌘U 相当を実行したい、Claude に障害を解析させたいとき

フロー
  1. テストを実行します
    スキーム 'MyApp' の全テストを 'iPhone 16' ディスティネーション上で実行してください。ファイル、行番号、期待値付きの失敗を表示してください。✓ コピーしました
    → パスカウント、および位置情報付きの失敗リスト
  2. 1 つの失敗に焦点を当てます
    最初の失敗について、ソースファイルを読んで、テストが間違っているのかコードが間違っているのか教えてください。具体的に。✓ コピーしました
    → はっきりとした診断。『どちらかもあり得る』ではなく
  3. 修正して再実行します
    修正を適用してください。失敗テストのみを再実行してグリーンを確認してください。✓ コピーしました
    → グリーンな再実行

結果: 全スイート再実行ではなく、フォーカスされた再実行でテストがグリーンに戻ります。

注意点
  • xcodebuild test はコールドキャッシュで遅い-only-testing: フラグを使って範囲を絞ってください。MCP はこれを test-by-identifier で公開しています。
組み合わせ: github

不可解な Xcode ビルドエラーを診断します

👤 『リンカーエラー・フレームワーク欠落・署名』の壁にぶつかった iOS 開発者 ⏱ ~20 min intermediate

使うタイミング: xcodebuild が失敗し、エラー出力が 4000 行のノイズのとき

フロー
  1. ビルドして生のエラーを取得します
    スキーム 'MyApp' をビルドして、'error:' または 'warning:' を含む行のみを返してください。各行の周辺 3 行を含みます。✓ コピーしました
    → ノイズのないフォーカスされたエラーリスト
  2. 最初のエラーを説明します
    最初のエラーを人間言葉で説明してください。Xcode が実際に何に不満を言っているのか、トップ 3 の原因は何か?✓ コピーしました
    → 考えられる原因を含む平易な説明
  3. 修正を適用して再ビルドします
    最も可能性の高い修正を適用してください(必要に応じて Info.plist・entitlements・Package.swift を確認)、再ビルド、エラーが消えたことを確認してください。✓ コピーしました
    → クリーンビルド

結果: 2 時間の Stack Overflow ウサギの穴なしにビルド壁から解放されます。

注意点
  • 一部のエラーは DerivedData の古さが原因です — すべてが失敗したとき:MCP の clean ツールで DerivedData をクリーンにして、再ビルドしてください。
組み合わせ: filesystem

シミュレーター上のアプリクラッシュを取得して根本原因を見つけます

👤 再現可能なクラッシュを探している iOS 開発者 ⏱ ~20 min advanced

使うタイミング: アプリがシミュレーター上の特定フローでクラッシュして、Claude にクラッシュログを読ませたいとき

フロー
  1. ログ取得で再現します
    iPhone 16 シミュレーター上で MyApp を起動してください。ログ取得を開始します。このフローを実行:Settings を開く、'Clear Cache' をタップ。アプリが落ちたらログ取得を停止してください。✓ コピーしました
    → クラッシュが再現される、ログが保存される
  2. クラッシュを解析します
    取得ログからクラッシュを見つけてください。必要に応じてシンボリケートしてください。失敗スレッド、トップ 5 スタックフレーム、コード内の可能性の高い行を教えてください。✓ コピーしました
    → 特定のソースファイルを指すシンボリケートされたスタックトレース
  3. 修正を提案します
    スタックトレースと周辺コードに基づいて、修正するための最小限の変更は何ですか?適用してください。✓ コピーしました
    → 大規模なリファクターではなく、ターゲットされた修正

結果: PR に貼り付けられるシンボリケートされた証拠付きの修正されたクラッシュ。

注意点
  • Release コンフィグのクラッシュは dSYM なしではシンボリケートできません — 再現に Debug コンフィグを使用します。修正を確認するために Release を別途テストしてください。
組み合わせ: sentry · github

組み合わせ

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

xcodebuild + filesystem

Swift 編集 → ビルド → スクリーンショット → イテレーション、すべて 1 つのチャットで

ContentView.swift を編集してダークモードトグルを追加します。MyApp を iPhone 16 向けにビルドして実行、ライト・ダークモード両方でスクリーンショットを取ってください。✓ コピーしました
xcodebuild + github

問題を修正、シミュレーターで検証、スクリーンショット付き PR をオープン

Issue #42 はログインボタンが横向きで配置がずれていると言っています。iPad シミュレーターで再現、SwiftUI レイアウトを修正、ビフォー・アフタースクリーンショットを PR に添付してください。✓ コピーしました
xcodebuild + sentry

Sentry が報告したクラッシュをシミュレーターで同じ条件で再現

Sentry クラッシュ iOS-113 は iOS 18.1 でユーザーロケール fr-FR で発生しました。マッチするシミュレーターをブート、再現、修正してください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
discover_projects directory: str リポジトリでビルド対象を見つけてパス入力をスキップします free
build_project project: str, scheme: str, destination: str, configuration?: 'Debug'|'Release' .xcodeproj または .xcworkspace をディスティネーション向けにビルドします free
build_spm_package path: str Swift Package をビルドします(.xcodeproj なし) free
test_project project, scheme, destination, only_testing?: str[] テストスイートを実行します;only_testing で範囲を絞ります free
list_simulators none 存在するシミュレーターと起動中のシミュレーターを確認します free
boot_simulator simulator_id or name: str アプリをインストール前にシミュレーターを起動します free
install_app simulator_id: str, app_path: str 起動中のシミュレーターに作成された .app をインストールします free
launch_app simulator_id: str, bundle_id: str インストールされたアプリを起動します free
tap_at / type_text / send_url simulator params UI を操作します free
screenshot simulator_id: str, path?: str ビジュアル状態を取得します free
start_log_capture / stop_log_capture simulator_id セッションのコンソール・システムログを取得します free
clean project, scheme? ビルドがおかしくなったときにそのプロジェクトの DerivedData を削除します free

コストと制限

運用コスト

APIクォータ
なし — すべて xcodebuild/simctl 経由でローカル実行
呼び出しあたりのトークン
ビルドログが膨大になる場合があります。ログダンプ全体ではなく、エラー・警告のフィルタリングを優先してください。
金額
無料(Xcode を備えた Mac が必要で、これ自体がコストです)
ヒント
デフォルトではクリーンビルドではなくインクリメンタルビルドを実行します。DerivedData がおかしくなったときのみクリーンします。

セキュリティ

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

認証情報の保管: MCP レイヤーに認証情報なし。コード署名認証情報は通常通り Mac の Keychain にあります。
データ送信先: MCP からなし。xcodebuild は通常のソースから依存関係(SPM、CocoaPods)を取得する場合があります。
絶対に付与しない: エージェントが確認なしにコード署名 ID またはプロビジョニングプロファイルを変更させないでください

トラブルシューティング

よくあるエラーと対処法

xcodebuild: コマンドが見つかりません

Xcode コマンドラインツールが欠落または選択されていません。xcode-select --install を実行してから sudo xcode-select -s /Applications/Xcode.app/Contents/Developer を実行してください。

確認: xcodebuild -version
ディスティネーション 'iPhone 16' がありません

その名前のシミュレーターがアクティブな Xcode にダウンロードされていません。Xcode → Settings → Platforms → iOS ランタイムをダウンロード。または list_simulators を使って既存のものを選択します。

確認: xcrun simctl list devices
ビルド成功だがアプリが起動しません — 'NSException'

起動直前に start_log_capture 経由でアプリログを確認します。多くの場合、Info.plist キー欠落またはエンタイトルメント不一致。

SwiftUI プレビューでテストがハングします

SwiftUI プレビューは稀に xcodebuild test をデッドロックさせます。テストスキームのプレビューヘルパーを無効化するか、-disable-concurrent-testing で実行してください。

代替案

XcodeBuild 他との比較

代替案代わりに使う場面トレードオフ
xcodebuild を実行するダイレクトシェル MCP最大の柔軟性が必要で、ロースケル MCP のセキュリティトレードオフを受け入れるエルゴノミクスなし;Claude がすべての xcodebuild フラグを知る必要があります
JetBrains MCP(AppCode は EOL)JetBrains IDE を使用中。もう iOS には適用されません今日は iOS 代替案ではありません
Fastlane(shell 経由)署名付きビルドと TestFlight アップロードが必要で、シミュレーター検証だけではないはるかに重い;インナーループ開発の範囲外

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

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