mcpField
A
axiom-xcode-mcp-tools

axiom-xcode-mcp-tools

github.com/charleswiltgen開発1.2k113 回インストール今日更新
リポジトリ

axiom-xcode-mcp-tools について

Xcode MCP ツールを使う開発者向けのワークフローガイドです。ビルドやテストの反復修正、SwiftUI プレビューの確認、問題の分類、プロジェクト内のファイル操作を扱います。

主な機能

  1. 01ビルドと修正の反復ループ
  2. 02失敗テストに絞ったワークフロー
  3. 03SwiftUI プレビューの描画と確認
  4. 04Issue Navigator による問題分類
  5. 05MCP 経由の Apple ドキュメント検索

活用シーン

  1. 01ビルド診断を基にコンパイルエラーを修正
  2. 02失敗テストを反復し、最後に全テストを実行
  3. 03SwiftUI のレイアウトやダークモードを確認
  4. 04プロジェクトのファイル検索と対象を絞った編集

MCP 対応

Xcode MCP ツールを使うワークフローを整理し、最初にウィンドウ一覧を取得して適切な tabIdentifier を使うよう案内します。ビルド、テスト、プレビュー、ドキュメント検索、ファイル操作のツールを扱います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/charleswiltgen/axiom --skill axiom-xcode-mcp-tools

インストール後、Claude Code で/axiom-xcode-mcp-toolsを入力して読み込まれたか確認します。

詳細

Xcode MCP ツールのワークフロー

基本原則:Xcode MCP を使うと、IDE にプログラムからアクセスできます。個別にツールを呼び出すのではなく、ワークフローのループを活用してください。

ウィンドウの指定(基盤として重要)

ほとんどのツールでは tabIdentifier が必要です。必ず最初に XcodeListWindows を呼び出してください。

1. XcodeListWindows → list of (tabIdentifier, workspacePath) pairs
2. Match workspacePath to your project
3. Use that tabIdentifier for all subsequent tool calls

セッション中はマッピングをキャッシュしてください。再取得が必要なのは次の場合のみです。

  • ツール呼び出しが無効なタブ識別子で失敗した
  • Xcode のウィンドウを開いた、または閉じた
  • プロジェクトを切り替えた

XcodeListWindows の結果が空の場合:Xcode でプロジェクトが開かれていません。ユーザーにプロジェクトを開くよう依頼してください。

ワークフロー:BuildFix ループ

プロジェクトがコンパイルできるまで、ビルド、診断、修正を繰り返します。

1. BuildProject(tabIdentifier)
2. Check buildResult — if success, done
3. GetBuildLog(tabIdentifier) → parse errors
4. XcodeListNavigatorIssues(tabIdentifier) → canonical diagnostics
5. XcodeUpdate(file, fix) for each diagnostic
6. Go to step 1 (max 5 iterations)
7. If same error persists after 3 attempts → fall back to axiom-xcode-debugging

ビルドログの解析より XcodeListNavigatorIssues を使う理由:Issue Navigator では、重複が除かれた構造化診断を確認できます。ビルドログには、ノイズを含むコンパイラーの生の出力が記録されています。

axiom-xcode-debugging に切り替えるタイミング:エラーがコードレベルの問題ではなく、ゾンビプロセス、古い Derived Data、シミュレーターの問題など、環境に起因する場合です。MCP ツールはコードを操作しますが、環境の問題には CLI による診断が必要です。

ワークフロー:TestFix ループ

失敗したテストをすばやく繰り返し実行します。

1. GetTestList(tabIdentifier) → discover available tests
2. RunSomeTests(tabIdentifier, [specific failing tests]) for fast iteration
3. Parse failures → identify code to fix
4. XcodeUpdate(file, fix) to patch code
5. Go to step 2 (max 5 iterations per test)
6. RunAllTests(tabIdentifier) as final verification

最初に RunSomeTests を使う理由:単一のテストは数秒で実行できますが、すべてのテストを実行すると数分かかります。失敗したテストを繰り返し実行して修正し、成功したらテストスイート全体を一度実行して確認してください。

テスト結果の解析:応答の testResult フィールドを確認してください。失敗したテストには、ファイルパスと行番号を含む失敗メッセージが記載されます。

ワークフロー:PreviewVerify

SwiftUI プレビューをレンダリングし、UI の変更を視覚的に確認します。

1. RenderPreview(tabIdentifier, sourceFilePath, previewDefinitionIndexInFile: 0) → image artifact
2. Review the rendered image for correctness
3. If making changes: XcodeUpdate → RenderPreview again
4. Compare before/after for regressions

使用例:レイアウトの変更を検証する、ダークモードでの表示を確認する、Liquid Glass の効果が正しくレンダリングされることを確認する。

ワークフロー:IssueTriage

Xcode の Issue Navigator を標準の診断情報源として使用します。

1. XcodeListNavigatorIssues(tabIdentifier) → all current issues
2. For specific files: XcodeRefreshCodeIssuesInFile(tabIdentifier, file)
3. Prioritize: errors > warnings > notes
4. Fix errors first, rebuild, re-check

エラーの grep 検索よりこれを使う理由:Issue Navigator では、型チェックエラー、インポートの不足、制約の問題など、Xcode のコンパラーフロントエンドでのみ検出できるものも含め、リアルタイムの診断情報を確認できます。

ワークフロー:DocumentationSearch

MCP 経由で Apple のドキュメントコーパスを検索します。

1. DocumentationSearch(query) → documentation results
2. Cross-reference with axiom-apple-docs for bundled Xcode guides

注:DocumentationSearch は、Apple のオンラインドキュメントと WWDC のトランスクリプトを検索します。Xcode に同梱されている LLM 向けガイド 20 件を検索するには、代わりに axiom-apple-docs を使用してください。

MCP によるファイル操作

読み取りと書き込み
操作ツール備考
ファイルの内容を読み取るXcodeReadXcode のプロジェクトビューを参照します(生成されたファイル、解決済みのパッケージを含む)
新しいファイルを作成するXcodeWriteファイルを作成し、プロジェクト構造に自動で追加します
既存のファイルを編集するXcodeUpdatestr_replace 形式のパッチを適用します。ファイル全体を書き換えるより安全です
ファイルを検索するXcodeGlobプロジェクト内でパターンに一致するファイルを検索します
ファイルの内容を検索するXcodeGrep行番号付きで内容を検索します
ディレクトリを一覧表示するXcodeLSディレクトリの一覧を表示します
ディレクトリを作成するXcodeMakeDirディレクトリを作成します
破壊的な操作(確認が必要)
操作ツールリスク
ファイル/ディレクトリを削除するXcodeRMデフォルトではゴミ箱に移動します(deleteFiles: true)。ユーザーに確認してください
ファイルを移動/名前変更するXcodeMVインポートや参照が壊れる可能性があります

XcodeRM または XcodeMV を呼び出す前に、破壊的な操作について必ずユーザーに確認してください。

MCP ファイルツールと標準ツールの使い分け
状況MCP を使用標準ツール(Read/Write/Grep)を使用
Xcode のプロジェクトビュー内のファイルはい。生成/解決済みのファイルを含みます生成されたファイルを見落とす可能性があります
プロジェクト外のファイルいいえはい。標準ツールはどこでも使えます
ビルドコンテキストが必要(編集後の診断)はい。1 つのワークフローで編集と再ビルドを行えますビルドとの連携はありません
簡単なファイルの読み取り/編集どちらでも可能ですやや高速です(MCP のオーバーヘッドがありません)

コードスニペット

Swift コードの実行
ExecuteSnippet(tabIdentifier, codeSnippet: "print(MyModel.self)", sourceFilePath: "Sources/MyModel.swift")

特定の Swift ファイルのコンテキストでコードを実行します。そのファイルの fileprivate 宣言にアクセスできます。汎用 REPL ではありません。language パラメーターはありません(Swift のみ)。

注意点とアンチパターン

タブ識別子の陳腐化

次の場合、タブ識別子は無効になります。

  • Xcode ウィンドウを閉じて再度開いたとき
  • プロジェクトを閉じて再度開いたとき
  • Xcode を再起動したとき

解決方法:XcodeListWindows を再度呼び出して、新しい識別子を取得します。

XcodeWrite と XcodeUpdate
  • XcodeWrite — 新しいファイルを作成します。ファイルが存在する場合は失敗します(一部のクライアントの場合)。
  • XcodeUpdate — oldString/newString の置換によって、既存のファイルにパッチを適用します。呼び出しごとに置換は 1 回です(すべての出現箇所を置換するには replaceAll: true を使用します)。

よくある間違い:既存のファイルの編集に XcodeWrite を使うと、ファイルの内容全体が上書きされます。編集には XcodeUpdate を使用します。

スキーマ準拠

Xcode の mcpbridge には、既知の MCP 仕様違反があります。ツールで outputSchema が宣言されている場合、content は設定されますが、structuredContent は省略されます。これにより、厳格な MCP クライアント(Cursor、一部の Zed 構成)が動作しなくなります。

回避策:厳格なクライアント向けのプロキシとして XcodeMCPWrapper を使用します。

ファイル変更後のビルド

XcodeUpdate の後、新しい診断結果を表示するためにプロジェクトのビルドが必要になる場合があります。再ビルドせずに編集が正しいと決めつけないでください。

正当化を避ける

考え実際のところ
「xcodebuild を使えばいい」MCP では、CLI では得られない IDE の状態、ナビゲーターの診断結果、プレビューを取得できます
「Xcode ファイルは Read ツールで問題なく読める」XcodeRead は、生成ファイルや解決済みパッケージを含む Xcode のプロジェクトビューを確認できます
「プロジェクトは 1 つしかないからタブ識別子は不要」tabIdentifier がないと多くのツールは失敗しても通知しません。必ず最初に XcodeListWindows を呼び出してください
「毎回すべてのテストを実行する」反復作業には RunSomeTests、検証には RunAllTests を使うと、サイクルごとに数分節約できます
「ビルドログを解析してエラーを探す」XcodeListNavigatorIssues は、構造化され、重複が除去された診断結果を提供します
「ファイルの更新に XcodeWrite を使う」編集には XcodeUpdate を使用します。XcodeWrite は作成/上書きを行います。ツールを誤るとデータが失われます。
「ツール呼び出しは 1 回で十分」ワークフロー(BuildFix、TestFix)はループを使用します。単発の呼び出しでは反復のパターンを見落とします。

リソース

スキル:axiom-xcode-mcp-setup、axiom-xcode-mcp-ref、axiom-xcode-debugging

コメント