axiom-asc-mcp について
Claude Code で asc-mcp を使い、App Store Connect のリリース、TestFlight、レビュー、指標、複数チームを管理するためのスキルです。ワークフローとツールの選択方法も説明します。
主な機能
- 01アプリのバージョンとビルドの提出
- 02TestFlight ビルドの配布
- 03レビューの一覧表示と返信
- 04ビルド診断と指標の確認
- 05複数企業アカウントの切り替え
- 06Worker 単位のツール選択
活用シーン
- 01アプリのバージョンを審査に提出
- 02ビルドを TestFlight グループに配布
- 03評価の確認とレビューへの返信
- 04App Store Connect チームの切り替え
MCP 対応
Claude Code で asc-mcp を MCP サーバーとして設定し、App Store Connect の認証情報を使って接続する方法と、読み込む Worker やツールの選択方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-asc-mcpインストール後、Claude Code で/axiom-asc-mcpを入力して読み込まれたか確認します。
詳細
App Store Connect MCP 統合
基本原則:asc-mcp を設定すると、Claude Code を離れることなく App Store Connect のワークフロー全体を管理できます。ビルドの提出、TestFlight への配布、レビューへの返信、指標のプログラムによるモニタリングが可能です。
セットアップ
インストール
brew install mint
mint install zelentsov-dev/[email protected]
API キーの作成
- App Store Connect → Users and Access → Integrations → API を開きます
- Admin または App Manager の役割でキーを生成します
.p8ファイルをダウンロードします(ダウンロードは一度限りです。安全な場所に保存してください)- Key ID と Issuer ID を控えます
Claude Code への追加
claude mcp add asc-mcp \
-e ASC_KEY_ID=YOUR_KEY_ID \
-e ASC_ISSUER_ID=YOUR_ISSUER_ID \
-e ASC_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 \
-- ~/.mint/bin/asc-mcp
確認
Claude に company_current を呼び出すよう依頼します。チーム名が返されれば、接続されています。
ワーカーのフィルタリング
asc-mcp には 25 個のワーカー(約 208 個のツール)があります。すべてを読み込むとコンテキストを無駄に消費します。必要なものだけを読み込むには --workers を使用してください。
プリセット
| プリセット | ワーカー | ツール | 用途 |
|---|---|---|---|
| TestFlight | apps,builds,beta_groups,beta_testers | 約 34 | ベータ配布 |
| Release | apps,builds,versions,reviews | 約 40 | App Store への提出 |
| Monetization | apps,iap,subscriptions,offer_codes,pricing | 約 55 | IAP とサブスクリプション |
| Full | (デフォルト、すべてのワーカー) | 約 208 | すべて |
プリセットを使用するには、サーバーの登録時に --workers を追加します。
claude mcp add asc-mcp \
-e ASC_KEY_ID=... \
-e ASC_ISSUER_ID=... \
-e ASC_PRIVATE_KEY_PATH=... \
-- ~/.mint/bin/asc-mcp --workers apps,builds,versions,reviews
注:company と auth のワーカーは、--workers の指定にかかわらず常に読み込まれます。builds が有効な場合、build_processing と build_beta も自動的に含まれます。
ワーカー選択の判断ツリー
digraph workers {
"What are you doing?" [shape=diamond];
"TestFlight preset" [shape=box, label="--workers apps,builds,\nbeta_groups,beta_testers"];
"Release preset" [shape=box, label="--workers apps,builds,\nversions,reviews"];
"Monetization preset" [shape=box, label="--workers apps,iap,\nsubscriptions,offer_codes,pricing"];
"Full (no flag)" [shape=box, label="No --workers flag\n(all 208 tools)"];
"What are you doing?" -> "TestFlight preset" [label="distributing beta builds"];
"What are you doing?" -> "Release preset" [label="submitting to App Store"];
"What are you doing?" -> "Monetization preset" [label="managing IAP/subscriptions"];
"What are you doing?" -> "Full (no flag)" [label="multiple tasks or unsure"];
}
ワークフロー:リリースパイプライン
新しいバージョンを App Store に提出します。
1. apps_search(query: "MyApp") → get app ID
2. builds_list(appId, limit: 5) → find latest processed build
3. app_versions_create(appId, platform: "IOS", versionString: "2.1.0")
4. app_versions_attach_build(versionId, buildId)
5. app_versions_set_review_details(versionId, { contactEmail, notes, ... })
6. app_versions_submit_for_review(versionId)
7. (After approval) app_versions_create_phased_release(versionId)
手順 3 の前:バージョン文字列がすでに存在していてはいけません。app_versions_list で確認してください。
手順 4 の前:ビルドの処理状態が VALID である必要があります。builds_get_processing_state で確認してください。
手順 6 の前:バージョンの状態が PREPARE_FOR_SUBMISSION である必要があります。ビルドの添付とレビュー詳細の設定は前提条件です。
ワークフロー:TestFlight 配布
ベータテスターにビルドを配布します。
1. apps_search(query: "MyApp") → get app ID
2. builds_list(appId, limit: 5) → find latest build
3. builds_set_beta_localization(buildId, locale: "en-US", whatsNew: "Bug fixes")
4. beta_groups_list(appId) → find or create group
OR beta_groups_create(appId, name: "Internal Testers", isInternal: true)
5. beta_groups_add_builds(groupId, [buildId])
6. builds_send_beta_notification(buildId) → notify testers (optional)
ヒント:内部テスター(最大 100 人)にはビルドがすぐに届きます。外部テスター(最大 10,000 人)には、各バージョンの最初のビルドについて Beta App Review が必要です。
ワークフロー:レビュー管理
App Store のレビューをモニタリングして返信します。
1. apps_search(query: "MyApp") → get app ID
2. reviews_list(appId, sort: "-createdDate", limit: 20)
OR reviews_list(appId, filterRating: "1,2") → negative reviews only
3. reviews_stats(appId) → rating distribution summary
4. reviews_create_response(reviewId, responseBody: "Thank you for...")
返信のガイドライン:
- 否定的なレビューには 24~48 時間以内に返信します
- プロフェッショナルな対応を心がけ、具体的なサポートを提示します
- 返信を更新すると以前の返信が置き換わります(ユーザーには「Developer Response」と表示されます)
ワークフロー:フィードバックのトリアージ
TestFlight のフィードバックをビルド診断情報と関連付けます。
1. builds_list(appId, limit: 10) → recent builds
2. builds_get_beta_testers(buildId) → who tested this build
3. metrics_build_diagnostics(buildId) → crash signatures for this build
4. metrics_get_diagnostic_logs(signatureId) → individual crash logs
制限事項:TestFlight のテキストフィードバックとスクリーンショットは、App Store Connect API では利用できません。フィードバックの内容を確認するには、Xcode Organizer または ASC の Web ダッシュボードを使用してください。
ワークフロー:複数の会社
App Store Connect のチームを切り替えます。
1. company_list → see configured accounts
2. company_switch(companyId: "client-a") → switch active account
3. (All subsequent calls use client-a's credentials)
複数会社のセットアップ
~/.config/asc-mcp/companies.json に追加します。
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "KEY_ID_1",
"issuer_id": "ISSUER_1",
"key_path": "/Users/you/.keys/AuthKey1.p8"
},
{
"id": "client-a",
"name": "Client A",
"key_id": "KEY_ID_2",
"issuer_id": "ISSUER_2",
"key_path": "/Users/you/.keys/AuthKey2.p8"
}
]
}
または、番号付きの環境変数を使用します:ASC_COMPANY_1_NAME、ASC_COMPANY_1_KEY_ID など。
主要ツールのクイックリファレンス
アプリとビルド
| ツール | パラメーター | 戻り値 |
|---|---|---|
apps_search | query | App ID、名前、bundleId、プラットフォーム |
apps_list | limit | アカウント内のすべてのアプリ |
builds_list | appId、limit、sort | ビルド番号、バージョン、処理状態 |
builds_find_by_number | appId、buildNumber | 指定したビルドの詳細 |
builds_get_processing_state | buildId | PROCESSING、VALID、INVALID など |
builds_check_readiness | buildId | ビルドが配布可能かどうか |
バージョンと提出
| ツール | パラメーター | 戻り値 |
|---|---|---|
app_versions_create | appId, platform, versionString | PREPARE_FOR_SUBMISSION 状態の新しいバージョン |
app_versions_attach_build | versionId, buildId | ビルドを添付済み |
app_versions_set_review_details | versionId, contactEmail, notes, etc. | 審査の詳細 |
app_versions_submit_for_review | versionId | 審査に提出済み |
app_versions_cancel_review | versionId | 審査をキャンセル済み |
app_versions_release | versionId | 手動リリース |
app_versions_create_phased_release | versionId | 7 日間の段階的リリース |
TestFlight
| ツール | パラメーター | 戻り値 |
|---|---|---|
beta_groups_create | appId, name, isInternal | 新しいグループ |
beta_groups_add_testers | groupId, testerIds | 更新済みグループ |
beta_groups_add_builds | groupId, buildIds | ビルドを配布済み |
builds_set_beta_localization | buildId, locale, whatsNew | 「テストする内容」のテキスト |
builds_send_beta_notification | buildId | テスターに通知済み |
レビューとメトリクス
| ツール | パラメーター | 戻り値 |
|---|---|---|
reviews_list | appId, sort, filterRating, limit | レビュー項目 |
reviews_stats | appId | 評価の分布 |
reviews_create_response | reviewId, responseBody | 開発者の返信 |
metrics_app_perf | appId | アプリレベルのパフォーマンスメトリクス |
metrics_build_diagnostics | buildId | ビルドごとのクラッシュシグネチャ |
API の制約
| 制約 | 詳細 |
|---|---|
| メタデータに絵文字を使用できない | バージョンの「What’s New」、説明、キーワードには、絵文字ではなく単語を使用してください |
| バージョンの状態 | 編集できるのは PREPARE_FOR_SUBMISSION 状態のバージョンのみです。提出後に変更するには、新しいバージョンを作成してください。 |
| JWT の有効期間 | トークンの有効期間は 20 分です。asc-mcp によって自動更新されます |
| レート制限 | Apple はアカウントごとの制限を適用します。asc-mcp は 429 エラー時に指数バックオフで再試行します。 |
| ロケール形式 | 標準コードを使用します:en-US、ja、de-DE、zh-Hans、ru |
| ビルド処理 | 新しくアップロードしたビルドの処理には 15~30 分かかります。添付する前に builds_get_processing_state をポーリングしてください。 |
| 段階的リリース | 承認後のみ利用できます。app_versions_update_phased_release で一時停止/再開できます。 |
注意点
| 注意点 | 詳細 |
|---|---|
| ビルドが見つからない | ビルドの処理中である可能性があります。builds_get_processing_state を確認してください。状態は VALID である必要があります。 |
| 「バージョンはすでに存在します」 | 重複するバージョン文字列は作成できません。まず app_versions_list で確認してください。 |
| 添付に失敗する | ビルドの処理が完了しており、バージョンが PREPARE_FOR_SUBMISSION 状態である必要があります。 |
| 審査の詳細が却下される | 連絡先情報の各フィールドには形式要件があります。メールアドレスは有効な形式で、電話番号には国番号を含める必要があります。 |
| アプリの選択間違い | apps_search はあいまい検索です。返された bundleId が対象のアプリと一致することを確認してください。 |
| 複数企業の取り違え | 変更を加える前に、必ず最初に company_current を呼び出し、どのアカウントがアクティブかを確認してください。 |
| ベータ版アプリの審査 | バージョンごとに、最初の外部 TestFlight ビルドには審査が必要です。同じバージョンへの後続のビルドは自動承認されます。 |
| 分析データがない | analytics_* ツールを使用するには、会社の設定に vendor_number が必要です。設定されていない場合、売上/財務レポートはエラーを表示せずに失敗します。 |
過度な合理化を避ける
| 考え | 実際のところ |
|---|---|
| 「ASC の Web ダッシュボードを使えばいいだけ」 | MCP ツールを使うと、繰り返し行うタスクをよりすばやく実行できます。20 件のレビューへの返信、5 つのグループへの配布、複数のアプリでのバージョン作成などが可能です。 |
| 「ワーカーフィルタリングは不要」 | 208 個のツールで約 30K トークンのコンテキストを消費します。必要なものに絞ってください。 |
| 「レビューの詳細を入力せずに提出すればいい」 | 提出に失敗します。app_versions_submit_for_review の前に、app_versions_set_review_details が必要です。 |
「アカウントは 1 つしかないので、company_current は省略していい」 | 複数企業の設定はセッション間で保持されます。必ず確認してください。 |
| 「フィードバックのトリアージは API 経由でも同じ」 | テキストのフィードバックとスクリーンショットは ASC API に含まれていません。フィードバックの内容には Organizer を、クラッシュ診断には MCP を使用してください。 |
asc-mcp が利用できない場合
asc-mcp が設定されていない場合は、手動のワークフローに切り替えてください。
- クラッシュ分析:Xcode Organizer(
axiom-testflight-triageを参照)、または App Store Connect Web ダッシュボード(axiom-app-store-connect-refを参照)を使用します - TestFlight の配布:Xcode → Product → Archive → Distribute、または
xcodebuild+altoolを使用します - レビュー管理:App Store Connect Web ダッシュボードを使用します
- 提出:Xcode → Product → Archive → Distribute to App Store を使用します
リソース
スキル:axiom-app-store-submission、axiom-app-store-ref、axiom-app-store-connect-ref、axiom-testflight-triage
エージェント:crash-analyzer、security-privacy-scanner、iap-auditor