google-play-developer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| accounts_listA | List every Play Console account registered with the MCP server (names + key-file paths, no secrets). |
| accounts_currentA | Show which account is currently active. All subsequent API calls target this account. |
| accounts_addA | Register a new Play Console account. Provide a local filesystem path to a Google Cloud service-account JSON key. The key stays on disk — the MCP only records its path. |
| accounts_removeB | Remove an account from the local registry. Does NOT delete the key file. |
| accounts_switchB | Make an existing registered account the active one. |
| accounts_updateB | Change the key-file path or description of an existing account. |
| auth_statusA | Verify that the active account can acquire a Google OAuth token. Returns the service-account email plus whether a token was obtained. |
| apps_listB | List every Android app the active service account can access. Uses the Play Developer Reporting API's apps.search. |
| apps_getA | Open a fresh edit and return the details resource (contact email/phone/website + default language) for one app. |
| edits_insertA | Open a new edit session for an app. Returns the edit id plus its expiry. Subsequent edits.* tool calls must pass this id. |
| edits_getA | Fetch an existing edit — useful to check expiry before work. |
| edits_validateA | Validate an edit without committing. Catches schema/media errors before you publish. |
| edits_commitB | Commit and publish all changes in the edit. Pass changesNotSentForReview=true to skip automatic review submission. |
| edits_deleteB | Abandon an edit. All pending changes are discarded. |
| details_getA | Get app-level details (contact email/phone/website + default language). |
| details_updateB | Overwrite app-level details. Full replacement — unspecified fields are cleared. |
| details_patchB | Partial update — only the provided fields change. |
| country_availability_getB | Fetch per-country availability for a given track within an edit. |
| listings_listB | List every locale listing within an edit. |
| listings_getC | Get one locale's listing. |
| listings_updateB | Full replacement update of a locale listing. Fields: title (30), shortDescription (80), fullDescription (4000), video (YouTube URL). |
| listings_patchC | Partial update — unspecified fields preserved. |
| listings_deleteC | Delete the listing for one locale. |
| listings_delete_allA | Delete ALL locale listings in this edit. Irreversible within the edit. |
| images_listB | List uploaded images for a specific type and locale. |
| images_uploadB | Upload a new image. |
| images_deleteC | Delete a single image by id. |
| images_delete_allB | Delete every image of a given type in one locale. |
| bundles_listC | List all AAB uploads in the current edit. |
| bundles_uploadA | Upload a new App Bundle (.aab). Returns versionCode and sha256. Commit the edit separately to publish to a track. |
| apks_listB | List all APK uploads in the edit. |
| apks_uploadA | Upload a new APK. Prefer AAB via |
| apks_add_externally_hostedA | Register an APK that is hosted outside Google Play (enterprise-only, requires allowlist). |
| deobfuscation_files_uploadC | Upload a ProGuard mapping file for a specific version code. Use deobfuscationFileType='proguard' or 'nativeCode'. |
| expansion_files_getB | Get expansion file metadata for a version code. |
| expansion_files_uploadC | Upload expansion file contents (OBB). |
| expansion_files_updateC | Full update of expansion file metadata. |
| expansion_files_patchC | Partial update of expansion file metadata. |
| tracks_listA | List every track visible in this edit (includes default internal/alpha/beta/production + any custom closed-testing tracks). |
| tracks_getB | Get one track — includes all releases currently staged. |
| tracks_updateA | Full replacement of track state. |
| tracks_patchC | Partial update of track state. |
| tracks_createA | Create a brand-new custom closed-testing track. The new id is set on the server. Type can only be closedTesting. |
| testers_getB | Get the current tester allowlist for a track. |
| testers_updateB | Full replacement of the tester allowlist. |
| testers_patchC | Partial update of the tester allowlist. |
| onetime_products_listC | List all one-time products. |
| onetime_products_getB | Get a single one-time product. |
| onetime_products_createB | Create a one-time product. Pass the full OneTimeProduct body. |
| onetime_products_updateC | Update a one-time product (patch semantics, with updateMask). |
| onetime_products_deleteC | Delete a one-time product. |
| onetime_products_batch_getB | Fetch up to 100 one-time products in one call. |
| onetime_products_batch_updateC | Update up to 100 one-time products in one call. |
| onetime_products_batch_deleteC | Delete up to 100 one-time products in one call. |
| onetime_product_purchase_options_batch_updateC | Update or create up to 100 purchase options for a one-time product. |
| onetime_product_purchase_options_batch_update_statesC | Activate or deactivate up to 100 purchase options in one call. |
| onetime_product_purchase_options_batch_deleteC | Delete up to 100 purchase options. |
| onetime_product_offers_listB | List offers attached to a purchase option. |
| onetime_product_offers_getB | Get one offer on a purchase option. |
| onetime_product_offers_batch_getC | Batch-get up to 100 offers. |
| onetime_product_offers_batch_updateB | Batch-update up to 100 offers (creates or updates). |
| onetime_product_offers_batch_update_statesC | Activate/deactivate/cancel up to 100 offers. |
| onetime_product_offers_batch_deleteC | Delete up to 100 offers. |
| subscriptions_listC | List all subscriptions. |
| subscriptions_getC | Get a single subscription. |
| subscriptions_createC | Create a subscription. |
| subscriptions_updateB | Patch-update a subscription. Pass |
| subscriptions_deleteA | Delete a subscription. Only works on subscriptions with no active base plans/offers. |
| subscriptions_archiveA | Archive a subscription. Archived subscriptions are hidden from new purchases but existing subscribers keep access. |
| subscriptions_batch_getB | Get up to 100 subscriptions in one call. |
| subscriptions_batch_updateC | Update up to 100 subscriptions in one call. |
| subscription_base_plans_activateC | Activate a base plan — starts making it available for purchase. |
| subscription_base_plans_deactivateA | Deactivate a base plan — no new purchases; existing subscribers unaffected. |
| subscription_base_plans_deleteA | Delete a base plan (must be inactive). |
| subscription_base_plans_migrate_pricesC | Apply a price change to existing subscribers of a base plan in specific regions. |
| subscription_base_plans_batch_migrate_pricesB | Migrate prices on up to 100 base plans in one call. |
| subscription_base_plans_batch_updateC | Upsert up to 100 base plans. |
| subscription_base_plans_batch_update_statesC | Activate/deactivate up to 100 base plans. |
| subscription_offers_listA | List offers for a base plan. |
| subscription_offers_getC | Get a single offer. |
| subscription_offers_createB | Create an offer on a base plan (free trial, intro pricing, etc.). |
| subscription_offers_updateC | Patch-update an offer. |
| subscription_offers_deleteD | Delete an offer. |
| subscription_offers_activateC | Activate an offer — starts making it available for purchase. |
| subscription_offers_deactivateC | Deactivate an offer. |
| subscription_offers_batch_getC | Batch-get up to 100 offers. |
| subscription_offers_batch_updateC | Upsert up to 100 offers. |
| subscription_offers_batch_update_statesC | Activate/deactivate up to 100 offers. |
| monetization_convert_region_pricesA | Utility: convert a price in one region to comparable prices in every other region. Use before setting prices on a base plan. |
| purchases_products_v2_getA | Get current state of a one-time product purchase. Supports multiple purchase options + offers (replaces legacy purchases.products). |
| purchases_subscriptions_v2_getB | Get full state of a subscription purchase (SubscriptionPurchaseV2). Includes OfferPhase (2026), outOfAppPurchaseContext, latestSuccessfulOrderId, priceChangeState, priceStepUpConsentDetails. |
| purchases_subscriptions_v2_revokeC | Revoke a subscription (refund + terminate access). 2025-05 added |
| purchases_subscriptions_v2_cancelC | Cancel a subscription (2025-09+). |
| purchases_subscriptions_v2_deferA | Defer billing for a subscription (2026-01 supports subscriptions with add-ons too). Pass DeferralInfo with expectedExpiryTime + desiredExpiryTime. |
| purchases_subscriptions_acknowledgeB | Acknowledge a subscription purchase. 2025-11+ accepts optional |
| purchases_voided_listB | List voided purchases (refunded/charged-back). Supports filtering by time range + voided source. |
| orders_listC | List orders within a time window. Returns OrderId, productId, purchase state, quantity, offerPhaseDetails. |
| orders_getB | Get one order by order id. |
| orders_batch_getB | Get up to 100 orders in one call. |
| orders_refundB | Refund an order. Pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/devinwang/google-play-developer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server