app-store-connect-mcp について
app-store-connect-mcpはClaudeをApp Store Connectに接続し、アプリ、TestFlight、レビュー、売上・財務レポート、チームユーザーを操作します。書き込み操作には確認手順があり、App Store Connect APIキーが必要です。
主な機能
- 01アプリとリリースの閲覧
- 02ビルドとTestFlightテスターの管理
- 03レビューの閲覧と返信
- 04売上・財務レポートの取得
- 05チームユーザーの閲覧と招待
- 06書き込み操作の確認
活用シーン
- 01最近のアプリビルドの確認
- 02ベータテスターの招待や管理
- 03評価の確認とユーザーへの返信
- 04売上または財務レポートの取得
MCP 対応
App Store Connectの操作をClaude向けMCPツールとして提供します。書き込み操作を送信する前に確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @chrischall/app-store-connect-mcpAPP_STORE_CONNECT_KEY_IDシークレット10-character App Store Connect API Key ID (e.g. ABC1234567).APP_STORE_CONNECT_ISSUER_IDTeam Issuer ID (UUID) from App Store Connect → Users and Access → Integrations.APP_STORE_CONNECT_PRIVATE_KEY_PATHシークレットAbsolute path to your downloaded .p8 private key file. Either this or APP_STORE_CONNECT_PRIVATE_KEY is required.APP_STORE_CONNECT_PRIVATE_KEYシークレットPEM contents of your .p8 private key. Either this or APP_STORE_CONNECT_PRIVATE_KEY_PATH is required.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
22掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | いいえ | アプリ名の完全一致フィルター |
| limit | integer | いいえ | 返すアプリの最大数(デフォルトは 50)。auto_paginate が無効の場合は API の1ページ分(最大200件)に制限され、有効の場合は全ページの合計数になります。 |
| bundleId | string | いいえ | bundle ID の完全一致フィルター(例:com.example.MyApp) |
| auto_paginate | boolean | いいえ | limit に達するまで links.next をたどってページを取得します(デフォルトは false)。has_more は結果のページネーションブロックで確認してください。 |
詳細
App Store Connect MCP
Claude を App Store Connect に接続し、アプリ、ビルド、TestFlight のベータグループとテスター、カスタマーレビュー、売上・財務レポート、チームユーザーに自然言語でアクセスできるようにする Model Context Protocol サーバーです。
警告
AI 開発プロジェクトです。 このコードベースは全面的に Claude Code によって構築され、現在も積極的に保守されています。実装を監査した人間はいません。使用する前に、すべてのコードとツールの権限を確認してください。
できること
Claude に次のようなことを尋ねられます。
- 「自分のアプリを一覧表示して」
- 「アプリ 1234567890 の最新ビルドを表示して」
- 「TestFlight の招待を承諾していないのは誰?」
- 「[email protected] を External Beta グループに招待して」
- 「ビルド 9876 をベータ審査に提出して」
- 「今月の日本での平均評価は?」
- 「あの星 1 つのレビューに謝罪の返事をして」
- 「ベンダー 80012345 の昨日の日次売上レポートを取得して」
- 「App Manager の役割で新しい開発者を招待して」
必要条件
- Claude Desktop または Claude Code
- Node.js 22 以降
- App Store Connect API キー(
.p8ファイル、Key ID、Issuer ID)— 作成には管理者以上のアクセス権が必要です
インストール
オプション A — npm
npx -y @chrischall/app-store-connect-mcp
Claude の設定(.mcp.json または Claude Desktop の設定)に追加します。
{
"mcpServers": {
"app-store-connect": {
"command": "npx",
"args": ["-y", "@chrischall/app-store-connect-mcp"],
"env": {
"APP_STORE_CONNECT_KEY_ID": "ABC1234567",
"APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
}
}
}
}
オプション B — ソースから
git clone https://github.com/chrischall/app-store-connect-mcp.git
cd app-store-connect-mcp
npm install
npm run build
Claude Desktop の設定に追加します。
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"app-store-connect": {
"command": "node",
"args": ["/absolute/path/to/app-store-connect-mcp/dist/bundle.js"],
"env": {
"APP_STORE_CONNECT_KEY_ID": "ABC1234567",
"APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
}
}
}
}
API キーの取得
- App Store Connect → Users and Access → Integrations → App Store Connect API にサインインします。
- + をクリックしてキーを生成します。Claude に実行させたい操作に適した役割を選択してください。読み取り専用の参照には
Developerで十分です。TestFlight の管理にはApp Manager、ユーザーの招待やほとんどの書き込み操作にはAdminが必要です。 .p8ファイルをダウンロードします(ダウンロードできるのは一度だけです)。Key ID と Issuer ID も控えておきます。APP_STORE_CONNECT_PRIVATE_KEY_PATHに保存した.p8ファイルのパスを指定するか、PEM の内容をAPP_STORE_CONNECT_PRIVATE_KEYに貼り付けます(改行をエスケープしても構いません)。
このキーは、必要に応じて有効期間の短い(20 分間)ES256 JWT に署名します。外部にトークンを保存することはなく、Apple 以外に送信されるものはありません。
ツール
| ツール | 機能 |
|---|---|
list_apps | アカウント内のアプリを一覧表示します(bundleId/name で絞り込み) |
get_app | ID で単一のアプリを取得します |
list_app_store_versions | アプリの App Store リリースを一覧表示します |
get_app_infos | アプリの年齢制限レーティングとストアの状態に関する情報を取得します |
list_builds | 最近のビルドを新しい順に表示します(アプリ/状態/バージョンで絞り込み) |
get_build | 単一のビルドの詳細を取得します |
list_beta_groups | TestFlight の内部/外部ベータグループを一覧表示します |
list_beta_testers | ベータテスターを一覧表示します(アプリ/グループ/メールアドレスで絞り込み) |
invite_beta_tester | 新しいテスターを追加します。グループ/ビルドへの追加も指定できます |
delete_beta_tester | チームからテスターを削除します |
add_testers_to_beta_group | 既存のテスターをグループに追加します |
remove_testers_from_beta_group | テスターをグループから削除します |
submit_build_for_beta_review | TestFlight のベータ審査にビルドを提出します |
list_customer_reviews | App Store のレビューを一覧表示します(評価/地域で絞り込み) |
get_customer_review | デベロッパーの返信を含む単一のレビューを取得します |
respond_to_review | デベロッパーの返信を投稿または更新します |
download_sales_report | 日次/週次/月次/年次のユニット数と売上の TSV をダウンロードします |
download_finance_report | 地域別の財務/収益金額の TSV をダウンロードします。Total_* の末尾行は別の summary に含まれます |
list_users | App Store Connect チームのユーザーを一覧表示します |
list_user_invitations | 保留中のチーム招待を一覧表示します |
invite_user | ロールを指定して新しいチームメンバーを招待します。アプリの表示範囲は明示的に指定する必要があります(allAppsVisible: true または空でない visibleAppIds。すべてのアプリを対象とするデフォルト設定はありません) |
asc_healthcheck | 認証情報と上流への到達性を確認します。失敗は例外ではなくデータとして報告します |
環境
| 変数 | 必須 | 備考 |
|---|---|---|
APP_STORE_CONNECT_KEY_ID | はい | 10 文字の Key ID(例:ABC1234567) |
APP_STORE_CONNECT_ISSUER_ID | はい | チームの Issuer ID(UUID) |
APP_STORE_CONNECT_PRIVATE_KEY | いずれか一方 | .p8 の PEM コンテンツ全体。改行エスケープ(\n)も使用できます。 |
APP_STORE_CONNECT_PRIVATE_KEY_PATH | いずれか一方 | .p8 ファイルの絶対パス |
確認
書き込み操作(invite_beta_tester、delete_beta_tester、add_testers_to_beta_group、remove_testers_from_beta_group、submit_build_for_beta_review、respond_to_review、invite_user)は、送信前に毎回確認を求めます。確認プロンプトを表示できるクライアント(Claude Code)では、実際のリクエスト内容を示すプロンプトが表示されます。確認プロンプトを表示できないクライアントでは、最初の呼び出しでは何も送信されず、実行するメソッド、パス、JSON ボディを含むプレビューと confirmToken が返されます。同じ引数とそのトークンを使って再度呼び出した場合にのみ、書き込みが実行されます。トークンは 1 回のみ使用でき、有効期限があり、プレビュー後に引数が変更されている場合は拒否されます。
| 変数 | デフォルト | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 確認プロンプトを表示できないクライアント(claude.ai、Claude Desktop)での書き込み操作の動作です。ask-user:2 段階で実行します。最初の呼び出しでは何も行わず、プレビューとトークンを返します。モデルはチャットでユーザーの承認を得てから、そのトークンを使って再度呼び出す必要があります。auto:同じく 2 段階で実行しますが、モデルはプレビューを自ら確認した後にトークンを使用できます。refuse:そのようなクライアントでは書き込みを拒否します。プロンプトを表示できるクライアント(Claude Code)では、MCP_CONFIRM_ELICITATION=off の場合を除き、常に実際のプロンプトが表示されます。認識されない値は refuse として扱われます。 |
MCP_CONFIRM_ELICITATION | on | off の場合、確認プロンプトは送信されないため、すべてのクライアントで MCP_CONFIRM_MODE の手順が適用されます。プロンプトを表示できると宣言しているものの実際には表示しないクライアント(ゲートされた呼び出しが停止します。opencode 2.0.x)で設定してください。それ以外の値では on のままとなり、stderr に警告が表示されます。 |
MCP_CONFIRM_TTL_SECONDS | 600 | トークンの有効期間です。 |
MCP_CONFIRM_SECRET | プロセスごとにランダム | 署名キーです。サーバーの再起動後もトークンを有効にする必要がある場合にのみ設定してください。 |
開発
npm install
npm test # vitest run
npm run test:watch # watch mode
npm run build # tsc + esbuild bundle
npm run dev # node --env-file=.env dist/index.js
テストでは client.request/client.requestRaw をモックするため、実際の App Store Connect 呼び出しは行われません。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。