Skip to main content
Glama
Hiru-ge
by Hiru-ge

asc-mcp

An unofficial MCP server for the App Store Connect API — automate releases, App Review, metadata, screenshots, TestFlight, product page experiments, diagnostics, reports, reviews, and ASO analysis.

App Store Connect API 用の非公式MCPサーバー。Claude CodeなどのMCP対応エージェントから、自分のアプリの運営・分析データを直接扱えるようにする。

できること

  • App Store Connectに登録されているアプリの一覧取得

  • カスタマーレビューの取得(並び順・国・星評価でフィルタ)とデベロッパー返信の投稿

  • TestFlightビルド一覧の取得(処理状態・有効期限つき)

  • App Storeバージョン一覧の取得(審査状況・リリースタイプ)

  • 売上サマリーレポートの取得(日次・週次・月次・年次)

  • App Storeでのキーワード検索順位チェック(認証不要・単体で使える)

  • Analytics Reportsの取得(インプレッション・プロダクトページ閲覧・流入元別ダウンロードなどのASO分析データ)

  • App Storeバージョン作成、ローカライズ、ビルド紐付け、審査情報更新、審査提出

  • スクリーンショットセット作成、ローカル画像の分割アップロード、一覧・削除

  • 手動・自動・予約リリース、段階的リリース、配信国、アプリ価格の管理

  • TestFlightグループ・テスター・ビルド・What to Test・外部テスト審査の管理

  • カスタムプロダクトページとProduct Page Optimizationの作成・更新

  • クラッシュ・ハングの診断ログ、起動時間などのパフォーマンス指標の取得

課金アイテム、サブスクリプション、Webhookの管理は対象外。

Related MCP server: asc-mcp

クイックスタート

1. App Store Connect APIキーを用意する

App Store ConnectUsers and Access > Integrations > App Store Connect API > Team Keys でAPIキーを作成し、.p8 ファイルをダウンロードする。ロールは売上レポート(asc_get_sales_report)を使うなら Admin、使わないなら App Manager で足りる。秘密鍵は一度しかダウンロードできない点に注意。あわせて同ページで Issuer IDKey ID を控える。詳細はAPIキー作成の詳細を参照。

2. ビルドする

git clone https://github.com/Hiru-ge/asc-mcp.git
cd asc-mcp
npm install
npm run build

3. MCPクライアントに登録する

Claude Codeの場合:

claude mcp add --scope user app-store-connect \
  -e ASC_KEY_ID=xxx \
  -e ASC_ISSUER_ID=xxx \
  -e ASC_PRIVATE_KEY_PATH=/path/to/AuthKey_xxx.p8 \
  -- node /path/to/asc-mcp/dist/index.js

/path/to/asc-mcp はクローンしたディレクトリの絶対パスに置き換える。売上レポートを使う場合は -e ASC_VENDOR_NUMBER=xxxxx も追加する(Vendor Numberの場所)。

4. 動かしてみる

新しいセッションでエージェントにそのまま聞けばよい。

直近のカスタマーレビューを5件見せて

「カフェ 開拓」で検索したときのうちのアプリの順位は?

App Store Connect APIキーの作成

  1. App Store Connect にログインする。

  2. Users and Access > Integrations > App Store Connect API > Team Keys を開く。

  3. 「キーを生成」から新しいAPIキーを作成する。ロールの選び方は次のとおり。

    • App Manager: アプリ情報・レビュー取得と返信・ビルド・バージョン・Analytics Reportsをカバーする。売上レポートには権限が足りない(HTTP 403になる)

    • Admin または Sales: 売上レポート(asc_get_sales_report)も使う場合はこちら。SalesロールはSales and Trendsへのアクセスに特化しているが、レビュー返信など他ツールの権限が不足する場合があるため、全ツールを1つのキーで使うなら Admin が確実。キーのロールは作成後に変更できない

  4. 生成後に表示される .p8 ファイルをダウンロードする。この秘密鍵は一度しかダウンロードできない。紛失した場合はキーを失効させて再発行する必要がある。ダウンロードしたファイルは安全な場所に保管すること(Gitリポジトリにコミットしない)。

Issuer ID / Key ID の場所

  • Issuer ID: 同じ Integrations > App Store Connect API ページの上部に表示される(例: 57246542-96fe-1a63-e053-0824d011072a)。チーム全体で共通の値。

  • Key ID: 作成したキーの一覧に表示される10文字程度の識別子(例: 2X9R4HXF34)。.p8 ファイル名にも AuthKey_<Key ID>.p8 の形で含まれる。

Vendor Number(売上レポート用)

asc_get_sales_report を使う場合のみ必要。App Store Connect の Payments and Financial Reports ページに表示される、契約ごとのベンダー番号(数字のみ)。

環境変数

変数名

必須

説明

ASC_KEY_ID

必須

APIキーのKey ID

ASC_ISSUER_ID

必須

Issuer ID

ASC_PRIVATE_KEY_PATH

必須

ダウンロードした .p8 ファイルへの絶対パス

ASC_VENDOR_NUMBER

任意

売上レポート取得(asc_get_sales_report)に使うベンダー番号

いずれかの必須環境変数が欠けている場合、サーバー自体は起動するが、各ツール呼び出し時に「どの環境変数が欠けているか」を明示したエラーメッセージが返る。

ツール一覧

ツール名

用途

asc_list_apps

App Store Connectに登録されているアプリ一覧を取得する(id・name・bundleId・sku・primaryLocale)

asc_list_customer_reviews

指定アプリのカスタマーレビュー一覧を取得する。並び順・国・星評価でフィルタ可能

asc_reply_to_review

カスタマーレビューにデベロッパー返信を投稿する

asc_list_builds

指定アプリにアップロードされたビルド一覧を取得する(アップロード日時降順)

asc_list_app_store_versions

指定アプリのApp Storeバージョン一覧を取得する(審査状況・リリースタイプなど)

asc_get_sales_report

売上サマリーレポート(SALES/SUMMARY/version 1.0)をTSVとして取得し、パースして返す。ASC_VENDOR_NUMBER が必要

asc_search_ranking

公開iTunes Search APIを使ったキーワード順位チェック。App Store Connect認証(JWT)は不要で、この1ツール単体で使える

asc_request_analytics_reports

Analytics Reportsのリクエスト(ONGOINGアクセス)をensureする。既存があれば再利用し、なければ新規作成する

asc_list_analytics_reports

asc_request_analytics_reports で取得した requestId から、利用可能なレポート一覧を取得する

asc_get_analytics_report_data

asc_list_analytics_reports で取得した reportId から、レポートインスタンスのデータ(CSV/TSV)を取得してパースする

asc_create_app_store_version

新しいApp Storeバージョンを作成する

asc_create_version_localization

バージョンのローカライズを作成する

asc_list_version_localizations

説明文、キーワード、更新内容などをロケール別に取得する

asc_update_version_localization

バージョンのローカライズを部分更新する

asc_list_app_info_localizations

アプリ名、サブタイトル、プライバシーポリシーURLをロケール別に取得する

asc_update_app_info_localization

アプリ情報のローカライズを部分更新する

asc_set_version_build

App Storeバージョンへ審査対象ビルドを紐付ける

asc_get_review_details

App Reviewの連絡先、デモアカウント、審査メモを取得する

asc_create_review_details

App Review情報を作成する

asc_update_review_details

App Review情報を部分更新する

asc_submit_app_store_version

Review Submissionを作り、バージョンを追加して審査へ提出する

asc_submit_product_page_review_item

Product Page Optimization実験またはカスタムページを審査へ提出する

asc_create_screenshot_set

通常ページ、実験、カスタムページ用のスクリーンショットセットを作る

asc_list_screenshot_sets

ローカライズに属するスクリーンショットセットを取得する

asc_list_screenshots

セット内のスクリーンショットと処理状態を取得する

asc_upload_screenshot

ローカル画像を予約、分割アップロード、コミットする

asc_delete_screenshot_resource

スクリーンショットまたはセットを削除する

asc_update_app_store_version

リリース方式、公開予定日時、著作権などを更新する

asc_enable_phased_release

7日間の段階的リリースを有効にする

asc_update_phased_release

段階的リリースを開始、一時停止、再開、完了する

asc_release_app_store_version

承認済みの手動リリース待ちバージョンを公開する

asc_list_app_price_points

配信国ごとの価格候補と収益額を取得する

asc_get_app_price_schedule

現在と予約済みの価格、価格ポイントIDを取得する

asc_set_app_price

基準国の価格を即時変更または予約変更する

asc_get_app_availability

国別の配信状況、公開日、予約注文設定を取得する

asc_list_territory_availabilities

全配信国の設定をページネーション付きで取得する

asc_update_territory_availability

1つの国で配信可否や公開日を更新する

asc_list_beta_groups

TestFlightグループを取得する

asc_create_beta_group

TestFlightグループを作成する

asc_list_beta_testers

TestFlightテスターを取得する

asc_create_beta_tester

TestFlightテスターを作成・招待する

asc_add_to_beta_group

テスターまたはビルドをグループへ追加する

asc_list_beta_build_localizations

ロケール別のWhat to Testを取得する

asc_set_beta_build_localization

ロケール別のWhat to Testを作成・更新する

asc_get_build_beta_details

TestFlightビルドの内部・外部テスト状態を取得する

asc_update_build_beta_details

外部テスト開始時の自動招待を更新する

asc_submit_beta_app_review

ビルドを外部TestFlight向け審査へ提出する

asc_list_product_page_experiments

Product Page Optimization実験を取得する

asc_create_product_page_experiment

Product Page Optimization実験を作成する

asc_update_product_page_experiment

実験の配分、状態、名前を更新する

asc_create_experiment_treatment

実験のTreatmentを作成する

asc_list_experiment_treatments

実験のTreatmentを取得する

asc_create_experiment_treatment_localization

Treatmentのローカライズを作成する

asc_list_custom_product_pages

カスタムプロダクトページを取得する

asc_create_custom_product_page

カスタムプロダクトページを作成する

asc_update_custom_product_page

カスタムプロダクトページの名前や表示状態を更新する

asc_create_custom_product_page_version

カスタムプロダクトページの編集可能バージョンを作成する

asc_list_custom_product_page_versions

カスタムプロダクトページのバージョンを取得する

asc_update_custom_product_page_version

カスタムプロダクトページのディープリンクを更新する

asc_create_custom_product_page_localization

カスタムページのローカライズを作成する

asc_get_performance_metrics

アプリまたはビルドの電力・パフォーマンス指標を取得する

asc_list_diagnostic_signatures

ビルドのクラッシュ、ハングなどの診断シグネチャを取得する

asc_get_diagnostic_logs

診断シグネチャの匿名化ログとコールスタックを取得する

各list系ツールは limit(デフォルト20、最大200)と nextUrl(前回のレスポンスに含まれる nextUrl をそのまま渡すと次ページを取得)でページネーションに対応する。

リリース提出の基本フロー

  1. asc_create_app_store_version でバージョンを作る。

  2. asc_create_version_localization または asc_update_version_localization で更新内容などを入れる。

  3. 必要なら asc_create_screenshot_setasc_upload_screenshot で画像を更新する。

  4. asc_set_version_build で処理済みビルドを紐付ける。

  5. asc_create_review_details または asc_update_review_details で審査メモなどを整える。

  6. asc_submit_app_store_version で審査へ提出する。

asc_upload_screenshotfilePath はMCPサーバープロセスから読めるローカルファイルの絶対パスを渡す。Product Page Optimization用のセットでは localizationTypeexperimentTreatment、カスタムプロダクトページ用では customProductPage を指定する。

ASO分析ツールの使い方

  • asc_search_ranking は認証情報なしで単体利用できる。ASC_KEY_ID 等が未設定でも動作する。

  • Analytics Reports系は asc_request_analytics_reportsasc_list_analytics_reportsasc_get_analytics_report_data の順に呼び出す3段階フロー。

    • asc_request_analytics_reports で初めてONGOINGリクエストを作成した場合、実際にレポートが生成されるまで最大48時間かかる。生成前に asc_list_analytics_reports を呼んでも空になる。

    • 2回目以降は既存のONGOINGリクエストが再利用されるため、requestId を控えておけば毎回作成し直す必要はない。

セキュリティ上の注意

  • asc_list_customer_reviews が返すレビュー本文(title / body)は、第三者ユーザーが自由に書き込める未検証テキスト。この本文をLLMが読み取る過程で、レビュー文中に埋め込まれた指示(プロンプトインジェクション)に従ってしまう可能性がある。

  • 同じサーバーに公開返信を投稿する asc_reply_to_review が同居しているため、悪意あるレビュー本文がエージェントへの指示を含んでいた場合、確認なしに公開返信が投稿される経路が成立しうる。asc_reply_to_review はMCPクライアントの自動承認(auto-approve)設定に含めず、実行内容を必ず人間が確認してから承認すること。

  • 審査提出、公開、価格、配信国、スクリーンショット削除を行うツールは本番のApp Store Connectデータを変更する。これらも自動承認へ追加せず、対象アプリ、バージョン、国、価格を実行前に確認すること。

実装メモ

  • JWTは joseimportPKCS8 / SignJWT でES256署名する。有効期限はApp Store Connect APIの上限20分に対し19分に設定し、モジュール内でキャッシュ。残り2分を切ったら自動的に再生成する。

  • list系ツールのレスポンスはJSON:APIの attributes を平坦化した配列で返し、トークン消費を抑える。

  • 売上レポートは Accept: application/a-gzip でリクエストし、node:zlibgunzipSync でTSVに展開してパースする。行数が多い場合は先頭50行と総行数のみを返す。

  • asc_search_rankinghttps://itunes.apple.com/search を素の fetch で叩く(JWT不使用)。iTunes Search APIには目安で約20リクエスト/分のレート制限があり、超過するとHTTP 403が返ることがある。

  • Analytics Reportsのセグメントデータ(analyticsReportInstances/{id}/segmentsurl)は署名付きURLのため、Authorizationヘッダを付けずに素の fetch でダウンロードし、gunzipSync で展開する。セグメントはCSVまたはTSVで、先頭行にタブを含むかで区切り文字を判定する。複数セグメントは行を結合し、先頭50行と総行数のみを返す(services/tsv.tsparseAnalyticsSegments)。

免責事項

本ツールは非公式のオープンソースプロジェクトであり、Apple Inc.とは無関係。Apple・App Store Connect・iTunesは各社の商標。

ライセンス

MIT

Install Server
A
license - permissive license
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hiru-ge/asc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server