App Store Connect MCP Server について
Apple アプリ開発者向けの Swift 製ローカル MCP サーバーで、macOS クライアントから App Store Connect のリリースやアカウント業務を自動化できます。アプリ管理、テスト、収益化、分析、プロビジョニングを扱い、変更時の安全策も備えています。
主な機能
- 01アプリとリリースメタデータの管理
- 02TestFlight とビルド配信
- 03アプリ内購入、サブスクリプション、価格管理
- 04レビュー、スクリーンショット、分析
- 05チームアカウントとプロビジョニング管理
- 06読み取り専用モードと変更時の安全策
活用シーン
- 01アプリのバージョンと審査提出の準備
- 02TestFlight のテスターとビルドの管理
- 03サブスクリプションとアプリ内購入の更新
- 04顧客フィードバックとアプリ指標の確認
MCP 対応
stdio でローカル実行し、App Store Connect API の操作をツールとして MCP クライアントに公開します。クライアントは対応する Mac 上でサーバーを起動します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
App Store Connect MCP サーバー
App Store Connect API 用のローカル Model Context Protocol サーバーです。
macOS 上の Codex、Claude、その他の MCP クライアントから、アプリ、ビルド、TestFlight、レビューなどを管理できます。
概要
asc-mcp は、ローカルの macOS MCP クライアントを App Store Connect API に接続する、Swift ベースの MCP サーバーです。34 の App Store ツールドメインと 2 つのコアドメインにわたる 514 個のツールを提供し、自然言語で iOS および macOS のリリースワークフローを自動化できます。
Codex、Claude Code、Claude Desktop、Gemini CLI、GitHub Copilot を使用する VS Code、Continue、Cursor、Devin Desktop(旧 Windsurf)向けの設定例が含まれています。クライアントの設定方法を記載しています。リリース CI では、macOS 上ですべてのサードパーティ製クライアントを起動するのではなく、インストール、MCP の初期化、ツールの検出を検証します。
初めての方は、クイックスタートに従ってください。以降のセクションは、高度な設定、ツールの選択、コントリビューター向けのリファレンス資料です。
主な機能
- リリースとメタデータ — バージョン、ローカライズ、ビルド、審査への提出、段階的リリース、Xcode Cloud
- TestFlight とアップロード — ベータグループ、テスター、フィードバック、募集、ビルドの配信、処理、輸出コンプライアンス
- マネタイズ — アプリ内購入、サブスクリプション、価格設定、提供状況、オファーコード、プロモーションオファー
- マーケティング — スクリーンショット、プレビュー、カスタムプロダクトページ、プロダクトページの最適化、プロモーション対象の購入
- アカウントとプロビジョニング — 複数の App Store Connect チーム、ユーザー、バンドル ID、デバイス、証明書、プロファイル、機能
- フィードバックと運用 — カスタマーレビュー、Webhook、アクセシビリティ宣言、分析、メトリクス、診断
- より安全な自動化 — 読み取り専用モード、確認の安全措置、厳格なページネーション、変更の復旧に関するガイダンス
- 監査可能な API カバレッジ — バージョン管理された Apple OpenAPI コントラクトと、リリース時の差分チェック
ソースツリーは 4.2.0 に向けた準備を進めています。以下のインストール例は、候補版の承認とオーナーによる公開が完了するまで、最後の安定版に固定されています。Asset Library の個別ワークフローについては、移行ガイドを参照してください。
プラットフォームのサポート
asc-mcp はローカルの stdio サーバーです。MCP クライアントは同じコンピューター上で起動します。クライアントが Linux や Windows で利用できても、この Swift サーバーがクロスプラットフォームになるわけではありません。
| 環境 | 状況 | 備考 |
|---|---|---|
| Xcode 26.x を搭載した macOS 15.6 以降 | 推奨 | リリース CI では、GitHub の macOS 15 ランナーと Xcode 26.2 を使用します |
| macOS 14.0~15.5 | 宣言されたデプロイメントターゲットのみ | ビルドと実行時の動作は未検証です。別途インストールした Swift 6.2 以降のツールチェーンが必要になる場合があります |
| Linux | まだサポートされていません | 移植作業と Linux CI は完了していません |
| Windows | サポートされていません | 現在のソースの依存関係と Swift MCP の stdio トランスポートは Windows に対応していません |
各 Xcode リリースがサポートする macOS のバージョンについては、Apple の Xcode システム条件を参照してください。
Web やクラウドのセッションでは、ローカルの MCP 設定は自動的に引き継がれません。互換性のある Mac 上で MCP クライアントをローカルに実行するか、その Mac 上での実行を明示的に維持するクライアント機能を使用してください。
クイックスタート
推奨されるセットアップでは、App Store Connect の認証情報を一度だけローカルの非公開ファイルに保存します。その後、MCP クライアントで必要なのは asc-mcp 実行ファイルへのパスだけです。
1. asc-mcp をインストールする
brew install mint
mint install zelentsov-dev/[email protected]
~/.mint/bin/asc-mcp --version
2. App Store Connect API キーを作成する
- App Store Connect → ユーザとアクセス → インテグレーション → チームキーを開きます。
- ワークフローに必要な範囲を満たす、最小限の権限ロールでキーを生成します。App Manager または Admin が必要なのは、該当する操作で必要な場合のみです。
.p8ファイルをダウンロードします。Apple ではダウンロードできるのは一度だけです。- キー ID と発行者 ID をコピーします。
3. 認証情報をローカルに保存する
非公開の設定ディレクトリを作成し、ダウンロードした .p8 ファイルを ~/.keys/ に移動します。2 つ目のコマンドでは、移動元のパスとファイル名を置き換えてください。
mkdir -p ~/.config/asc-mcp ~/.keys
chmod 700 ~/.config/asc-mcp ~/.keys
mv /path/to/downloaded/AuthKey_XXXXXXXXXX.p8 ~/.keys/
~/.config/asc-mcp/companies.json を作成します。
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8"
}
]
}
/Users/you を実際のホームディレクトリのパスに置き換えてください。どちらのファイルもリポジトリの外に置き、アクセスを制限してください。
chmod 600 ~/.config/asc-mcp/companies.json
chmod 600 /Users/you/.keys/AuthKey_XXXXXXXXXX.p8
注意
companies.json、.p8キー、または生の認証情報を Git にコミットしないでください。漏えいした場合は、ただちに App Store Connect のキーを無効にしてください。
4. MCP クライアントを接続する
クライアントを 1 つ選択してください。すべてのクライアントを設定する必要はありません。
Codex
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
Claude Code
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list
Claude Desktop、Gemini CLI、VS Code、Continue、Cursor、Devin Desktop の場合は、MCP クライアントのセットアップにあるすぐにコピーできる例を使用してください。
5. 試してみる
GUI クライアントの設定を変更した後は再起動し、MCP ツールの一覧を開いて、次のように尋ねてください。
List my App Store Connect apps.
接続やリクエストに失敗した場合は、トラブルシューティングを参照してください。
インストール
macOS で Mint を使用する(推奨)
Mint は、指定されたリリースをソースからインストールし、実行ファイルを ~/.mint/bin/asc-mcp に配置します。
brew install mint
mint install zelentsov-dev/[email protected]
指定されたリリースを更新または再インストールします。
mint install zelentsov-dev/[email protected] --force
安定版を使用する場合は、バージョンタグをインストールしてください。main または develop のインストールは、メンテナーとプレリリースのテストのみを対象としています。
ソースからビルドする
互換性のあるバージョンの macOS で Xcode 26.x を使用するか、スタンドアロンの Swift 6.2 以降のツールチェーンをインストールしてください。
git clone https://github.com/zelentsov-dev/asc-mcp.git
cd asc-mcp
swift build -c release
実行ファイルは .build/release/asc-mcp にあります。別の場所にコピーする場合は、隣接するリソースバンドルもコピーしてください。
cp .build/release/asc-mcp /usr/local/bin/asc-mcp
cp -R .build/release/asc-mcp_asc-mcp.bundle /usr/local/bin/
このバンドルには、リリースチェックで使用される、バージョン管理された OpenAPI 操作コントラクトが含まれています。
古いリリースからのアップグレード
v4.0.x から
バージョン 4.1 では、既存のすべてのツール名、必須入力、プロジェクションキー、配列の形状が維持されます。Xcode Cloud の読み取りツールは、文書化されていない引数を拒否し、返されるリンク、ページング、リレーションシップの系統、および含まれるリソースをより厳密に検証するようになりました。新しい *Present プロジェクションフィールドは、Apple が省略した配列と、存在する空の配列とを区別しますが、レガシーの配列フィールドは配列のままです。新たに公開されたネストされた *_limit 入力は、対応する include 値とペアで指定する必要があり、継続呼び出しでは元のリクエストスコープを変更せずに繰り返す必要があります。新しいプロダクトおよびワークフローの削除ツールは、デフォルトで安全なプレビューとなり、完全に削除する前に最新のプレビュー受領書と正確なインベントリ確認が必要です。
v3.18.x から
バージョン 4 では、既存のすべてのツール名とワーカーフィルターが維持されますが、破壊的な Marketing およびレビュー添付ファイルの呼び出しでは、Apple へのリクエストの前に正確な確認 ID が必要になりました:
| 既存のツール | 新たに必要な確認 |
|---|---|
custom_pages_delete | confirm_page_id |
ppo_delete_experiment | confirm_experiment_id |
promoted_delete | confirm_promoted_purchase_id |
review_attachments_delete | confirm_attachment_id |
screenshots_delete_set、screenshots_delete_preview_set | confirm_set_id |
screenshots_delete | confirm_screenshot_id |
screenshots_delete_preview | confirm_preview_id |
ppo_update_experiment も、state が指定された場合は confirm_experiment_id が必要です。名前またはトラフィック比率のみを更新する呼び出しは変更されません。unknown または committed_unverified のミューテーション結果の後は、再試行する前に返された検査アクションを使用してください。
既存の Marketing およびレビュー添付ファイルの呼び出しから、文書化されていないトップレベルの引数を削除してください。バージョン 4 では、未知のキーは黙って無視されるのではなく、ネットワークリクエストの前に拒否されます。
設定
認証情報
クイックスタートに示されているデフォルトの ~/.config/asc-mcp/companies.json ファイルは、すべてのクライアント設定でシークレットを重複させることなく、ターミナルと GUI クライアントの両方で一貫して機能するため推奨されます。
複数の会社を扱う場合は、エントリを追加します:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8",
"vendor_number": "YOUR_VENDOR_NUMBER"
},
{
"id": "client-company",
"name": "Client Company",
"key_id": "YYYYYYYYYY",
"issuer_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"key_path": "/Users/you/.keys/AuthKey_YYYYYYYYYY.p8"
}
]
}
vendor_number は analytics_sales_report、analytics_financial_report、analytics_app_summary にのみ必要です。App Store Connect → Sales and Trends → Reports で確認できます。
環境変数による代替手段
環境変数は自動化に便利ですが、Finder から起動された GUI アプリはシェル環境を継承しない場合があります。ほとんどのユーザーにとっては、上記のファイルベースの設定のほうが簡単です。
単一の会社:
export ASC_KEY_ID=XXXXXXXXXX
export ASC_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_PRIVATE_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_NAME="My Company" # optional
export ASC_VENDOR_NUMBER=YOUR_VENDOR_NUMBER # optional, analytics only
複数の会社:
export ASC_COMPANY_1_NAME="My Company"
export ASC_COMPANY_1_KEY_ID=XXXXXXXXXX
export ASC_COMPANY_1_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_COMPANY_1_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_2_NAME="Client Company"
export ASC_COMPANY_2_KEY_ID=YYYYYYYYYY
export ASC_COMPANY_2_ISSUER_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
export ASC_COMPANY_2_KEY_PATH=/Users/you/.keys/AuthKey_YYYYYYYYYY.p8
番号は 1 から始まります。連続する各エントリは ASC_COMPANY_{N}_KEY_ID と ASC_COMPANY_{N}_ISSUER_ID の両方を指定する必要があり、最初に見つからないペアのところでスキャンが停止します。
設定の解決順序
サーバーは認証情報を次の順序で解決します:
--companies /absolute/path/to/companies.json- プログラムによる埋め込み用のコンストラクターパラメーター
ASC_MCP_COMPANIES=/absolute/path/to/companies.json- デフォルトの設定ファイルの場所(
~/.config/asc-mcp/companies.jsonを含む) ASC_COMPANY_1_KEY_IDおよびその他の番号付きマルチカンパニー変数- 単一の会社用の
ASC_KEY_ID、ASC_ISSUER_ID、および秘密鍵変数
MCP クライアントのセットアップ
以下のすべての例は、Mint でのインストールと、推奨される companies.json 認証情報ファイルを前提としています。/Users/you は実際のホームディレクトリのパスに置き換えてください。GUI クライアントは通常、実行可能ファイルの絶対パスを必要とします。
| クライアント | 設定スコープ | 備考 |
|---|---|---|
| Codex | コマンドラインによるユーザー設定。任意で信頼済みプロジェクト設定 | 同じ Mac 上のローカル Codex クライアント間で共有されます |
| Claude Code | user、local、または project スコープ | 個人用の App Store ユーティリティには user が最も簡単です |
| Claude Desktop | ユーザーレベルのデスクトップ設定 | 編集後は再起動してください |
| Gemini CLI | ユーザー設定 | ローカルの stdio サーバー |
| VS Code with GitHub Copilot | ユーザープロファイルまたは .vscode/mcp.json | 初回起動時にサーバーの信頼を確認してください |
| Continue | ワークスペースの .continue/mcpServers/ | ネイティブの VS Code MCP 設定とは別です |
| Cursor | ユーザーまたはプロジェクトの mcp.json | コマンドパスは絶対パスを使用してください |
| Devin Desktop(旧 Windsurf) | ユーザー MCP 設定 | アクティブなツールは 100 個以内に保ってください |
Codex CLI、IDE 拡張機能、デスクトップクライアント
推奨される CLI 登録方法:
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
codex mcp get asc-mcp --json
同じローカル MCP 設定は、その Mac 上の Codex クライアント間で共有されます。ユーザー設定は $CODEX_HOME/config.toml で、デフォルトは ~/.codex/config.toml です:
[mcp_servers.asc-mcp]
command = "/Users/you/.mint/bin/asc-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = true
プロジェクト固有のセットアップには、同じテーブルを .codex/config.toml に配置します。Codex はプロジェクトが信頼された後にのみプロジェクト設定を読み込みます。companies.json の代わりにシェルの認証情報を使用する場合は、それらを明示的に転送してください:
env_vars = ["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_PRIVATE_KEY_PATH"]
設定を変更した後は GUI クライアントを再起動し、その MCP ビューまたは /mcp を使用して asc-mcp がアクティブであることを確認してください。詳細は公式の Codex MCP ドキュメントを参照してください。
Claude Code
すべてのローカルプロジェクトに対して一度に登録します:
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list
現在のプロジェクトのみに適用する場合は --scope local を、共有の .mcp.json を作成する場合は --scope project を使用します。プロジェクトのサーバーには信頼の承認が必要です。コミットされる .mcp.json に生の App Store Connect 認証情報を絶対に記載しないでください。
Claude は user および local の MCP エントリを ~/.claude.json に保存します。.claude/settings.json はグローバルな MCP レジストリではありません。Claude Code 内で /mcp を使用して、サーバーを検査または再接続してください。詳細は公式の Claude Code MCP ドキュメントを参照してください。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json にサーバーを追加します:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
ファイルを保存した後、Claude Desktop を終了して再度開いてください。
Gemini CLI
~/.gemini/settings.json にサーバーを追加します:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
Gemini MCP のデフォルトタイムアウトは意図的に維持されています。詳細は公式の Gemini CLI MCP ドキュメントを参照してください。
VS Code with GitHub Copilot
コマンドパレットから MCP: Add Server を実行し、個人用のセットアップにはユーザープロファイルを選択します。ワークスペースのセットアップには、.vscode/mcp.json を作成します:
{
"servers": {
"asc-mcp": {
"type": "stdio",
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
VS Code が初めてサーバーを起動するときに、ローカルサーバーを信頼することを確認してください。共有ワークスペースファイルにユーザー固有のパスやシークレットをコミットしないでください。詳細は公式の VS Code MCP ドキュメントを参照してください。
Continue
Continue は .vscode/mcp.json を使用しません。ワークスペースに .continue/mcpServers/asc-mcp.json を作成します:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
MCP ツールは Continue のエージェントモードで利用できます。詳細は公式の Continue MCP ドキュメントを参照してください。
Cursor
すべてのプロジェクトには ~/.cursor/mcp.json を、1 つのプロジェクトには .cursor/mcp.json を使用します:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
ファイルを編集した後、Cursor の設定から MCP サーバーを再起動または更新してください。詳細は公式の Cursor MCP ドキュメントを参照してください。
Devin Desktop(旧 Windsurf)
サーバーを `~/.codeium/windsurf/mcp_config.json` に追加します。この例では、72 個のツールを含むリリース用サブセットを有効にします。これは Cascade の 100 個という上限を下回ります:{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp",
"args": [
"--workers",
"apps,builds,export_compliance,versions,reviews"
]
}
}
}
クライアント側で個々のツールを無効にすることもできます。有効なカタログを予測しやすく保つため、サーバー側でワーカーをフィルタリングすることをおすすめします。Devin Desktop の公式 MCP ドキュメントを参照してください。
重要
commandには実際の実行ファイルを指定する必要があります。GUI クライアントには、シェルのエイリアス、PATH の変更、環境変数が引き継がれないことがよくあります。絶対パスを使用し、既定のcompanies.json認証情報ファイルを使用することをおすすめします。
ワーカーフィルタリング
このサーバーは、34 個の App Store ツールドメインと 2 個のコアドメインにわたる514 個のツールを公開します。一部の MCP クライアントにはツール数の上限があり、Devin Desktop の Cascade では現在、有効なツールは 100 個までです。--workers の 36 個のフィルターキーを使って、必要なワーカーのみを有効にします:
# Only load apps, builds, and version lifecycle tools
asc-mcp --workers apps,builds,versions
# App Store release preparation subset (99 tools, including always-on and build sub-workers)
asc-mcp --workers apps,accessibility,builds,export_compliance,versions,app_info,screenshots
# TestFlight review helpers can be loaded separately (49 tools)
asc-mcp --workers apps,builds,beta_app,pre_release
# Monetization focus
asc-mcp --workers apps,iap,subscriptions,pricing,promoted,review_submissions
フィルターの設定にかかわらず、company と auth のワーカーは常に有効です(中核となるマルチアカウント機能と認証機能を提供します)。
builds を有効にすると、build_processing と build_beta のサブワーカーも自動的に含まれます。
読み取り専用モード
App Store Connect に変更を加えず、安全に状態を確認するには --read-only を使用します:
asc-mcp --read-only
asc-mcp --read-only --workers apps,builds,reviews,analytics
このモードでは、*_list、*_get、*_search、*_status、*_verify、*_parse、*_triage、auth_*、分析、メトリクスなどの読み取りツールは引き続き使用できます。App Store Connect の作成、更新、アップロード、送信、リリース、削除、取り消し、クリア、キャンセル、その他の変更を行うツールは、ワーカーハンドラーが実行される前にブロックされます。company_switch は、ローカルのアクティブな会社コンテキストのみを変更するため、引き続き使用できます。
OpenAPI コントラクトとドリフト検出ツール
オペレーションコントラクトコマンドを使用すると、認証情報を必要としない実際の WorkerManager カタログを、セマンティックマニフェストおよび固定された Apple App Store Connect OpenAPI 仕様と比較できます。本番用マニフェストには、Apple の正確な operationId、HTTP メソッド、パス、呼び出しスコープの入力バインディング、型付き固定値、レスポンスの系譜、ローカルワークフロー、実装状態、非推奨のエイリアス、および意図的に保留されたオペレーションが記録されています。このコマンドは、App Store Connect の認証情報を読み込まず、MCP サーバーも起動しません。
rm -rf /tmp/asc-openapi
mkdir -p /tmp/asc-openapi
curl -L --fail -o /tmp/asc-openapi/spec.zip \
https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip
spec_entry="$(unzip -Z1 /tmp/asc-openapi/spec.zip | grep -E '(^|/)openapi\.oas[^/]*\.json$')"
test "$(echo "$spec_entry" | grep -c .)" -eq 1
unzip -p /tmp/asc-openapi/spec.zip "$spec_entry" > /tmp/asc-openapi/openapi.oas.json
swift run asc-mcp openapi-contract-check \
--spec /tmp/asc-openapi/openapi.oas.json \
--json-output /tmp/asc-openapi/operation-contract.json \
--markdown-output /tmp/asc-openapi/operation-contract.md \
--strict
このマニフェストは、バージョン、SHA-256、パス数、オペレーション数によって Apple API 4.5.1 に固定されています。Apple のオペレーション 503 件をマッピングし、431 件を明示的に保留し、369 件を対象外として、合計 1,303 件すべてを網羅します。必須の CI では、コミット済みのスナップショットが再現可能であることを確認します。最新の Apple との比較は別途実行され、セマンティックなドリフトレポートを生成します。変更がレビューされるまで、公開はブロックされます。マッピング済みのオペレーションが移動または消失した場合、公開ツールまたはワーカーがマニフェストと異なる場合、入力フィールドのバインディングが失われた場合、レスポンスの系譜が無効になった場合、または保留の決定期限が切れた場合、コントラクト CI は失敗します。公開されていない Apple の任意パラメーターは警告として扱われるため、生成されたバックログで引き続き確認できます。
マニフェストスキーマ v2 では、Apple のすべての任意のクエリ入力およびリクエストボディ入力を、公開バインド済み、内部制御、レビュー済みの理由に基づき意図的に省略、または未分類として記録します。チェックインされている optionalInputCoveragePin には、現在の正確な合計数と、入力 ID および処理区分をソートしたものの SHA-256 ダイジェストが記録されています。--strict は、ピンの欠落や、数または ID レベルでのドリフトを拒否します。このピンにより、段階的な修正を監査可能かつ安全に進められますが、Apple のすべての任意入力がすでに公開済みであることを示すものではありません。v4.1.3 のピンは合計 2,905 件で、内訳はバインド済み 1,122 件、内部制御 40 件、意図的な省略 1,743 件、未分類 0 件です。ID の SHA-256 は c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766 です。
--strict は、マージ時およびタグ付け時のリリースゲートです。宣言された target または broken のツールはすべてレポート上でエラーとして扱われ、回帰テストによってその状態が厳密に固定されます。現在のベースラインには target または broken の実装も、実装のドリフトもありません。そのため、asBuilt から外れる実装、構造的な契約エラー、または任意入力のカバレッジのドリフトがあると、マージとリリースの両方がブロックされます。--structural-strict は、ローカルで段階的な修正作業を行う場合に限り引き続き使用できます。
このゲートでは、操作の識別情報、MCP のトップレベルフィールドの所有権、必須の Apple 入力、型付きの内部値、レスポンスのソース/ポインターの系譜を検証します。MCP の型/列挙値/範囲との完全な整合性、および完全に型付けされたレスポンススキーマは、別の最適化フェーズとして扱われます。マッピングのステータスは、Apple アカウントの権限や、実際の環境で受け入れられることを保証するものではありません。
以前の openapi-coverage コマンドも、概要レベルのドメインレポートを確認するために引き続き使用できます。詳しくは、ASC-OPENAPI-COVERAGE-GENERATED.md をご覧ください。操作コントラクトが、リリースゲートの正式な基準です。
利用可能なワーカー名:
| Worker | Prefix | Tools | Description |
|---|---|---|---|
company | company_ | 3 | 複数アカウントの管理 |
auth | auth_ | 4 | JWT トークンツール |
apps | apps_ | 10 | アプリの一覧表示、メタデータ、ローカライズ、検索キーワード ID |
accessibility | accessibility_ | 6 | App Store のアクセシビリティに関する申告 |
webhooks | webhooks_ | 11 | Webhook 通知、配信診断、レシーバーヘルパー |
xcode_cloud | xcode_cloud_ | 42 | Xcode Cloud のプロダクト、ワークフロー管理、ビルド実行、成果物、問題、テスト結果、SCM |
builds | builds_ | 4 | ビルド管理 |
build_uploads | build_uploads_ | 10 | ビルドアップロードの親リソース、ファイル、安全な転送、復旧 |
build_processing | builds_get_processing_*, builds_update_encryption, builds_check_readiness | 4 | ビルドの状態、暗号化 |
export_compliance | export_compliance_ | 11 | 暗号化の申告、書類のアップロード、ビルドとの関連付け、準備状況 |
build_beta | builds_*_beta_*, individual tester build tools | 11 | TestFlight のローカライズ、通知 |
versions | app_versions_ | 17 | バージョンのライフサイクル、年齢制限指定、提出、リリース |
reviews | reviews_ | 8 | カスタマーレビューと返信 |
beta_groups | beta_groups_ | 15 | TestFlight グループと公開リンクの募集条件 |
beta_feedback | beta_feedback_ | 8 | TestFlight のフィードバック用スクリーンショット、クラッシュ報告、クラッシュログ |
beta_testers | beta_testers_ | 12 | テスター管理 |
iap | iap_ | 59 | アプリ内課金、バージョン管理されたメタデータ、価格設定、提供状況、オファーコード、審査用アセット |
subscriptions | subscriptions_ | 99 | サブスクリプションとグループのバージョン、価格設定、プランの提供状況、オファー、アセット |
sandbox | sandbox_ | 3 | サンドボックステスター |
beta_app | beta_app_ | 10 | ベータアプリのローカライズと審査 |
pre_release | pre_release_ | 3 | プレリリースバージョン |
beta_license | beta_license_ | 3 | ベータライセンス契約 |
provisioning | provisioning_ | 17 | バンドル ID、デバイス、証明書 |
app_info | app_info_ | 10 | アプリ情報、カテゴリ、EULA |
pricing | pricing_ | 9 | 地域、価格設定 |
users | users_ | 10 | チームメンバー、ロール |
app_events | app_events_ | 9 | アプリ内イベント、ローカライズ |
analytics | analytics_ | 11 | 売上・財務レポート、分析 |
assets | assets_ | 11 | 再利用可能な画像・動画、配置、プレビュー、1 回限りの実行、復旧 |
screenshots | screenshots_ | 19 | スクリーンショット、プレビュー、セット、検証済みの並べ替え |
custom_pages | custom_pages_ | 17 | カスタムプロダクトページ、バージョン、ローカライズ、検索キーワード |
ppo | ppo_ | 15 | プロダクトページ最適化の実験、処理群、ローカライズ |
promoted | promoted_ | 10 | プロモーション対象のアプリ内課金と検証済みの並べ替え |
review_attachments | review_attachments_ | 4 | App Store 審査の添付ファイル |
review_submissions | review_submissions_ | 9 | 汎用の App Store 審査提出と提出項目 |
metrics | metrics_ | 10 | パフォーマンス指標、診断、TestFlight の利用状況指標 |
ツールカタログの規模
MCP クライアントがすべてのツール定義を一括で読み込む場合、スキーマの概算サイズは次のとおりです。
| 構成 | ツール数 | 約トークン数 |
|---|---|---|
| すべてのワーカー(デフォルト) | 514 | 約60,000 |
リリースワークフロー:apps,builds,export_compliance,versions,reviews | 約72 | 約8,900 |
マネタイズ:apps,iap,subscriptions,pricing | 184 | 約21,100 |
TestFlight:apps,builds,beta_groups,beta_testers | 約63 | 約7,100 |
マーケティング:apps,screenshots,custom_pages,ppo,promoted | 約78 | 約8,800 |
--workers apps | 17 | 約2,100 |
特に大規模なワーカー: サブスクリプション(99 ツール)、アプリ内課金(59 ツール)、Xcode Cloud(42 ツール)、スクリーンショット(19 ツール)、プロビジョニング(17 ツール)。
実際のコストは、MCP ホストのシリアル化方式、トークナイザー、ツール検出方法によって異なります。最新のクライアントでは、必要になるまでスキーマの読み込みを遅らせる場合があります。クライアントにツール数の上限がある場合や、より小規模で用途を絞ったカタログを使いたい場合は、--workers を使用してください。
利用可能なツール
App Store の 34 のツールドメインと 2 つのコアドメインに、514 個のツールが分類されています(36 個の --workers フィルターキーを使用してください。詳しくはワーカーのフィルタリングを参照してください)。
企業管理 — 3 ツール
| ツール | 説明 |
|---|---|
company_list | 構成済みのすべての企業を一覧表示します |
company_switch | API 操作用のアクティブな企業を切り替えます |
company_current | 現在アクティブな企業の情報を取得します |
認証 — 4 ツール
| ツール | 説明 |
|---|---|
auth_generate_token | API アクセス用の JWT トークンを生成します |
auth_validate_token | 標準的なチームキー JWT をローカルで検証します。検証項目は、ES256 署名、設定済みの kid/iss、App Store Connect のオーディエンス、発行時刻と有効期限のクレーム、および 20 分の最大有効期間です。Apple API は呼び出さず、サーバーで受け入れられることも確認しません。 |
auth_refresh_token | JWT トークンを強制的に更新します |
auth_token_status | JWT トークンキャッシュの状態を取得します |
アプリ管理 — 10 ツール
| ツール | 説明 |
|---|---|
apps_list | フィルタリングしてすべてのアプリケーションを一覧表示します |
apps_get_details | アプリの詳細情報を取得します |
apps_search | 名前または Bundle ID でアプリを検索します |
apps_list_versions | 状態を含むすべてのバージョンを一覧表示します |
apps_get_metadata | バージョンのローカライズ済みメタデータを取得します |
apps_list_search_keywords | カスタムページのターゲティングに使用する、App Store 検索キーワードの標準 ID を一覧表示します |
apps_update_metadata | メタデータ(What's New、説明など)を更新します |
apps_list_localizations | コンテンツのステータスとともにローカライゼーションを一覧表示します |
apps_create_localization | バージョンの新しいローカライゼーションを作成します |
apps_delete_localization | バージョンからローカライゼーションを削除します |
アクセシビリティの申告 — 6 ツール
| ツール | 説明 |
|---|---|
accessibility_list | アプリのアクセシビリティ申告を一覧表示します |
accessibility_get | 1 件のアクセシビリティ申告を取得します |
accessibility_create | デバイスファミリー向けの申告を作成します |
accessibility_update | サポート状況のフラグを更新するか、申告を公開します |
accessibility_delete | 申告を削除します |
accessibility_list_relationships | アプリの申告関連 ID を一覧表示します |
Webhook 通知 — 11 ツール
| ツール | 説明 | |------|-------------| | `webhooks_list` | アプリの webhook を一覧表示します | | `webhooks_get` | ID で webhook を取得します | | `webhooks_create` | webhook 設定を作成します | | `webhooks_update` | webhook のフィールドを更新します | | `webhooks_delete` | webhook を削除します | | `webhooks_list_deliveries` | 配信試行を一覧表示します | | `webhooks_redeliver` | 既存の配信を再配信します | | `webhooks_ping` | テスト ping を送信します | | `webhooks_verify_signature` | 正確な生のペイロード本文に対して `x-apple-signature` を検証します | | `webhooks_parse_payload` | 生の webhook 通知ペイロードを解析して正規化します | | `webhooks_triage_event` | webhook イベントまたは配信失敗に対する実行可能なトリアージ計画を作成します |Xcode Cloud — 42 個のツール
| ツール | 説明 |
|---|---|
xcode_cloud_products_list | Xcode Cloud プロダクトを一覧表示します |
xcode_cloud_products_get | Xcode Cloud プロダクトを取得します |
xcode_cloud_products_delete | 確認の安全策付きで Xcode Cloud プロダクトをプレビューまたは完全に削除します |
xcode_cloud_app_product_get | アプリに関連付けられた Xcode Cloud プロダクトを取得します |
xcode_cloud_product_app_get | Xcode Cloud プロダクトに関連付けられたアプリを取得します |
xcode_cloud_product_primary_repositories_list | プロダクトに接続されたプライマリリポジトリを一覧表示します |
xcode_cloud_product_additional_repositories_list | プロダクトに接続された追加リポジトリを一覧表示します |
xcode_cloud_product_workflows_list | プロダクトのワークフローを一覧表示します |
xcode_cloud_product_build_runs_list | プロダクトのビルド実行を一覧表示します |
xcode_cloud_workflows_get | ワークフローを取得します |
xcode_cloud_workflows_create | Xcode Cloud ワークフローを作成します |
xcode_cloud_workflows_update | Xcode Cloud ワークフローを更新します |
xcode_cloud_workflows_delete | 確認の安全策付きでワークフローをプレビューまたは完全に削除します |
xcode_cloud_workflow_repository_get | ワークフローで使用されるリポジトリを取得します |
xcode_cloud_workflow_build_runs_list | ワークフローのビルド実行を一覧表示します |
xcode_cloud_build_runs_get | ビルド実行を取得します |
xcode_cloud_build_runs_start | Xcode Cloud ビルドを開始または再ビルドします |
xcode_cloud_build_run_actions_list | 実行のビルドアクションを一覧表示します |
xcode_cloud_build_run_builds_list | 実行によって作成された App Store Connect ビルドを一覧表示します |
xcode_cloud_actions_get | ビルドアクションを取得します |
xcode_cloud_action_build_run_get | ビルドアクションを所有するビルド実行を取得します |
xcode_cloud_action_artifacts_list | アクションの成果物を一覧表示します |
xcode_cloud_action_issues_list | アクションの問題を一覧表示します |
xcode_cloud_action_test_results_list | アクションのテスト結果を一覧表示します |
xcode_cloud_artifacts_get | 成果物を取得します |
xcode_cloud_issues_get | 問題を取得します |
xcode_cloud_test_results_get | テスト結果を取得します |
xcode_cloud_xcode_versions_list | 利用可能な Xcode バージョンを一覧表示します |
xcode_cloud_xcode_versions_get | Xcode バージョンを取得します |
xcode_cloud_xcode_version_macos_versions_list | Xcode バージョンと互換性のある macOS バージョンを一覧表示します |
xcode_cloud_macos_versions_list | 利用可能な macOS バージョンを一覧表示します |
xcode_cloud_macos_versions_get | macOS バージョンを取得します |
xcode_cloud_macos_version_xcode_versions_list | macOS バージョンと互換性のある Xcode バージョンを一覧表示します |
xcode_cloud_scm_providers_list | SCM プロバイダーを一覧表示します |
xcode_cloud_scm_providers_get | SCM プロバイダーを取得します |
xcode_cloud_scm_provider_repositories_list | SCM プロバイダーのリポジトリを一覧表示します |
xcode_cloud_scm_repositories_list | SCM リポジトリを一覧表示します |
xcode_cloud_scm_repositories_get | SCM リポジトリを取得します |
xcode_cloud_scm_repository_git_references_list | リポジトリの git 参照を一覧表示します |
xcode_cloud_scm_repository_pull_requests_list | リポジトリのプルリクエストを一覧表示します |
xcode_cloud_scm_git_references_get | git 参照を取得します |
xcode_cloud_scm_pull_requests_get | プルリクエストを取得します |
TestFlight ベータフィードバック — 8 個のツール
| ツール | 説明 |
|---|---|
beta_feedback_list_crashes | ベータ版のクラッシュフィードバック送信を一覧表示します |
beta_feedback_get_crash | ベータ版のクラッシュフィードバック送信を 1 件取得します |
beta_feedback_get_crash_log | 送信されたクラッシュログを読み取ります |
beta_feedback_get_crash_log_by_id | クラッシュログ ID でクラッシュログを読み取ります |
beta_feedback_delete_crash | ベータ版のクラッシュフィードバック送信を削除します |
beta_feedback_list_screenshots | ベータ版のスクリーンショットフィードバック送信を一覧表示します |
beta_feedback_get_screenshot | ベータ版のスクリーンショットフィードバック送信を 1 件取得します |
beta_feedback_delete_screenshot | ベータ版のスクリーンショットフィードバック送信を削除します |
ビルド — 4 個のツール
| ツール | 説明 |
|---|---|
builds_list | 処理状態を含めてビルドを一覧表示します |
builds_get | ビルドの詳細情報を取得します |
builds_find_by_number | バージョン番号でビルドを検索します |
builds_list_for_version | 特定のアプリバージョンのビルドを取得します |
ビルドアップロード — 10 個のツール
| ツール | 説明 |
|---|---|
build_uploads_list | フィルター、スパースフィールド、インクルード、厳密なページネーションを使用して、アプリの Build Upload 親リソースを一覧表示します |
build_uploads_get | 処理診断とオプションのインクルードリソースを含めて、Build Upload を 1 件取得します |
build_uploads_create | 曖昧な POST を再実行せずに、Build Upload 親リソースを作成します |
build_uploads_delete | 正確な ID の確認後に、Build Upload 親リソースを削除します |
build_uploads_list_files | 厳密なページネーションを使用して、1 つの Build Upload 配下のファイル予約を一覧表示します |
build_uploads_get_file | Build Upload File とその配信状態を 1 件取得します |
build_uploads_reserve_file | 曖昧な POST を再実行せずに、正確なファイルを 1 件予約します |
build_uploads_commit_file | 省略と null を別々に保持したまま、チェックサムまたはアップロード状態の変更をコミットします |
build_uploads_upload_file | 不変のローカルスナップショットから、新規または既存の予約を転送します |
build_uploads_upload | 親リソースの作成、予約、転送、コミット、処理の整合を実行します |
複合アップロードでは、予約から復旧まで同じ小文字の MD5 フィンガープリントが保持されます。明示的な再開および復旧された継続の指示には expected_md5 が含まれ、次回の呼び出しでは Apple へのリクエストや転送の前に、新しい不変のスナップショットをそれと照合して検証します。すでに UPLOAD_COMPLETE または COMPLETE とマークされている既存の予約は、Apple の sourceFileChecksums.file の MD5 がそのスナップショットと一致する場合にのみ受け入れられます。証拠が欠落している、サポートされていない、または一致しない場合は、別の転送、コミット、削除を行わずに、検査用に保持されます。署名付き操作は、そのメソッドが PUT の場合にのみ再試行されます。リダイレクト、POST、および不明なメソッドは再実行されません。曖昧な作成が一意に復旧された場合、ワークフローは停止し、明示的な継続のためにそのリソース ID を返します。転送用の認証情報は、直接読み取りで include_sensitive_details が明示的に有効化されていない限り、伏せ字のまま保持されます。
ビルド処理 — 4 個のツール
| ツール | 説明 |
|---|---|
builds_get_processing_state | 現在の処理状態を取得します |
builds_update_encryption | 暗号化コンプライアンスを設定します |
builds_get_processing_status | 詳細な処理ステータスを取得します |
builds_check_readiness | ビルドが提出可能かどうかを確認します |
輸出コンプライアンス — 11 個のツール
| ツール | 説明 | |------|-------------| | `export_compliance_list_declarations` | アプリの暗号化宣言を厳密なページネーションで一覧表示します | | `export_compliance_get_declaration` | 非推奨のドキュメント URL フィールドなしで 1 件の宣言を取得します | | `export_compliance_create_declaration` | アプリの暗号化宣言アンケートを作成します | | `export_compliance_create_document` | 単一の不変なローカルスナップショットからドキュメントを予約、転送、コミット、ポーリングします | | `export_compliance_get_document` | 署名付き URL、トークン、アップロードヘッダーなしで安全な配信メタデータを取得します | | `export_compliance_update_document` | 低レベルの nullable チェックサムまたはアップロード状態のパッチを適用します | | `export_compliance_upload_document` | AWAITING_UPLOAD の予約を正確なバイトとその小文字 MD5 レシートで再開します | | `export_compliance_inspect_document` | ドキュメントの存在を検査し、その配信状態を分類します | | `export_compliance_get_build_declaration` | ビルドに現在関連付けられている宣言を取得します | | `export_compliance_attach_build_declaration` | 承認済みの宣言を関連付け、その関係を検証します | | `export_compliance_check_release_readiness` | ビルドの輸出コンプライアンスリリースゲートのみを評価します |TestFlight ベータ版の詳細 — 11 ツール
| ツール | 説明 |
|---|---|
builds_get_beta_detail | ビルドの TestFlight 設定を取得します |
builds_update_beta_detail | TestFlight 設定を更新します |
builds_set_beta_localization | TestFlight の「新機能」を設定します |
builds_list_beta_localizations | すべての TestFlight ローカリゼーションを一覧表示します |
builds_get_beta_groups | ビルドのベータグループを取得します |
builds_get_beta_testers | ビルドの個別テスターを取得します |
builds_send_beta_notification | ベータテスターに通知を送信します |
builds_add_to_beta_groups | ビルドをベータグループに追加します |
builds_add_individual_testers | 個別テスターをビルドに追加します |
builds_remove_individual_testers | 個別テスターをビルドから削除します |
builds_list_individual_testers | ビルドに割り当てられた個別テスターを一覧表示します |
TestFlight ベータグループ — 15 ツール
| ツール | 説明 |
|---|---|
beta_groups_list | アプリの TestFlight ベータグループを一覧表示します |
beta_groups_create | 新しいベータグループを作成します |
beta_groups_update | ベータグループの設定を更新します |
beta_groups_delete | ベータグループを削除します |
beta_groups_add_testers | テスターをベータグループに追加します |
beta_groups_remove_testers | テスターをベータグループから削除します |
beta_groups_list_testers | ベータグループ内のテスターを一覧表示します |
beta_groups_add_builds | ビルドをベータグループに追加します |
beta_groups_remove_builds | ビルドをベータグループから削除します |
beta_groups_get_recruitment_criteria | ベータグループに関連付けられた公開リンクの募集条件を取得します |
beta_groups_create_recruitment_criteria | デバイスファミリーと OS バージョンの募集条件を作成します |
beta_groups_update_recruitment_criteria | 募集フィルターを置き換えるか明示的にクリアします |
beta_groups_delete_recruitment_criteria | 正確な条件 ID の確認後に募集条件を削除します |
beta_groups_list_recruitment_options | Apple が現在許可しているデバイスファミリーと OS バージョンを一覧表示します |
beta_groups_check_recruitment_compatibility | グループにその条件と互換性のあるビルドがあるかどうかを確認します |
TestFlight ベータテスター — 12 ツール
テスターの一覧表示/検索/取得/作成/削除、アプリの関連付け、招待、ベータグループの割り当て、ビルドの割り当て、アプリの削除のツールが含まれます。
アプリバージョンのライフサイクル — 17 ツール
| ツール | 説明 | |------|-------------| | `app_versions_create` | 新しいアプリバージョンを作成します | | `app_versions_list` | 状態でフィルタリングしてバージョンを一覧表示します | | `app_versions_get` | 詳細なバージョン情報を取得します | | `app_versions_get_age_rating_declaration` | App Info の年齢レーティング質問票を読み取ります | | `app_versions_list_territory_age_ratings` | 地域ごとに算出された年齢レーティングを一覧表示します | | `app_versions_update` | バージョンの属性を更新します | | `app_versions_attach_build` | ビルドをバージョンに紐付けます | | `app_versions_submit_for_review` | App Store レビューに提出します | | `app_versions_cancel_review` | 進行中のレビューをキャンセルします | | `app_versions_release` | 承認されたバージョンをリリースします | | `app_versions_create_phased_release` | 段階的ロールアウトを作成します | | `app_versions_get_phased_release` | 段階的リリースの情報と ID を取得します | | `app_versions_update_phased_release` | ロールアウトを一時停止/再開/完了します | | `app_versions_delete_phased_release` | 対象となる計画済みの段階的リリースを、正確な ID の確認と不明な結果に対する安全性を備えて削除します | | `app_versions_set_review_details` | レビュー担当者の連絡先情報を設定します | | `app_versions_update_age_rating` | 年齢レーティングの申告を設定します | | `app_versions_delete` | 編集可能なアプリバージョンを、正確な ID の確認と不明な結果に対する安全性を備えて削除します |カスタマーレビュー — 8 ツール
| ツール | 説明 |
|---|---|
reviews_list | フィルタリングとページネーションを使用してレビューを取得します |
reviews_get | 特定のレビューの詳細を取得します |
reviews_list_for_version | 特定のバージョンのレビューを取得します |
reviews_stats | レビュー統計を集計します |
reviews_create_response | カスタマーレビューに返信します |
reviews_delete_response | 返信を削除します |
reviews_get_response | レビューへの返信を取得します |
reviews_summarizations | レビューのテーマと評価を要約します |
アプリ内課金 — 59 ツール
| ツール | 説明 | |------|-------------| | `iap_list` | アプリのアプリ内課金を一覧表示します | | `iap_get` | アプリ内課金の詳細を取得します | | `iap_create` | 新しいアプリ内課金を作成します | | `iap_update` | アプリ内課金の属性を更新します | | `iap_delete` | アプリ内課金を削除します | | `iap_list_localizations` | アプリ内課金のローカライズを一覧表示します | | `iap_create_localization` | アプリ内課金のローカライズを作成します | | `iap_update_localization` | アプリ内課金のローカライズを更新します | | `iap_delete_localization` | アプリ内課金のローカライズを削除します | | `iap_submit_for_review` | アプリ内課金を審査に提出します | | `iap_list_subscriptions` | サブスクリプショングループを一覧表示します | | `iap_get_subscription_group` | サブスクリプショングループの詳細を取得します | | `iap_inventory` | アプリの AI フレンドリーなアプリ内課金インベントリ | | `iap_list_price_points` | 地域別の価格ポイントを一覧表示します | | `iap_list_price_point_equalizations` | 価格ポイントの均等化を一覧表示します | | `iap_get_price_schedule` | 価格スケジュールを取得します | | `iap_set_price_schedule` | 価格スケジュールを設定します | | `iap_pricing_summary` | 現在の価格とスケジュールされた価格を要約します | | `iap_prepare_offer_prices` | オファー向けの価格ポイント候補を検索します | | `iap_set_availability` | 地域別の提供状況を設定します | | `iap_get_availability` | アプリ内課金または提供状況 ID による提供状況を取得します | | `iap_list_available_territories` | 利用可能な地域を一覧表示します | | `iap_get_promoted_purchase` | プロモーション購入の状態を取得します | | `iap_list_offer_codes` | アプリ内課金のオファーコードを一覧表示します | | `iap_get_offer_code` | アプリ内課金のオファーコードを取得します | | `iap_create_offer_code` | アプリ内課金のオファーコードを作成します | | `iap_update_offer_code` | アプリ内課金のオファーコードを更新します | | `iap_deactivate_offer_code` | アプリ内課金のオファーコードを無効化します | | `iap_list_offer_code_prices` | 地域別のオファー価格を一覧表示します | | `iap_generate_one_time_codes` | ワンタイムオファーコードを生成します | | `iap_list_one_time_codes` | ワンタイムコードのバッチを一覧表示します | | `iap_get_one_time_code` | ワンタイムコードのバッチを取得します | | `iap_update_one_time_code` | ワンタイムコードのバッチを更新します | | `iap_deactivate_one_time_code` | ワンタイムコードのバッチを無効化します | | `iap_get_one_time_code_values` | 生成されたワンタイムコードの値を取得します | | `iap_create_custom_code` | カスタムオファーコードを作成します | | `iap_get_custom_code` | カスタムコードの詳細を取得します | | `iap_update_custom_code` | カスタムコードを更新します | | `iap_deactivate_custom_code` | カスタムコードを無効化します | | `iap_get_review_screenshot` | 審査用スクリーンショットを取得します | | `iap_upload_review_screenshot` | 審査用スクリーンショットをアップロードします | | `iap_delete_review_screenshot` | 審査用スクリーンショットを削除します | | `iap_upload_image` | プロモーション画像をアップロードします | | `iap_get_image` | プロモーション画像を取得します | | `iap_delete_image` | プロモーション画像を削除します | | `iap_list_images` | プロモーション画像を一覧表示します | | `iap_create_version` | 審査可能なアプリ内課金メタデータバージョンを作成します | | `iap_get_version` | アプリ内課金のバージョンとその審査状態を取得します | | `iap_list_versions` | アプリ内課金の審査可能なバージョンを一覧表示します | | `iap_list_version_localizations` | アプリ内課金バージョンが所有するローカライズを一覧表示します | | `iap_create_version_localization` | アプリ内課金バージョンのローカライズを作成します | | `iap_get_version_localization` | アプリ内課金バージョンのローカライズを取得します | | `iap_update_version_localization` | アプリ内課金バージョンのローカライズの nullable なテキストを更新します | | `iap_delete_version_localization` | アプリ内課金バージョンのローカライズを削除します | | `iap_get_version_image` | アプリ内課金バージョンに関連する単一の画像を取得します | | `iap_list_version_images` | アプリ内課金バージョンが所有するすべての画像リソースを、厳密な継続サポート付きで一覧表示します | | `iap_upload_version_image` | 不変のアプリ内課金バージョン画像をアップロード、コミット、および照合します | | `iap_get_version_image_resource` | バージョンスコープのアプリ内課金画像リソースを取得します | | `iap_delete_version_image` | バージョンスコープのアプリ内課金画像を削除します | 従来のプロダクトスコープのローカリゼーション、申請、画像ツールは、互換性のために引き続き呼び出し可能です。Apple 4.4.1 では `iap_list_localizations`、`iap_create_localization`、`iap_update_localization`、`iap_delete_localization`、`iap_submit_for_review`、`iap_upload_image`、`iap_get_image`、`iap_delete_image`、`iap_list_images` が非推奨になり、成功レスポンスはバージョン付きの代替ツールを示します。ローカリゼーションの作成、プロモーション画像のアップロード、審査申請については、まず `iap_list_versions` を使用し、新しいメタデータバージョンが必要な場合にのみ `iap_create_version` を呼び出し、そのバージョン ID を下流のバージョン付きツールに渡してください。これらの互換呼び出しがバージョンを自動的に作成または選択することはありません。Apple がバージョンまたはバージョンローカリゼーションの作成を受け入れた可能性があるものの、レスポンスが失われたかデコードできない場合、ツールは write_outcome: not_confirmed と retrySafe: false を、リクエストされた識別情報および list/get による確認手順とともに返します。重複したメタデータリソースを避けるため、再試行する前に確認してください。
サブスクリプション — 99 個のツール
サブスクリプションおよびグループのメタデータバージョン、バージョン所有のローカリゼーションと画像、プランタイプを考慮した利用可否、テリトリーを考慮した価格、価格ポイントと調整された均等化、プロモート購入の読み取り、インベントリ/価格設定ヘルパー、イントロオファー、プロモーションオファー、オファーコード、ワンタイム/カスタムコード、ウィンバックオファー、審査用スクリーンショットを含みます。以前の公開 offer_codes_*、intro_offers_*、promo_offers_*、winback_* のすべての機能は、subscriptions_* を通じて公開されています。
Apple 4.4.1 では、従来のプロダクトまたはグループスコープのローカリゼーション、画像、申請ツールも非推奨になります。これらは互換性のために引き続き呼び出し可能で、成功時に明示的な代替案内を返し、メタデータバージョンを自動的に作成または選択することはありません。新しい統合では、subscriptions_create_version または subscriptions_create_group_version、対応するバージョンローカリゼーション/画像ツール、および汎用の review_submissions_* ワークフローを使用する必要があります。
サブスクリプションバージョン、グループバージョン、ローカリゼーション、プラン利用可否の作成は、同じ非冪等のリカバリ契約を使用します。曖昧な Apple への書き込みは、write_outcome: not_confirmed、retrySafe: false、リクエストされたフィンガープリント、および決定論的なコレクション/get の確認手順を返します。
以下の名前は互換性のために引き続き利用可能ですが、Apple 4.4.1 では従来の subscriptionAvailability リソースが非推奨となり、プランタイプを考慮した subscriptionPlanAvailabilities が推奨されます。
| ツール | 互換性ステータス |
|---|---|
subscriptions_get_availability | 非推奨の従来の利用可否読み取り |
subscriptions_set_availability | 非推奨の従来の利用可否書き込み |
subscriptions_list_available_territories | 非推奨の従来のテリトリー一覧 |
subscriptions_inventory | 非推奨のヘルパー。最初に含まれるリレーションページを超えるサブスクリプションを省略する可能性があり、権威ある完全なインベントリではありません |
Sandbox テスター — 3 個のツール
| ツール | 説明 |
|---|---|
sandbox_list | Sandbox テスターを一覧表示します |
sandbox_update | Sandbox テスター設定を更新します |
sandbox_clear_purchase_history | Sandbox テスターの購入履歴を消去します |
ベータ版アプリ — 10 個のツール
| ツール | 説明 | |------|-------------| | `beta_app_list_localizations` | ベータ版アプリのローカライズを一覧表示します | | `beta_app_create_localization` | ベータ版アプリのローカライズを作成します | | `beta_app_get_localization` | ベータ版アプリのローカライズを取得します | | `beta_app_update_localization` | ベータ版アプリのローカライズを更新します | | `beta_app_delete_localization` | ベータ版アプリのローカライズを削除します | | `beta_app_submit_for_review` | ビルドをベータ版レビューに提出します | | `beta_app_list_submissions` | ベータ版レビューの提出物を一覧表示します | | `beta_app_get_submission` | ベータ版レビューの提出物を取得します | | `beta_app_get_review_details` | ベータ版アプリレビューの詳細を取得します | | `beta_app_update_review_details` | ベータ版アプリレビューの詳細を更新します |プレリリース版 — 3 ツール
プレリリース版の一覧表示、詳細、および関連するビルドが含まれます。
ベータ版ライセンス契約 — 3 ツール
ベータ版ライセンス契約の一覧表示、取得、更新が含まれます。
プロビジョニング — 17 ツール
| ツール | 説明 |
|---|---|
provisioning_list_bundle_ids | 登録済みのバンドル識別子を一覧表示します |
provisioning_get_bundle_id | バンドル ID の詳細を取得します |
provisioning_create_bundle_id | 新しいバンドル識別子を登録します |
provisioning_delete_bundle_id | バンドル識別子を削除します |
provisioning_list_devices | 登録済みのデバイスを一覧表示します |
provisioning_register_device | 新しいデバイス(UDID)を登録します |
provisioning_update_device | デバイス名またはステータスを更新します |
provisioning_list_certificates | 署名証明書を一覧表示します |
provisioning_get_certificate | 証明書の詳細を取得します |
provisioning_revoke_certificate | 証明書を失効させます |
provisioning_list_profiles | プロビジョニングプロファイルを一覧表示します |
provisioning_get_profile | プロファイルの詳細を取得します |
provisioning_delete_profile | プロファイルを削除します |
provisioning_create_profile | プロビジョニングプロファイルを作成します |
provisioning_list_capabilities | バンドル ID のケイパビリティを一覧表示します |
provisioning_enable_capability | ケイパビリティを有効化します |
provisioning_disable_capability | ケイパビリティを無効化します |
アプリ情報 — 10 ツール
アプリ情報の一覧表示/取得/更新、アプリ情報のローカライズ、および EULA の取得/作成/更新ツールが含まれます。
価格設定 — 9 ツール
地域、提供状況、価格ポイント、価格スケジュール、および App Store 提供状況 v2 ツールが含まれます。
ユーザー — 10 ツール
チームメンバーの一覧表示/取得/更新/削除、招待、表示可能なアプリ、および表示可能なアプリのリレーションシップ更新が含まれます。
アプリ内イベント — 9 ツール
アプリ内イベントの CRUD に加え、イベントローカライズの一覧表示/作成/更新/削除が含まれます。
アナリティクス — 11 ツール
売上、財務、アプリサマリー、アナリティクスレポートリクエスト、レポート、インスタンス、スナップショット、およびセグメントツールが含まれます。
スクリーンショットとプレビュー — 19 ツール
| ツール | 説明 | |------|-------------| | `screenshots_list_sets` | スクリーンショットセットを一覧表示します | | `screenshots_get_set` | ID でスクリーンショットセットを取得します | | `screenshots_create_set` | スクリーンショットセットを作成します | | `screenshots_delete_set` | スクリーンショットセットを削除します | | `screenshots_list` | セット内のスクリーンショットを一覧表示します | | `screenshots_upload` | スクリーンショットをアップロードします | | `screenshots_get` | スクリーンショットの詳細を取得します | | `screenshots_delete` | スクリーンショットを削除します | | `screenshots_reorder` | セット内のスクリーンショットを並べ替えます | | `screenshots_list_preview_sets` | アプリプレビューセットを一覧表示します | | `screenshots_get_preview_set` | ID でアプリプレビューセットを取得します | | `screenshots_create_preview_set` | プレビューセットを作成します | | `screenshots_delete_preview_set` | プレビューセットを削除します | | `screenshots_upload_preview` | アプリプレビューをアップロードします | | `screenshots_get_preview` | プレビューの詳細を取得します | | `screenshots_list_previews` | プレビューセット内のプレビューを一覧表示します | | `screenshots_reorder_previews` | メンバーシップとポストフライト検証を使用して、セット内のすべてのプレビューを並べ替えます | | `screenshots_upload_batch` | スクリーンショットを一括でアップロードします | | `screenshots_delete_preview` | プレビューを削除します |カスタムプロダクトページ — 17 個のツール
| ツール | 説明 |
|---|---|
custom_pages_list | カスタムプロダクトページを一覧表示します |
custom_pages_get | ページの詳細を取得します |
custom_pages_create | カスタムページを作成します |
custom_pages_update | カスタムページを更新します |
custom_pages_delete | カスタムページを削除します |
custom_pages_list_versions | ページバージョンを一覧表示します |
custom_pages_get_version | ID でページバージョンを取得します |
custom_pages_create_version | ページバージョンを作成します |
custom_pages_update_version | ページバージョンを更新します |
custom_pages_list_localizations | バージョンのローカライゼーションを一覧表示します |
custom_pages_get_localization | ID でローカライゼーションを取得します |
custom_pages_create_localization | ローカライゼーションを作成します |
custom_pages_update_localization | ローカライゼーションを更新します |
custom_pages_delete_localization | 正確な確認の後にローカライゼーションを削除します |
custom_pages_list_search_keywords | ローカライゼーションに割り当てられた検索キーワード ID を一覧表示します |
custom_pages_add_search_keywords | 検索キーワードの関連付けを追加します |
custom_pages_remove_search_keywords | 正確な確認の後に検索キーワードの関連付けを削除します |
プロダクトページ最適化 (A/B テスト) — 15 個のツール
| ツール | 説明 |
|---|---|
ppo_list_experiments | A/B テストの実験を一覧表示します |
ppo_list_version_experiments | App Store バージョンの V2 実験を一覧表示します |
ppo_get_experiment | 実験の詳細を取得します |
ppo_create_experiment | 実験を作成します |
ppo_update_experiment | 実験を更新/開始/停止します |
ppo_delete_experiment | 実験を削除します |
ppo_list_treatments | 実験のトリートメントを一覧表示します |
ppo_get_treatment | ID でトリートメントを取得します |
ppo_create_treatment | トリートメントバリアントを作成します |
ppo_update_treatment | トリートメントバリアントを更新します |
ppo_delete_treatment | 正確な確認の後にトリートメントを削除します |
ppo_list_treatment_localizations | トリートメントのローカライゼーションを一覧表示します |
ppo_get_treatment_localization | ID でトリートメントのローカライゼーションを取得します |
ppo_create_treatment_localization | トリートメントのローカライゼーションを作成します |
ppo_delete_treatment_localization | 正確な確認の後にトリートメントのローカライゼーションを削除します |
プロモート購入 — 10 個のツール
| ツール | 説明 | |------|-------------| | `promoted_list` | アプリのプロモーション対象の購入項目を一覧表示します | | `promoted_get` | プロモーションの詳細を取得します | | `promoted_create` | プロモーションを作成します | | `promoted_update` | プロモーションの表示設定または有効状態を更新します | | `promoted_delete` | プロモーションを削除します | | `promoted_reorder` | アプリのプロモーション対象の購入項目の順序をすべて置き換え、検証します | | `promoted_upload_image` | 非推奨:移行ガイダンスを返します。このエンドポイントは、固定された Apple OpenAPI 4.5.1 に含まれていません | | `promoted_get_image` | 非推奨:移行ガイダンスを返します。このエンドポイントは、固定された Apple OpenAPI 4.5.1 に含まれていません | | `promoted_delete_image` | 非推奨:移行ガイダンスを返します。このエンドポイントは、固定された Apple OpenAPI 4.5.1 に含まれていません | | `promoted_get_image_for_purchase` | 非推奨:移行ガイダンスを返します。この関連付けは、固定された Apple OpenAPI 4.5.1 に含まれていません |レビュー添付ファイル — 4 ツール
App Store のレビュー添付ファイルをアップロード、取得、削除、一覧表示するツールが含まれます。
レビュー提出 — 9 ツール
| ツール | 説明 |
|---|---|
review_submissions_list | アプリの一般的なレビュー提出を一覧表示します |
review_submissions_get | 一般的なレビュー提出を 1 件取得します |
review_submissions_create | アプリとプラットフォームを指定して、一般的なレビュー提出を作成します |
review_submissions_list_items | レビュー提出に紐付けられた項目を一覧表示します |
review_submissions_add_item | レビュー対象のリソースバージョンを提出に紐付けます |
review_submissions_update_item | 提出済み項目の resolved または removed の nullable な状態を更新します |
review_submissions_remove_item | 提出から項目を削除します |
review_submissions_submit | 紐付けられたすべての項目をレビューに提出します |
review_submissions_cancel | 提出済みの一般的なレビュー提出をキャンセルします |
review_submissions_add_item は、Apple の応答によって有効な項目 ID と、要求された関連名、JSON:API の型、およびリソース ID がすべて正確に確認された場合にのみ成功を報告します。一致しない場合は、未確認の書き込みとして返され、提出と項目一覧を使った復旧手順が示されます。
アプリのアセットライブラリ — 11 ツール
| ツール | 説明 |
|---|---|
assets_get_library | アプリが所有する再利用可能なアセットライブラリを読み取ります |
assets_get_reference_data | 必要に応じて ID を指定し、動的なメディア要件と配置要件を読み取ります |
assets_list_images | 範囲を指定したページネーションでアプリの画像を参照します |
assets_list_videos | 範囲を指定したページネーションでアプリの動画を参照します |
assets_get_image | 画像の処理/レビュー状態と安全なプロパティを読み取ります |
assets_get_video | 動画と、独立したポスターフレームの処理状態を読み取ります |
assets_list_placements | 1 つのアセットの使用箇所、または 1 つのローカライズの内容を参照します |
assets_get_placement | 配置を読み取り、親アプリを検証します |
assets_prepare_change | Apple への書き込みを行わずに型指定された変更を準備し、10 分間有効なプレビューを返します |
assets_apply_change | プレビューを 1 回だけ使用して再検証し、実行して読み戻します |
assets_get_operation | プライベートジャーナルを調べ、読み取りのみで照合します |
変更を適用する前に、移行および復旧ガイドをお読みください。アップロード、配置、レビューはそれぞれ別の操作です。公開済みの配置の変更は、この候補の受け入れ範囲外です。
パフォーマンス指標 — 10 ツール
| ツール | 説明 | |------|-------------| | `metrics_performance_overview` | デバイスで絞り込んだアプリのパフォーマンス概要を読み込みます | | `metrics_app_perf` | アプリのパフォーマンス/電力に関するメトリクスを取得します | | `metrics_build_perf` | ビルドのパフォーマンスメトリクスを取得します | | `metrics_build_diagnostics` | ビルドの診断情報を一覧表示します | | `metrics_get_diagnostic_logs` | 診断ログを取得します | | `metrics_app_beta_tester_usage` | ベータテスターごとのアプリの TestFlight クラッシュ、セッション、フィードバックのメトリクスを取得します | | `metrics_group_beta_tester_usage` | ベータテスターごとのベータグループの TestFlight クラッシュ、セッション、フィードバックのメトリクスを取得します | | `metrics_group_public_link_usage` | 公開リンクの表示数、承認結果、条件不適合、アンケートの比率を取得します | | `metrics_tester_usage` | アプリ内の1人のテスターの TestFlight 使用状況メトリクスを取得します | | `metrics_build_beta_usage` | ビルドの TestFlight クラッシュ、インストール、セッション、フィードバック、招待のメトリクスを取得します |使用例
リリースワークフロー全体
You: "Release version 2.2.0 of my app with build 456"
Claude will:
1. app_versions_create(app_id, platform: "IOS", version_string: "2.2.0")
2. app_versions_attach_build(version_id, build_id)
3. app_versions_set_review_details(version_id, contact_email: "...")
4. app_versions_submit_for_review(version_id)
5. app_versions_create_phased_release(version_id) # after approval
TestFlight 配信
You: "Create a beta group 'External Testers' and distribute the latest build"
Claude will:
1. beta_groups_create(app_id, name: "External Testers")
2. builds_list(app_id, limit: 1) # find latest
3. builds_set_beta_localization(build_id, locale: "en-US", whats_new: "...")
4. beta_groups_add_testers(group_id, tester_ids: [...])
レビュー管理
You: "Show me all 1-star reviews from the last week and draft responses"
Claude will:
1. reviews_list(app_id, rating: 1, sort: "-createdDate", limit: 50)
2. reviews_create_response(review_id, response_body: "...") # for each
複数企業のワークフロー
You: "Switch to ClientCorp and check their latest build status"
Claude will:
1. company_switch(company: "ClientCorp")
2. apps_list(limit: 5)
3. builds_list(app_id, limit: 1)
4. builds_get_processing_state(build_id)
API の制約
| 制約 | 詳細 |
|---|---|
| 絵文字不可 | メタデータフィールド(What's New、Description、Keywords)に絵文字を含めることはできません |
| バージョンの状態 | App Store Connect は、メタデータ更新が可能な状態かどうかを検証します。却下されたバージョンおよびメタデータが却下されたバージョンは再提出のために編集できますが、公開済みまたは審査中のバージョンは Apple によって却下される場合があります。 |
| JWT の有効期限 | トークンは20分後に期限切れになります。サーバーが自動的に更新します |
| レート制限 | Apple はアカウントごとにレート制限を適用します(ドキュメント) |
| ロケール形式 | 標準コードを使用してください:en-US、ru、de-DE、ja、zh-Hans |
アーキテクチャ
Sources/asc-mcp/
├── EntryPoint.swift # Entry point, --workers filtering
├── Core/
│ ├── Application.swift # MCP server setup & initialization
│ └── ASCError.swift # Custom error types
├── Helpers/ # JSON formatting, pagination, safe helpers
├── Models/ # API request/response models
│ ├── AppStoreConnect/ # Apps, versions, localizations
│ ├── Builds/ # Builds, beta details, beta groups
│ ├── AppLifecycle/ # Version lifecycle models
│ ├── InAppPurchases/ # IAP models
│ ├── Subscriptions/ # Subscriptions, offer codes, win-back
│ ├── Marketing/ # Screenshots, custom pages, PPO, promoted
│ ├── Metrics/ # Performance metrics, diagnostics
│ ├── Analytics/ # Sales/financial reports
│ ├── Provisioning/ # Bundle IDs, devices, certificates
│ ├── Shared/ # Shared upload/image types
│ └── ... # AppEvents, AppInfo, Pricing, Users
├── Services/
│ ├── HTTPClient.swift # Actor-based HTTP with retry logic
│ ├── JWTService.swift # ES256 JWT token generation
│ └── CompaniesManager.swift # Multi-account management
└── Workers/ # MCP tool implementations (40 Swift worker classes + MainWorker router)
├── MainWorker/WorkerManager # Central tool registry & routing
├── CompaniesWorker/ # company_* tools
├── AuthWorker/ # auth_* tools
├── AppsWorker/ # apps_* tools
├── AccessibilityWorker/ # accessibility_* tools
├── WebhooksWorker/ # webhooks_* tools
├── XcodeCloudWorker/ # xcode_cloud_* tools
├── BuildsWorker/ # builds_* tools
├── BuildUploadsWorker/ # build_uploads_* tools
├── BuildProcessingWorker/ # builds_*_processing tools
├── ExportComplianceWorker/ # export_compliance_* tools
├── BuildBetaDetailsWorker/ # builds_*_beta_* tools
├── AppLifecycleWorker/ # app_versions_* tools
├── ReviewsWorker/ # reviews_* tools
├── BetaGroupsWorker/ # beta_groups_* tools
├── BetaFeedbackWorker/ # beta_feedback_* tools
├── BetaTestersWorker/ # beta_testers_* tools
├── InAppPurchasesWorker/ # iap_* tools
├── SubscriptionsWorker/ # subscriptions_* tools
├── OfferCodesWorker/ # subscriptions offer-code tools
├── IntroductoryOffersWorker/ # subscriptions intro-offer tools
├── PromotionalOffersWorker/ # subscriptions promotional-offer tools
├── WinBackOffersWorker/ # subscriptions win-back tools
├── SandboxTestersWorker/ # sandbox_* tools
├── BetaAppWorker/ # beta_app_* tools
├── PreReleaseVersionsWorker/ # pre_release_* tools
├── BetaLicenseAgreementsWorker/ # beta_license_* tools
├── ProvisioningWorker/ # provisioning_* tools
├── AppInfoWorker/ # app_info_* tools
├── PricingWorker/ # pricing_* tools
├── UsersWorker/ # users_* tools
├── AppEventsWorker/ # app_events_* tools
├── AnalyticsWorker/ # analytics_* tools
├── ScreenshotsWorker/ # screenshots_* tools
├── CustomProductPagesWorker/ # custom_pages_* tools
├── ProductPageOptimizationWorker/ # ppo_* tools
├── PromotedPurchasesWorker/ # promoted_* tools
├── ReviewAttachmentsWorker/ # review_attachments_* tools
├── ReviewSubmissionsWorker/ # review_submissions_* tools
└── MetricsWorker/ # metrics_* tools
設計原則
- Swift 6 の厳格な並行処理 — すべてのワーカーとサービスが
Sendableに準拠し、適切にアクター分離されています - アクターベースの HTTP クライアント — スレッドセーフで、指数バックオフと再試行ロジックを備えています
- プレフィックスベースのルーティング —
WorkerManagerが名前のプレフィックスに基づいてツール呼び出しを振り分けます(設定不要) - 依存関係を最小限に抑制 — MCP Swift SDK のみを使用します
トラブルシューティング
サーバーが応答しない/MCP の接続が切断される
~/.mint/bin/asc-mcp --versionを実行し、MCP クライアントとは別にインストールを確認します。- MCP クライアントが、インストール済み実行ファイルへの絶対パスを使用していることを確認します。
- Codex の場合は、
codex mcp listとcodex mcp get asc-mcp --jsonを実行します。 - Claude Code の場合は、
claude mcp get asc-mcpとclaude mcp listを実行します。 - 設定した
companies.jsonファイル、または選択したセットアップで使用する環境変数を確認します。 - すべての
.p8キーのパスが絶対パスであり、ファイルが存在することを確認します。 - MCP の設定を変更した後、GUI クライアントを再起動し、クライアントの MCP 出力ログを確認します。
認証エラー(401)
- Key ID と Issuer ID が App Store Connect に表示されているものと一致することを確認します。
.p8ファイルが元のダウンロードファイルであり、変更されていないことを確認します。- API キーが取り消されていないことを確認します。
- JWT トークンは自動更新されますが、キーが無効な場合はすべてのリクエストが失敗します。
App Store Connect の状態ルールによりメタデータの更新が拒否される
apps_update_metadata は、テキスト、ロケール、URL のローカル検証後、メタデータの PATCH を App Store Connect に送信します。現在のバージョンの状態を編集可能とするかどうかは Apple が判断します。却下されたバージョンおよびメタデータが却下されたバージョンは編集して再提出できますが、公開済み、審査中、またはその他の理由でロックされたバージョンでは、Apple API エラーが返される場合があります。
ビルドの処理に時間がかかりすぎる
builds_get_processing_status を使用して現在の処理状態を確認し、builds_check_readiness を使用して App Store/TestFlight の準備状況を確認します。Apple のビルド処理には通常 5~30 分かかりますが、混雑時にはさらに時間がかかる場合があります。
レート制限(429 エラー)
HTTP クライアントは、429 レスポンスに対して指数バックオフで自動的に再試行します。制限に頻繁に達する場合は、API 呼び出しの頻度を減らすか、ページサイズを小さくしてページネーションを使用してください。
ヘルプの利用
報告を作成する前に、既存の issueを検索してください。新しい問題の場合は、issue を作成し、次の情報を記載してください。
- macOS のバージョンとインストール方法;
- MCP クライアントの名前とバージョン;
- 選択した
--workersの値(指定している場合); - 正確なエラーメッセージと、再現可能な最小のリクエスト。
ログを投稿する前に、Key ID、Issuer ID、秘密鍵、署名付き URL、トークン、アカウントデータを削除してください。セキュリティ上の脆弱性は、SECURITY.md に従って非公開で報告してください。コードへの貢献については、CONTRIBUTING.md を参照してください。
開発
ビルド
swift build # Debug build
swift build -c release # Release build (optimized)
swift package clean # Clean build artifacts
テストモード
.build/debug/asc-mcp --test # Runs built-in integration tests
新しいツールの追加
- 適切な
Worker+Handlers.swiftにハンドラーメソッドを作成します。 Worker+ToolDefinitions.swiftにツール定義を追加します。- ワーカーの
getTools()メソッドに登録します。 - ワーカーの
handleTool()スイッチにルーティングケースを追加します。 WorkerManagerはプレフィックスに基づいて自動でルーティングするため、変更は不要です。
新しいワーカーの追加
- ディレクトリを作成します:
Workers/MyWorker/ - 3 つのファイルを作成します:
MyWorker.swift、MyWorker+ToolDefinitions.swift、MyWorker+Handlers.swift WorkerManager.swiftにワーカーのプロパティと初期化を追加します。WorkerManager.registerWorkers()にルーティングルールを追加します。getMyTools()ヘルパーメソッドを追加します。
貢献
貢献を歓迎します!詳細は貢献ガイドを参照してください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
謝辞
- Model Context Protocol — プロトコル仕様とSwift SDK
- App Store Connect API — Apple の公式 REST API
これは非公式のコミュニティ運営ツールであり、Apple Inc. との提携や同社からの承認はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。