google-play-developer-mcp について
google-play-developer-mcpは、Android Publisher API v3とPlay Developer Reporting API v1beta1をMCPクライアントに提供します。Google Playアプリの管理や指標の確認を行うチーム向けで、リリース、商品、定期購入、レビュー、クラッシュレポートに加え、複数アカウントを扱えます。
主な機能
- 01アプリの編集、トラック、段階的リリースの管理
- 02ストア掲載情報、画像、アプリバンドルの管理
- 03一回限りの商品、定期購入、購入の管理
- 04レビューの確認と返信
- 05クラッシュ、ANR、パフォーマンス指標の取得
- 06Play Consoleアカウントの登録と切り替え
活用シーン
- 01ビルドを内部テストまたは本番トラックへ公開
- 02ストアの説明文やスクリーンショットを更新
- 03定期購入プランの管理と購入トークンの検証
- 04レビューへの返信やクラッシュ・ANRの調査
MCP 対応
MCPサーバーは、Android Publisher API v3とPlay Developer Reporting API v1beta1のツールをクライアントに提供し、両APIの非推奨でないエンドポイントを扱います。サービスアカウントの認証情報でアカウントを登録し、複数アカウントを設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
157掲載時のツール一覧 · 1 週間前に更新
このツールにパラメーターはありません。
詳細
google-play-developer-mcp
Google Play 向けの包括的な Model Context Protocol(MCP)サーバーです。 157 個のツールを備えています。Android Publisher API v3 と Play Developer Reporting API v1beta1 の全機能を網羅し、非推奨のエンドポイントはありません。Claude、Cursor、VS Code Copilot、Gemini CLI、その他あらゆる MCP クライアントで動作します。
こちらもご覧ください: app-store-connect-mcp — Apple の App Store Connect 向けに、同じ理念で開発されたプロジェクトです。
目次
このプロジェクトの背景
Google Play Console には API がありますが、対象範囲は広く、頻繁に変化します。既存のコミュニティ製 MCP は、それぞれ機能の一部をカバーしているだけです。ストアの掲載情報を扱うもの、リリースを扱うもの、レビューを扱うものがありますが、どれも Google の非推奨化への対応が遅れています。
google-play-developer-mcp は、すべてを網羅する MCP です。
| 項目 | このサーバー | 一般的なコミュニティ製 MCP |
|---|---|---|
| Android Publisher API v3 | ✅ 全機能 | 一部 |
| Play Developer Reporting API | ✅ 全機能 | ❌ 非対応 |
monetization.onetimeproducts(2025 年以降のカタログ) | ✅ | 非推奨の inappproducts を使用 |
purchases.subscriptionsv2 / productsv2 | ✅ | 依然として v1 を使用するものが多い |
| 2026 年の機能(OfferPhase、cancel/defer、priceStepUp) | ✅ | ❌ |
| 複数アカウント | ✅ | 通常は 1 つのみ |
| 認証情報の安全性 | リポジトリにキーを含めず、厳格な .gitignore を設定 | さまざま |
| semver に基づく一般公開 | ✅ v1.0.0 | ほとんどが v1.0 未満 |
AI アシスタントを使って Google Play Console を操作する場合(リリースの自動化、レビューのトリアージ、サブスクリプションカタログの管理、クラッシュのトリアージなど)、これをインストールすれば、アシスタントが使えるツール一式がそろいます。
機能一覧
33 グループにわたる 157 個のツールを収録しています。両 API の非推奨ではないエンドポイントをすべて網羅しています。
Android Publisher API v3
| グループ | ツール | 対応内容 | |---|---|---| | `accounts_*` | 6 | ローカルレジストリ — 複数の Play Console アカウントの追加/一覧表示/切り替え/削除/更新 | | `auth_*` | 1 | サービスアカウントがトークンを取得できることを確認 | | `apps_*` | 2 | サービスアカウントが参照できるすべてのアプリを一覧表示し、アプリの詳細を取得 | | `edits_*` | 5 | マネージド公開トランザクション:`insert`、`get`、`validate`、`commit`、`delete` | | `details_*` | 3 | アプリ単位の問い合わせ用メールアドレス/電話番号/ウェブサイト、デフォルト言語 | | `country_availability_*` | 1 | 編集内での国ごとの提供状況 | | `listings_*` | 6 | ロケールごとのタイトル/短い説明/詳細な説明/動画。`delete_all` を含む | | `images_*` | 4 | アイコン、フィーチャー グラフィック、プロモーション グラフィック、スマートフォン/タブレット/テレビ/ウェアラブル向けスクリーンショット。一覧表示、アップロード、削除、すべて削除 | | `bundles_*` | 2 | Android App Bundle(AAB)のアップロードと一覧表示 | | `apks_*` | 3 | APK のアップロード/一覧表示、および外部ホスト APK の登録(エンタープライズ) | | `deobfuscation_files_*` | 1 | ProGuard/ネイティブコードのマッピングをアップロード | | `expansion_files_*` | 4 | OBB — 取得/アップロード/更新/パッチ適用 | | `tracks_*` | 5 | `internal`、`alpha`、`beta`、`production`、およびカスタムのクローズド テスト トラック。一覧表示、取得、更新、パッチ適用、作成 | | `testers_*` | 3 | 内部/クローズド トラック用の Google グループの許可リスト | | `onetime_products_*` | 17 | ✨ サブスクリプション以外の商品の新しい収益化カタログ。3 階層構造:商品 → 購入オプション → オファー。3 階層すべてで完全な CRUD と一括操作に対応 | | `subscriptions_*` | 8 | サブスクリプション カタログ:一覧表示、作成、更新、削除、アーカイブ、一括取得、一括更新 | | `subscription_base_plans_*` | 7 | 月間/年間プラン。有効化、無効化、価格の移行、一括移行、一括更新、および状態 | | `subscription_offers_*` | 10 | 無料トライアル/導入価格。作成、更新、削除、有効化、無効化、および一括操作 | | `monetization_convert_region_prices` | 1 | 1 つの入力価格から比較可能な地域別価格を計算 | | `purchases_products_v2_*` | 1 | 1 回限りの商品購入を確認(複数の購入オプションとオファーに対応) | | `purchases_products_*` | 2 | 1 回限りの購入を承認/消費(`productsv2` で公開されるのは `get` のみ) | | `purchases_subscriptions_v2_*` | 4 | 取得、取り消し、キャンセル、延期。2026 年の `OfferPhase`、`outOfAppPurchaseContext`、価格段階引き上げへの同意、アイテム単位の払い戻しを含む | | `purchases_subscriptions_acknowledge` | 1 | v1 の承認(維持 — 初回購入の承認には引き続き適切な呼び出しです) | | `purchases_voided_list` | 1 | 払い戻し/チャージバックのフィード | | `orders_*` | 5 | 一覧表示、取得、一括取得、払い戻し、払い戻し審査(`get` と一括取得は 2025-05 に追加、`review_refund` は共同チャージバック対応のため 2026-07 に追加) | | `external_transactions_*` | 3 | 代替課金(韓国/EU)— 取得/作成/払い戻し | | `reviews_*` | 3 | 一覧表示、取得、返信 | | `users_*` + `grants_*` | 7 | チームメンバーとアプリごとの権限付与 | | `device_tier_configs_*` | 3 | AAB のデバイス階層ターゲティング | | `app_recovery_*` | 5 | 復旧アクション:一覧表示、作成、デプロイ、キャンセル、ターゲティングの追加 | | `generated_apks_*` | 2 | AAB から生成された APK の一覧表示とダウンロード | | `system_apks_variants_*` | 4 | プリロードのシナリオ向けのシステム APK バリアント | | `internal_app_sharing_*` | 2 | 内部リンク共有用の APK または AAB のアップロード |Play Developer Reporting API v1beta1
| グループ | ツール | 対象 | |---|---|---| | `reports_apps_*` | 2 | `search`、`fetch_release_filter_options` | | `reports_anomalies_list` | 1 | すべての指標セットで検出された異常 | | `reports_crash_rate_*` | 2 | クラッシュ率 — メタデータ+時系列クエリ | | `reports_anr_rate_*` | 2 | ANR 率 | | `reports_slow_start_rate_*` | 2 | 起動の遅延(コールド起動) | | `reports_slow_rendering_rate_*` | 2 | レンダリングの遅延(ジャンク) | | `reports_excessive_wakeup_rate_*` | 2 | バッテリー — 過剰なウェイクアップ | | `reports_stuck_background_wake_lock_rate_*` | 2 | バッテリー — 解放されないウェイクロック | | `reports_lmk_rate_*` | 2 | 低メモリキラー率 | | `reports_anon_rss_swap_memory_*` | 2 | 匿名 RSS +スワップメモリの使用量 | | `reports_bitmap_memory_*` | 2 | ビットマップメモリの使用量 | | `reports_errors_counts_*` | 2 | エラー数の集計 | | `reports_errors_issues_search` | 1 | グループ化された ErrorIssue の検索 | | `reports_errors_reports_search` | 1 | 生の ErrorReport の検索 |クイックスタート
npm install -g google-play-developer-mcp
次に、MCP クライアントの設定(例:~/.config/claude/config.json、Cursor MCP 設定、または VS Code の mcp.json)に追加します。
{
"mcpServers": {
"google-play-developer": {
"command": "google-play-developer-mcp"
}
}
}
次に、使用する Play Console アカウントをサーバーに指定します。以下のステップごとのセットアップガイドを参照してください。
ステップごとのセットアップ
1. Google Cloud サービスアカウントを作成する
- Google Cloud Consoleを開きます。
- プロジェクトを選択または作成します(どのプロジェクトでもかまいません。サービスアカウントを配置するためだけに使用します)。
- API とサービス → ライブラリで、次の両方を有効にします。
- Google Play Android Developer API
- Google Play Developer Reporting API
- IAM と管理 → サービスアカウント → サービスアカウントを作成を選択します。
- 作成後、アカウントを開き、鍵 → 鍵を追加 → JSONを選択します。JSON ファイルをダウンロードします。
- JSON ファイルを安全な場所に移動し、Git リポジトリの外に保管します。おすすめの保存先:
~/.config/google-play-developer-mcp/service-account.json。
2. Play Console でサービスアカウントを承認する
- Play Consoleを開きます。
- ユーザーと権限 → 新しいユーザーを招待を選択します。サービスアカウントのメールアドレス(
[email protected]のような形式)を貼り付けます。 - 権限を割り当てます。
- すべての機能を利用するには、**管理者(すべての権限)**を選択します。
- または、MCP で実行できる操作を制限する場合は、より限定的な権限(アプリ情報の表示、ストアの掲載情報の管理、注文と定期購入の管理など)を組み合わせます。
- **最大 24 時間待ちます。**Play Console で新しい承認が反映されるまで時間がかかります。よくある注意点です。初期の API 呼び出しで
PERMISSION_DENIEDが返される場合は、通常これが原因です。
3. MCP サーバーにアカウントを登録する
サーバーを設定済みの MCP クライアントを起動し、次を実行します。
accounts_add --name my-app \
--keyFile /Users/you/.config/google-play-developer-mcp/service-account.json \
--description "My company's Play Console"
(または、手動で ~/.google-play-developer-mcp/accounts.json を作成します。ファイル形式については以下を参照してください。)
4. 確認する
auth_status
{ ok: true, email: "..." }が返されるはずです。
apps_list
サービスアカウントから参照できるアプリの一覧が表示されます。
MCP クライアントへの登録
Claude Desktop
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"google-play-developer": {
"command": "google-play-developer-mcp"
}
}
}
Claude Code
claude mcp add google-play-developer google-play-developer-mcp
または、~/.claude.jsonを編集します。
{
"mcpServers": {
"google-play-developer": {
"command": "google-play-developer-mcp"
}
}
}
Cursor
設定 → MCP → 新しい MCP サーバーを追加:
{
"google-play-developer": {
"command": "google-play-developer-mcp"
}
}
VS Code(GitHub Copilot エージェントモード)
.vscode/mcp.json:
{
"servers": {
"google-play-developer": {
"type": "stdio",
"command": "google-play-developer-mcp"
}
}
}
Gemini CLI / Codex CLI / Windsurf / Continue
MCP 準拠のクライアントであれば、同じcommandエントリを使用できます。グローバルにインストールされたgoogle-play-developer-mcpバイナリを指定します(ソースから実行する場合は、node /path/to/dist/index.jsを指定します)。
ソースから実行する(npm install -gなし)
git clone https://github.com/devinwang/google-play-developer-mcp.git
cd google-play-developer-mcp
npm install
npm run build
次に、MCP クライアントの設定に追加します。
{
"mcpServers": {
"google-play-developer": {
"command": "node",
"args": ["/absolute/path/to/google-play-developer-mcp/dist/index.js"]
}
}
}
使用例
新しいビルドを内部テストにリリースする
accounts_switch --name my-app
# Open an edit, upload bundle, route it to the internal track, commit.
edits_insert --packageName com.example.app
# → { id: "EDIT_ID", expiryTimeSeconds: "..." }
bundles_upload --packageName com.example.app --editId EDIT_ID \
--file /path/to/app-release.aab
# → { versionCode: 47, sha256: "..." }
tracks_update --packageName com.example.app --editId EDIT_ID \
--track internal \
--releases '[{"versionCodes":["47"],"status":"completed","releaseNotes":[{"language":"en-US","text":"Fixes a crash on startup."}]}]'
edits_commit --packageName com.example.app --editId EDIT_ID
ベータ版のリリースを段階的に公開して本番環境に昇格させる
edits_insert --packageName com.example.app
# → EDIT_ID
# Promote the beta versionCodes to production with 10% staged rollout.
tracks_update --packageName com.example.app --editId EDIT_ID \
--track production \
--releases '[{"versionCodes":["47"],"status":"inProgress","userFraction":0.1}]'
edits_commit --packageName com.example.app --editId EDIT_ID
レビューに返信する
reviews_list --packageName com.example.app --maxResults 50
# → { reviews: [{ reviewId, authorName, comments, ... }] }
reviews_reply --packageName com.example.app --reviewId REVIEW_ID \
--replyText "Thanks for the feedback! The crash is fixed in v1.2 — please update."
無料試用の特典付き定期購入を作成する
# 1. Create the subscription (product)
subscriptions_create --packageName com.example.app --productId plus_monthly \
--subscription '{"listings":[{"languageCode":"en-US","title":"Plus","benefits":["All premium features"]}],"taxAndComplianceSettings":{"taxTier":"TAX_TIER_UNSPECIFIED"}}'
# 2. Create a base plan
subscription_base_plans_batch_update --packageName com.example.app --productId plus_monthly \
--requests '[{"basePlan":{"basePlanId":"monthly","autoRenewingBasePlanType":{"billingPeriodDuration":"P1M","accountHoldDuration":"P30D"},"state":"DRAFT","regionalConfigs":[{"regionCode":"US","price":{"currencyCode":"USD","units":"9","nanos":990000000}}]},"updateMask":"autoRenewingBasePlanType,regionalConfigs"}]'
# 3. Activate the base plan
subscription_base_plans_activate --packageName com.example.app \
--productId plus_monthly --basePlanId monthly
# 4. Create a 7-day free-trial offer
subscription_offers_create --packageName com.example.app --productId plus_monthly \
--basePlanId monthly --offerId new-user-trial \
--offer '{"phases":[{"duration":"P7D","regionalConfigs":[{"regionCode":"US","free":true}]}],"state":"DRAFT"}'
subscription_offers_activate --packageName com.example.app \
--productId plus_monthly --basePlanId monthly --offerId new-user-trial
購入トークンをサーバー側で検証する(バックエンドでの使用例)
# For a one-time product (consumable or non-consumable)
purchases_products_v2_get --packageName com.example.app --token PURCHASE_TOKEN
# For a subscription — includes 2026 OfferPhase, priceChangeState, etc.
purchases_subscriptions_v2_get --packageName com.example.app --token PURCHASE_TOKEN
クラッシュのトリアージ
reports_crash_rate_query \
--name "apps/com.example.app/crashRateMetricSet" \
--dimensions '["versionCode","countryCode"]' \
--metrics '["crashRate","distinctUsers"]' \
--timelineSpec '{"aggregationPeriod":"DAILY","startTime":{"year":2026,"month":4,"day":1},"endTime":{"year":2026,"month":4,"day":8}}'
reports_errors_issues_search --parent "apps/com.example.app" \
--filter "errorIssueType = \"CRASH\""
ツールリファレンス
すべてのツールは、Android Publisher の URL 構造に準拠した resource_action 形式の snake_case 名を使用します。グループの全体像については、機能マトリックスをご覧ください。
各ツールは、引数として JSON オブジェクトを受け取ります。正確な形式を確認するには、MCP クライアントのスキーマを調べてください(Claude Code:/mcp tools、Claude Desktop:チャットでツール一覧を表示、Cursor:MCP パネル)。
複雑な本文引数(例:subscription、offer、appRecoveryAction、subscription の releases)は、Google がドキュメントで定義している JSON スキーマをそのまま受け付けます。公式リファレンスをご覧ください。
セキュリティ
このリポジトリには、認証情報は一切含まれていません。サービスアカウントの JSON キーはご自身で用意してください。サーバーに記録されるのはそのパスだけです。
ディスク上に保存されるものと、保存されないもの:
| 場所 | 内容 |
|---|---|
~/.google-play-developer-mcp/accounts.json | アカウント名、キーファイルのパス、説明。秘密情報は含まれません。0600 権限で作成されます。 |
~/.config/…/service-account.json(ご自身で配置) | 実際の Google Cloud サービスアカウント JSON。コミットされることはありません。 どのツールからも出力されません。 |
| リポジトリの内容 | コードのみ。 |
.gitignore のブロック対象
*.json.key、*service-account*.json、*service_account*.json、*-sa.json、*-sa-key.jsongcp-key*.json、google-credentials*.json、play-credentials*.json.env、.env.*(ただし.env.exampleは保持)accounts.json、credentials/、keys/、secrets/*.pem、*.p12、*.pfx、*.key、id_rsa*
推奨されるセキュリティ対策
- サービスアカウントの JSON は、マシン上のどの Git リポジトリの外にも保管してください。
- ワークフローに必要な最小限のロールをサービスアカウントに付与してください。完全な管理者権限を付与すると、MCP にアプリのメタデータを削除する権限が与えられます。必要な権限だけを付与してください。
- サービスアカウントキーは毎年ローテーションしてください。Google Cloud Console で古いキーを削除し、新しいキーを作成してから、
accounts_update --keyFile <newPath>を実行します。 auth_statusが実際のトークンを返すことはありません。返されるのはブール値とサービスアカウントのメールアドレスのみです。
監査証跡
Android Publisher API に対するすべての書き込み操作は、Google Cloud IAM によってサービスアカウントの ID のもとで記録されます。不正使用が疑われる場合は、Cloud Console の IAM → Audit Logs で呼び出されたエンドポイントを確認できます。
設計上の注意点
- 編集セッション対応。 Android Publisher API に対するすべての書き込みは、編集内で実行されます。サーバーは
edits_insert/edits_commit/edits_deleteを直接公開しているため、複数のツール呼び出しにまたがって編集を開いたままにできます。これは最も一般的な複数ステップのフローです。コミットし忘れても、何も公開されません。デフォルトで安全です。 - 複数アカウント対応。 1 つのサーバープロセスで、多数の Play Console アカウントを管理できます。
accounts_switchで切り替えます。状態は~/.google-play-developer-mcp/accounts.jsonに保存されます。 - 非推奨エンドポイント不使用。 カタログのエンドポイントでは、非推奨の
inappproductsではなくmonetization.onetimeproductsを使用します。購入の検証ではpurchasesV2/subscriptionsV2を使用します。 - 将来互換性のある型。 Google が API 機能を
googleapisの TypeScript 型定義より先にリリースした場合は、publisherAny()/reportingAny()を介してキャストします。HTTP 呼び出しは同一で、既知の差異がある箇所では TypeScript の静的チェックのみをスキップします。 - 分かりやすいエラーメッセージ。 Google API のすべてのエラーを変換します。401 は「トークンが正しくありません」、403 は「権限が反映されていません。24 時間お待ちください」、429 は「クォータを使い切りました」などのメッセージになります。
- ステートレスなトランスポート。 サーバーは stdio を使用し、ネットワークリスナーはなく、アカウントファイル以外に永続状態を保持しません。
- テレメトリーなし。 サーバーが外部にデータを送信することはありません。
コントリビューション
PR を歓迎します。提出前に、以下をご確認ください。
npm run typecheckが成功すること(CI でも実行されます)- issue や PR にサービスアカウントキーやトークンを絶対に含めないでください。再現手順を共有する必要がある場合は、トークンを伏せてください(
X-Goog-Api-Client: ...REDACTED...)。 - 新しいツールは
resource_actionの命名規則に従ってください。 - 新しい API サーフェスにアクセスするツールを追加する場合は、ドキュメントとの整合性を保つため、機能マトリックス に追加してください。
バージョン履歴
0.2.0 — 2026-10-21
- MCP ツール 157 個(+7)。新規:
orders_review_refund、purchases_products_acknowledge、purchases_products_consume、reports_anon_rss_swap_memory_{get,query}、reports_bitmap_memory_{get,query}。 googleapisを 171 から 187 にアップグレードしました。
0.1.0 — 2026-04-20(初回公開リリース)
- MCP ツール 150 個で、Android Publisher API v3 と Play Developer Reporting API v1beta1 の全機能を網羅しています。
- 最新世代のエンドポイントのみを使用します。
monetization.onetimeproducts(非推奨のinappproductsを置き換え)、purchases.productsv2/subscriptionsv2(v1 を置き換え)を使用します。 - 2026 年の機能。
SubscriptionPurchaseV2.offerPhase、purchases.subscriptionsv2.cancel/defer、orders.batchGet、offerPhaseDetails、価格の段階的引き上げへの同意、outOfAppPurchaseContext。 - オンディスクレジストリによる複数アカウントのサポート。
- リポジトリに認証情報は一切含まれていません。包括的な
.gitignoreを備えています。 - 一般的な Google API のエラーケースすべてに対応したエラーの変換。
参考資料
- Google Play Android Developer API v3 — REST リファレンス
- Play Developer API リリースノート
- Play Developer Reporting API v1beta1 — REST リファレンス
monetization.onetimeproductsリファレンスpurchases.subscriptionsv2リファレンス- Model Context Protocol 仕様
- Anthropic Claude MCP ドキュメント
ライセンス
MIT — LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。