mcpField
A
app-publish

app-publish

ローカル
github.com/mikusnuz開発ツール391 週間前に更新

app-publish について

app-publishは、App Store ConnectとGoogle Play Consoleで既存のiOS・Androidアプリを管理する開発者向けMCPサーバーです。署名済みのリリース可能なビルドを前提に、ストア掲載、アセット、テスト、審査、リリースを扱います。アプリのビルドや署名鍵の管理は行いません。

主な機能

  1. 01ストア掲載情報、ローカライズ、スクリーンショットの管理
  2. 02ビルドのアップロードとバージョン・リリース管理
  3. 03審査状況の確認とレビューへの返信
  4. 04TestFlightグループとテスターの管理
  5. 05アプリ内課金とサブスクリプションの管理
  6. 06Android vitalsとストアレポートの確認

活用シーン

  1. 01ストアの説明、キーワード、スクリーンショットを更新
  2. 02署名済みアプリビルドを審査に提出
  3. 03審査の進捗確認やGoogle Playレビューへの返信
  4. 04段階的リリースの準備とベータテスターの管理

MCP 対応

App Store ConnectとGoogle Play Console向けのツールに加え、リリースチェックリストと掲載情報の監査用プロンプトを提供します。設定情報と対応プラットフォームのリソースも公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mikusnuz-app-publish": {
"command": "npx",
"args": [
"-y",
"app-publish-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_KEY_TYPE": "<APPLE_KEY_TYPE>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_P8_PATH": "<APPLE_P8_PATH>",
"GOOGLE_SERVICE_ACCOUNT_PATH": "<GOOGLE_SERVICE_ACCOUNT_PATH>",
"GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>",
"GOOGLE_REFRESH_TOKEN": "<GOOGLE_REFRESH_TOKEN>",
"APPLE_VENDOR_NUMBER": "<APPLE_VENDOR_NUMBER>",
"APP_PUBLISH_READ_ONLY": "<APP_PUBLISH_READ_ONLY>",
"APPLE_REPORTS_KEY_ID": "<APPLE_REPORTS_KEY_ID>",
"APPLE_REPORTS_P8_PATH": "<APPLE_REPORTS_P8_PATH>",
"APPLE_ADMIN_KEY_ID": "<APPLE_ADMIN_KEY_ID>",
"APPLE_ADMIN_P8_PATH": "<APPLE_ADMIN_P8_PATH>",
"APPLE_REPORTS_ISSUER_ID": "<APPLE_REPORTS_ISSUER_ID>",
"APPLE_REPORTS_KEY_TYPE": "<APPLE_REPORTS_KEY_TYPE>",
"APPLE_ADMIN_ISSUER_ID": "<APPLE_ADMIN_ISSUER_ID>",
"APPLE_ADMIN_KEY_TYPE": "<APPLE_ADMIN_KEY_TYPE>"
}
}
}
}
起動コマンドnpx -y app-publish-mcp
設定が必要な環境変数
APPLE_KEY_IDシークレットApple App Store Connect API Key ID
APPLE_KEY_TYPEシークレットApple API key type: TEAM (default) or INDIVIDUAL
APPLE_ISSUER_IDシークレットApple App Store Connect Issuer ID for TEAM keys
APPLE_P8_PATHPath to Apple AuthKey .p8 file
GOOGLE_SERVICE_ACCOUNT_PATHPath to Google Play service account JSON key file
GOOGLE_CLIENT_IDGoogle Desktop OAuth client ID
GOOGLE_CLIENT_SECRETシークレットGoogle Desktop OAuth client secret
GOOGLE_REFRESH_TOKENシークレットGoogle OAuth refresh token
APPLE_VENDOR_NUMBERApple vendor number for sales and finance reports
APP_PUBLISH_READ_ONLYSet to true to register only read tools (list/get/search/query/download, no Google edit creation or deletion)
APPLE_REPORTS_KEY_IDシークレットExtra Apple key ID for Sales/Finance/Analytics reports
APPLE_REPORTS_P8_PATHPath to the reports key .p8 file
APPLE_ADMIN_KEY_IDシークレットAdmin key ID for analytics requests and finance/reporting fallback
APPLE_ADMIN_P8_PATHPath to the Admin key .p8 file
APPLE_REPORTS_ISSUER_IDReports key issuer; defaults to APPLE_ISSUER_ID
APPLE_REPORTS_KEY_TYPEシークレットReports key type: TEAM or INDIVIDUAL; defaults to APPLE_KEY_TYPE
APPLE_ADMIN_ISSUER_IDAdmin key issuer; defaults to APPLE_ISSUER_ID
APPLE_ADMIN_KEY_TYPEシークレットAdmin key type: TEAM or INDIVIDUAL; defaults to APPLE_KEY_TYPE

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmapp-publish-mcp0.7.0

ツール

147

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
appIdstringはい

詳細

English | 한국어 | 中文 | 日本語

app-publish-mcp

npm version

App Store Connect と Google Play Console に対応した統合型 MCP(Model Context Protocol) サーバーです。アプリの掲載情報、スクリーンショット、リリース、レビュー、申請を、すべて AI アシスタントから管理できます。

公開範囲

リリース可能な状態で、適切に署名された Android の .aab / .apk または Apple の .ipa を用意してください。MCP はアップロードからメタデータ、テスト、レビュー申請、リリースまで、サポート対象のストア側の作業を処理します。アプリのコンパイルや署名鍵の管理は行わず、Xcode、Gradle、CI の代わりにもなりません。

新しいアプリの初回リリースには、App Store Connect または Play Console での手動セットアップが引き続き必要です。これには、開発者登録、契約、必要に応じたアプリレコード、API アクセス、署名、税務・銀行情報、ポリシー、プライバシー、コンテンツに関する申告が含まれます。既存の完全に設定済みの Android アプリでは、通常、署名済み AAB があれば MCP で更新ワークフローを実行できます。Google の編集内容のコミットで確定するのは要求された変更のみです。ストアの審査、公開の管理、段階的なロールアウトによって、一般公開が遅れることがあります。

使用する場面

次のような場合に、この MCP を使用します。

  • 「App Store の説明とキーワードを更新して」 — バージョンのローカライズ情報とアプリ情報のローカライズ情報を変更する
  • 「iPhone 16 Pro 用の新しいスクリーンショットをアップロードして」 — アセットライブラリにアップロードし、バージョンのローカライズ情報に画像を配置する
  • 「新しいバージョンを審査に提出して」 — バージョンを作成し、ビルドを割り当て、審査情報を設定して提出する
  • 「アプリの審査状況を確認して」 — バージョンの一覧を取得し、審査状況を確認する
  • 「Google Play のユーザーレビューに返信して」 — レビューの一覧を取得して返信する
  • 「Google Play で段階的リリースを作成して」 — 編集内容を作成し、トラックでリリースを作成してコミットする
  • 「TestFlight のベータテスターを管理して」 — グループを作成し、テスターを招待して、アクセスを管理する
  • 「アプリ内課金を設定して」 — 両プラットフォームで IAP とサブスクリプショングループを作成・管理する
  • 「開発用に新しいデバイスを登録して」 — デバイス、証明書、プロビジョニングプロファイルを管理する

機能

Apple App Store Connect(135 個のツール)
CategoryTools
App Managementapple_list_apps, apple_get_next_page, apple_get_app, apple_update_app, apple_get_app_info, apple_update_category
Bundle IDsapple_list_bundle_ids, apple_create_bundle_id
Bundle ID Capabilitiesapple_list_bundle_id_capabilities, apple_enable_capability, apple_disable_capability
Versionsapple_list_versions, apple_create_version, apple_update_version
Version Localizationsapple_list_version_localizations, apple_create_version_localization, apple_update_version_localization
App Info Localizationsapple_list_app_info_localizations, apple_update_app_info_localization
Asset Libraryapple_get_asset_library, apple_get_asset_specs, apple_list_assets, apple_get_asset, apple_wait_for_asset, apple_upload_asset, apple_list_asset_placements, apple_delete_asset
Asset Placementsapple_list_placements, apple_create_placement, apple_reorder_placements, apple_delete_placement
Legacy Screenshots (deprecated)apple_list_screenshot_sets, apple_create_screenshot_set, apple_upload_screenshot, apple_delete_screenshot
Buildsapple_list_builds, apple_get_build_upload, apple_wait_for_build_upload, apple_delete_build_upload, apple_upload_build, apple_set_build_encryption, apple_assign_build
Age Ratingapple_get_age_rating, apple_update_age_rating
Review Infoapple_update_review_detail
Submissionapple_submit_for_review, apple_cancel_submission
Releaseapple_release_version, apple_get_phased_release, apple_create_phased_release, apple_update_phased_release, apple_delete_phased_release
Pricing & Availabilityapple_get_pricing, apple_list_app_price_points, apple_set_price, apple_list_availability, apple_create_availability, apple_update_territory_availability
Customer Reviewsapple_list_reviews, apple_respond_to_review
Certificatesapple_list_certificates, apple_create_certificate, apple_revoke_certificate
Provisioning Profilesapple_list_profiles, apple_create_profile, apple_delete_profile
Devicesapple_list_devices, apple_register_device, apple_update_device
TestFlight Beta Groupsapple_list_beta_groups, apple_create_beta_group, apple_delete_beta_group, apple_add_beta_testers_to_group, apple_remove_beta_testers_from_group
TestFlight Beta Testersapple_list_beta_testers, apple_invite_beta_tester, apple_delete_beta_tester
In-App Purchasesapple_list_iap, apple_create_iap, apple_get_iap, apple_delete_iap
Subscription Groupsapple_list_subscription_groups, apple_create_subscription_group, apple_delete_subscription_group
Accessibility Declarationsapple_list_accessibility_declarations, apple_create_accessibility_declaration, apple_update_accessibility_declaration, apple_delete_accessibility_declaration
Price Pointsapple_get_subscription_price_points, apple_get_iap_price_points
Offer Codesapple_list_subscription_offer_codes, apple_get_subscription_offer_code, apple_create_subscription_offer_code, apple_list_iap_offer_codes, apple_get_iap_offer_code, apple_create_iap_offer_code
Win-Back Offersapple_list_win_back_offers, apple_get_win_back_offer
Custom Product Pagesapple_list_custom_product_pages, apple_get_custom_product_page, apple_create_custom_product_page, apple_update_custom_product_page, apple_delete_custom_product_page, apple_list_custom_product_page_versions, apple_create_custom_product_page_version, apple_update_custom_product_page_version, apple_list_custom_product_page_localizations, apple_create_custom_product_page_localization, apple_update_custom_product_page_localization, apple_delete_custom_product_page_localization
Product Page Optimizationapple_list_experiments, apple_get_experiment, apple_create_experiment, apple_update_experiment, apple_delete_experiment, apple_list_experiment_treatments, apple_create_experiment_treatment, apple_update_experiment_treatment, apple_delete_experiment_treatment, apple_list_treatment_localizations, apple_create_treatment_localization, apple_delete_treatment_localization
Sales & Finance Reportsapple_get_sales_report, apple_get_finance_report
App Analytics Reportsapple_list_analytics_report_requests, apple_create_analytics_report_request, apple_list_analytics_reports, apple_list_analytics_report_instances, apple_list_analytics_report_segments, apple_download_analytics_report
Review submission workflowapple_list_review_submissions, apple_get_review_submission, apple_create_review_submission, apple_add_review_submission_item, apple_submit_review_submission

apple_get_pricing は、すべての手動価格ページと自動価格ページをたどります。apple_set_price は手動価格のスケジュール全体を送信するため、維持する必要がある現在または将来の手動エントリをすべて含めてください。省略したエントリはスケジュールから削除される場合があります。

Apple のプロビジョニングリソース(Bundle ID、ケイパビリティ、証明書、プロファイル、デバイス)には、適切なアクセス権を持つ Team API キーが必要です。個人用 API キーは、サポート対象の App Store Connect の公開操作には使用できますが、これらのプロビジョニングリソースには使用できません。TestFlight の内部テスターは Apple の従業員ではなく、App Store Connect チームのメンバーです。

Google Play Console(53 個のツール)
カテゴリツール
編集のライフサイクルgoogle_create_edit、google_get_edit、google_commit_edit、google_validate_edit、google_delete_edit
アプリの詳細google_get_details、google_update_details
ストアの掲載情報google_list_listings、google_get_listing、google_update_listing、google_delete_listing
国別の提供状況google_get_country_availability
テスターgoogle_get_testers、google_update_testers
画像google_list_images、google_upload_image、google_delete_image、google_delete_all_images
トラックとリリースgoogle_list_tracks、google_get_track、google_create_release、google_promote_release、google_halt_release、google_list_release_statuses
バンドル/APKgoogle_list_bundles、google_upload_bundle、google_list_apks、google_upload_apk
データセーフティgoogle_update_data_safety
レビュー¹google_list_reviews、google_get_review、google_reply_to_review
アプリ内商品google_list_iap、google_get_iap、google_create_iap、google_update_iap、google_delete_iap
サブスクリプションgoogle_list_subscriptions、google_get_subscription、google_create_subscription、google_activate_subscription_base_plan、google_deactivate_subscription_base_plan
Android Vitals³google_query_vitals、google_list_vitals_anomalies、google_search_vitals_error_issues、google_search_vitals_error_reports
1 回限りの商品²google_list_one_time_products、google_get_one_time_product、google_create_one_time_product、google_update_one_time_product、google_delete_one_time_product、google_activate_purchase_option、google_deactivate_purchase_option

¹ Reviews API が返すのは、過去 7 日以内に作成または変更されたコメント付きの本番アプリのレビューのみです。コメントのない評価と、アルファ版/ベータ版のフィードバックは対象外です。pageToken を使ってもこの期間は延長されません。過去の履歴を確認するには、Play Console から CSV をエクスポートしてください。問題のトラブルシューティング時は レビューへの返信 権限を確認してください。ただし、結果が空であることだけでは、権限の問題とは断定できません。

² 1 回限りの商品(monetization.onetimeproducts)は、購入またはレンタルする商品向けの Google Play の新しい購入モデルで、従来の inappproducts API とは異なります。返された各購入オプションの状態を確認し、専用の有効化/無効化ツールを使用して状態を変更してください。

³ Vitals は Play Developer Reporting API を使用します。サービスアカウントの Cloud プロジェクトでこの API を有効にし、Play Console でそのアカウントに アプリ情報の閲覧 権限を付与してください。このスコープを追加する前に作成された OAuth トークンを保存している場合は、再度 app-publish-mcp auth google を実行する必要があります。

プロンプト(2 個)
プロンプト説明
app_release_checklistiOS および/または Android の署名済みアーティファクトのアップロードから、審査、リリース、公開状況の確認までを案内するチェックリスト
app_store_optimization現在の掲載情報のメタデータ(タイトル、説明、キーワード、スクリーンショット、ローカライズ)を確認し、実行可能な改善案を提示する ASO 監査
リソース(2)
URI説明
app-publish://config現在のサーバー設定 — 接続済みアカウント、認証方法、ツール数
app-publish://supported-platforms説明付きの、プラットフォーム別にまとめられたすべての対応ツール

セットアップ

1. インストール
npm install
npm run build
2. Apple 認証情報
  1. App Store Connect > Keys に移動します
  2. App Manager ロールで API キーを作成します(レポートには 2 つ目のキーが必要です。キーとロールを参照してください)
  3. .p8 ファイルをダウンロードします
  4. Key ID と、チームキーの場合は Issuer ID を控えます。個人キーの場合は、APPLE_KEY_TYPE=INDIVIDUAL を設定し、Issuer ID は省略します。
  5. Bundle ID、証明書、プロファイル、ケイパビリティ、またはデバイスのツールには、適切なアクセス権を持つ Team API キーを使用してください。
3. Google 認証情報

Google Play Android Developer API を有効にし、次の認証方法のいずれかを選択します。

  • サービスアカウント: Google Cloud Console で作成し、その JSON キーをダウンロードします。次に、Play Console の Users and permissions で、そのメールアドレスを招待し、必要なアプリの権限を付与します。
  • OAuth: Desktop OAuth クライアントを作成してから、次を実行します。
app-publish-mcp auth google --client-id=YOUR_ID --client-secret=YOUR_SECRET

OAuth コマンドは更新トークンを ~/.app-publish-mcp/google.json に保存します。サーバーはこれを自動的に読み込みます。代わりに、GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、GOOGLE_REFRESH_TOKEN を明示的に設定することもできます。

4. 環境を設定する
cp .env.example .env

.env を編集します。

APPLE_KEY_ID=YOUR_KEY_ID
APPLE_KEY_TYPE=TEAM
APPLE_ISSUER_ID=YOUR_ISSUER_ID
APPLE_P8_PATH=/path/to/AuthKey.p8
GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.json

任意:

APPLE_VENDOR_NUMBER=YOUR_VENDOR_NUMBER   # sales and finance reports
APPLE_REPORTS_KEY_ID=REPORTS_KEY_ID      # key for Sales/Finance/Analytics reports
APPLE_REPORTS_P8_PATH=/path/to/AuthKey_REPORTS.p8
APPLE_ADMIN_KEY_ID=ADMIN_KEY_ID          # analytics requests and finance/reporting fallback
APPLE_ADMIN_P8_PATH=/path/to/AuthKey_ADMIN.p8
APP_PUBLISH_READ_ONLY=true               # register only read tools (list/get/search/query/download, no Google edit creation or deletion)

追加キーについてはキーとロール、読み取り専用モードについては安全性を参照してください。

サーバーは、パッケージ/プロジェクトのルートから .env を自動的に読み込みます。シェルまたは MCP ホストから渡された環境変数が優先されます。OAuth 変数については、.env.example を参照してください。

5. Claude Code に追加する

~/.claude/settings.local.json に追加します。

{
  "mcpServers": {
    "app-publish-mcp": {
      "command": "node",
      "args": ["/path/to/app-publish-mcp/dist/index.js"],
      "env": {
        "APPLE_KEY_ID": "YOUR_KEY_ID",
        "APPLE_KEY_TYPE": "TEAM",
        "APPLE_ISSUER_ID": "YOUR_ISSUER_ID",
        "APPLE_P8_PATH": "/path/to/AuthKey.p8",
        "GOOGLE_SERVICE_ACCOUNT_PATH": "/path/to/service-account.json"
      }
    }
  }
}

キーとロール

Apple API キーで実行できる操作は、そのロールによって決まるため、1 つのキーでは足りないことがよくあります。リスティング操作が可能なキーではレポートの取得時に 403 が返され、レポート用のキーではリスティングを変更できません。

Apple の各ロールでできること
操作使用できるロール使用できないロール
リスティング、スクリーンショットとビジュアル、カスタムプロダクトページ、A/B テスト、バージョン、審査への提出、TestFlight、価格設定App Manager、AdminSales and Reports、Finance
Bundle ID、ケイパビリティ、証明書、プロファイル、デバイス適切なアクセス権を持つ Team キー(Admin で対応可能)個人キー
apple_get_sales_reportSales and Reports、Finance、AdminApp Manager(403)
apple_get_finance_reportFinance、AdminSales and Reports、App Manager(403)
App Analytics レポートの読み取りSales and Reports、Finance、AdminApp Manager(403)
apple_create_analytics_report_requestAdminSales and Reports、App Manager(403)

Apple は、アナリティクスと売上に関する表の内容をアナリティクスレポートに記載しています。レポートのエンドポイントを使用する前に、キーのロールとアプリへのアクセス権を確認してください。

1 つのサーバーで複数のキーを使う

メインキーは通常どおり設定し、必要に応じて追加のキーを設定します。各リクエストでは API に応じたキーが選択されます。サーバーが拒否されたリクエストを、より強いキーで再試行することはありません。

リクエスト使用されるキー
レポート以外のすべてメインキー(APPLE_KEY_ID、APPLE_P8_PATH)
売上レポート、アナリティクスレポートの読み取りAPPLE_REPORTS_*、なければ APPLE_ADMIN_*、それもなければメインキー
財務レポートAPPLE_ADMIN_*、なければ APPLE_REPORTS_*、それもなければメインキー
アナリティクスレポートリクエストの作成または削除APPLE_ADMIN_*、なければメインキー

APPLE_REPORTS_ISSUER_ID、APPLE_ADMIN_ISSUER_ID、および対応する *_KEY_TYPE の既定値には、メインキーの値が使われます。apple_get_sales_report と apple_get_finance_report には、APPLE_VENDOR_NUMBER(App Store Connect → Payments and Financial Reports)も必要です。

レシピ:恒久的な Admin キーなしでアプリ分析情報を取得する
  1. メインキー:App Manager。
  2. Sales and Reports キーを作成し、APPLE_REPORTS_KEY_ID / APPLE_REPORTS_P8_PATH を設定します。
  3. 一時的な Admin キーを作成し、APPLE_ADMIN_KEY_ID / APPLE_ADMIN_P8_PATH を設定して、サーバーを再起動し、アプリごとに apple_create_analytics_report_request を 1 回呼び出します(ONGOING)。
  4. App Store Connect で Admin キーを失効させ、APPLE_ADMIN_* 変数を削除します。リクエストはレポートを生成し続け、Sales and Reports キーでレポートを読み取れます。

Apple は 1~2 日後に最初のレポートインスタンスを生成し、各インスタンスを 35 日間保持します。apple_list_analytics_reports → apple_list_analytics_report_instances → apple_download_analytics_report の順に呼び出してダウンロードします。

Google

1 つのサービスアカウントで公開とバイタル情報の両方に対応できます。公開には Google Play Android Developer API、バイタル情報には Google Play Developer Reporting API を有効にし、Play Console でアカウントに必要なアプリの権限を付与します。バイタル情報には アプリ情報の表示 が必要です。

トラブルシューティング
応答通常の原因
401 NOT_AUTHORIZEDKey ID、Issuer ID、.p8 の誤り、またはキーが失効しています。時計のずれを許容するため、トークンは 60 秒前の時刻で発行されます。システム時計を同期してください。
403 FORBIDDEN_ERROR "The API key in use does not allow this request"キーのロールではこの操作を実行できません。ロールの表を確認し、APPLE_REPORTS_* または APPLE_ADMIN_* を追加してください。
売上または財務レポートで 404 NOT_FOUNDその日付または地域のデータがありません。たとえば、無料アプリには財務レポートがありません。
売上レポートで 400 PARAMETER_ERRORベンダー番号が間違っているか、reportSubType / version が reportType に適合していません。
Google のバイタル情報に行が返されないその期間にアプリのバイタル情報データがありません。新しいアプリやトラフィックの少ないアプリではよくあることです。

安全性

ほとんどのツールは、実際のストアデータを変更します。アシスタントに呼び出させる前に、どのツールが該当するか確認してください。

ユーザーに公開する、またはAppleの審査を開始する

  • apple_submit_for_review、apple_release_version、apple_create_phased_release / apple_update_phased_release
  • apple_update_experimentでstarted=trueを指定すると、実際の訪問者に表示されるプロダクトページテストが開始されます
  • google_commit_editは編集内容をすべて公開します。google_create_release、google_promote_release、google_halt_releaseはコミット時に反映されます

料金と提供状況

  • apple_set_price(手動の価格スケジュール全体を置き換えます)、apple_create_availability、apple_update_territory_availability
  • アプリ内購入、サブスクリプション、基本プラン、買い切り商品、プロモーションコードの作成、変更、有効化、無効化

公開テキスト

  • apple_respond_to_reviewとgoogle_reply_to_reviewは、誰でも読める返信を投稿します

取り消し不可

  • すべてのapple_delete_*ツール、google_delete_listing、google_delete_all_images、google_delete_iap、google_delete_one_time_product
  • apple_revoke_certificate:その証明書で署名されたビルドはインストールできなくなります

推奨事項

  • 監視とレポートには、読み取り専用のサーバーを別途実行します:APP_PUBLISH_READ_ONLY=true。ストア読み取りツール、アセットのポーリング、Googleの編集内容の検証が登録されます。Googleの編集の作成と削除は対象外です。新しい編集を作成すると、そのユーザーの既存のリリース下書きが無効になる可能性があります。編集に紐づく読み取りでは、既存のeditIdを明示的に指定してください。このモードでは、サーバーが編集を作成したり、クリーンアップしたりすることはありません。空文字列、0、false、no、off以外の値を指定すると有効になります。outputPathを受け取るレポートツールは、引き続きローカルファイルに書き込みます。overwrite=trueを指定しない限り、既存のファイルは上書きされません。
  • 各キーには必要な作業を行える最小限のロールを付与し、一時的なAdminキーは使用後に取り消します。
  • Google Playでは、編集内で変更を加え、google_validate_editで確認してからコミットします。google_delete_editは編集内容を破棄します。
  • 書き込みツールでは、MCPクライアントのツール承認を有効にしておきます。

**モックのみでテスト済み:**カスタムプロダクトページとプロダクトページ最適化向けの書き込みツールは、AppleのOpenAPI 4.5.1スキーマに準拠しており、テストで検証済みですが、実際のアカウントではまだ実行されていません。まずテストアプリで試してください。

使用例

アセット、カスタムページ、プロダクトページテストを送信する

apple_create_review_submissionを使って下書きを作成するか(既存の下書きを探すにはapple_list_review_submissionsを使用)、画像/動画、カスタムプロダクトページのバージョン、またはv2実験をapple_add_review_submission_itemで追加します。apple_get_review_submissionで確認してから、完全なレビューアイテムIDをapple_submit_review_submissionに渡します。アイテムを追加しても送信されません。App Reviewが始まるのは最後の手順を実行したときだけです。呼び出しが中断された場合、確認や再試行に使えるよう、送信IDは保持されます。審査対象となるかどうかはAppleが決定します。アプリの初回リリースでは、送信内容にアプリバージョンが必要です。送信済みのページ/テスト/バージョンに割り当てられたアセットは、そのアイテムと一緒に審査されます。既存のapple_submit_for_reviewは、引き続きアプリバージョンのリリースに使用します。

レポートのダウンロードは、1レスポンスあたり32 MiB、展開/結合後のテキストは64 MiBまでです。Analyticsセグメントについては、AppleからMD5が提供されている場合に照合されます。失敗時に署名付きURLが返されることはありません。保存されるレポートは、overwrite=trueを指定しない限り、排他的作成で保存されます。

ビルドのアップロードでは、サポート対象のMD5転送チェックサムを使用し、任意のローカルなexpectedSha256アーティファクト整合性チェックも保持されます。これは、Appleが文書化しているSHA-256チェックサムアルゴリズムがサポートされていないことを意味するものではありません。

Apple のスクリーンショットやプレビュー動画をアップロードして配置する
  1. apple_get_asset_library(appId) はアプリのライブラリ ID を返します。apple_get_asset_specs を使用して、現在の仕様、対応する配置タイプ、配置グループを選択してください。デバイスの寸法やグループ識別子を推測しないでください。
  2. apple_upload_asset は、assetLibraryId、mediaType(IMAGE または VIDEO)、filePath、expectedSpecId を受け取ります。Apple の仕様に照らしてファイルの拡張子とサイズを検証し、すべてのパーツをアップロードしてコミットした後、デフォルトで処理の完了を待ちます。動画では previewFrameTimeCode も指定できます。
  3. 処理がタイムアウトするか失敗した場合は、返されたアセット ID を保持し、apple_get_asset / apple_wait_for_asset で確認してください。重複してアップロードしないでください。waitForProcessing=false を指定すると早く応答が返りますが、配置には準備完了状態のアセットが必要です。
  4. apple_create_placement は、選択した placementType と placementGroup を使用して、アセットを localizationId に関連付けます。デフォルトの targetType は appStoreVersionLocalizations です。カスタムプロダクトページ、テスト処理、アプリ内イベントにも対応しています。同じ配置を繰り返すと、既存の配置が再利用されます。
  5. apple_list_placements で配置を確認し、希望するグループ内のすべての配置 ID を順序どおりに apple_reorder_placements に渡します。アプリ内イベントでは、この並べ替えエンドポイントはサポートされていません。
  6. apple_delete_placement は配置のみを削除します。apple_list_asset_placements ではアセットの使用箇所をすべて確認できます。使用中のアセットは apple_delete_asset で削除できません。

Apple は App Store Connect API 4.5.1 で従来のスクリーンショットエンドポイントを非推奨にしました。既存の 4 つのスクリーンショットツールは互換性のために引き続き利用できます。Apple は提供終了日を発表していません。新しい作業には Asset Library ワークフロー を使用してください。韓国の年齢レーティングの上書きでは、ALL と TWELVE_PLUS もサポートされるようになりました。

ヘッダーと検索結果のビジュアル、カスタムプロダクトページ、A/B テスト

App Store のプロダクトページのヘッダーと検索結果のビジュアルは、Asset Library の配置(PRODUCT_PAGE_HEADER_ASSET、APP_STORE_SEARCH_RESULTS_ASSET)です。apple_get_asset_specs(placementType=...) で仕様を選び、apple_upload_asset でアップロードしてから、apple_create_placement を実行します。同じ配置は、カスタムプロダクトページのローカライズ(apple_create_custom_product_page → apple_list_custom_product_page_localizations)とテスト処理(apple_create_experiment → apple_create_experiment_treatment → apple_create_treatment_localization)でも使用できます。

ストア分析

apple_create_analytics_report_request は Apple に App Analytics レポートの生成を依頼します。最初のレポートは 1~2 日後に利用できるようになります。その後、apple_list_analytics_reports → apple_list_analytics_report_instances → apple_download_analytics_report の順に実行します(ファイル全体を保存するには outputPath を渡してください)。apple_get_sales_report は、日ごとの販売数と収益を返します。Android では、google_query_vitals はデフォルトで直近 28 日間のクラッシュ率と ANR 率を返します。

iOS アプリのアップデートを申請する
1. apple_list_apps → get the app ID
2. apple_create_version / apple_update_version and localization tools → prepare version 1.1.0, release settings, and metadata
3. apple_upload_build → upload the signed IPA and wait for import
   (or resume with apple_get_build_upload / apple_wait_for_build_upload)
   If an ambiguous commit error retains a buildUploadId, inspect it with apple_get_build_upload; when it is AWAITING_UPLOAD or FAILED, delete it with apple_delete_build_upload before uploading again.
4. apple_set_build_encryption → answer export-compliance encryption for the imported build
   (`true` can still require a manual encryption declaration, supporting documents, and appEncryptionDeclaration linkage in App Store Connect.)
5. apple_assign_build → attach the imported build to the version
6. apple_update_review_detail and apple_get_age_rating → verify review metadata
7. apple_submit_for_review → submit for App Review
8. For an update (not a first version), optionally configure a seven-day phased release before release.
9. After approval, use apple_release_version only for PENDING_DEVELOPER_RELEASE; then monitor or manage any phased release.
Android アプリをリリースする
1. google_create_edit → start an edit (or google_get_edit to verify a resumed edit)
2. google_list_bundles / google_list_apks → reuse an artifact already in the edit when possible
3. google_upload_bundle / google_upload_apk → upload only when the artifact is missing
4. Listing tools and google_update_data_safety → apply reviewed store changes as needed
5. google_create_release → create the target-track release with the exact versionCodes set
6. google_validate_edit → check for errors
7. google_commit_edit → commit changes for Play processing
8. google_list_release_statuses → inspect review and publishing state after commit

編集をコミットしても、すぐに一般公開されるとは限りません。Google Play の審査、管理対象の公開、段階的な公開の設定が引き続き適用されます。

Google Play のアプリ内商品を管理する
1. google_list_iap → list all products
2. google_create_iap → create a new managed product
3. google_update_iap → update price or description
4. google_delete_iap → remove a product
Google Play のサブスクリプションを作成する
1. google_create_subscription → create the subscription with listings and a
   base plan (billing period, grace period, regional pricing in micros).
   The base plan is created in DRAFT state.
2. google_activate_subscription_base_plan → flip the base plan to ACTIVE so
   it becomes purchasable in the Play Store.
3. google_deactivate_subscription_base_plan → pause sales without deleting
   the plan.
4. There is no supported subscription archive operation. Keep all base plans
   deactivated when retiring a previously published subscription.

google_create_subscription の引数の例:

{
  "packageName": "com.example.app",
  "productId": "com.example.app.pro_monthly",
  "listings": [
    {
      "languageCode": "en-US",
      "title": "Pro Monthly",
      "description": "Unlock all premium features.",
      "benefits": ["Ad-free", "Cloud sync", "Priority support"]
    }
  ],
  "basePlans": [
    {
      "basePlanId": "pro-monthly",
      "autoRenewing": {
        "billingPeriodDuration": "P1M",
        "gracePeriodDuration": "P3D",
        "accountHoldDuration": "P30D"
      },
      "regionalConfigs": [
        { "regionCode": "US", "priceMicros": "3990000", "currency": "USD" },
        { "regionCode": "TR", "priceMicros": "99000000", "currency": "TRY" }
      ]
    }
  ]
}

価格は マイクロ単位(1 USD = 1,000,000 マイクロ)で指定し、内部で Play API の Money 形式(units + nanos)に変換されます。regionsVersion のデフォルトは 2022/02 です。地域別の価格を指定する場合、現在 Play API ではこの値が必要です。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。