Labsco
AgiMaulana logo

GooglePlayConsoleMcp

β˜… 4

from AgiMaulana

Let AI assistants manage your Play Store releases

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

Google Play Console MCP

Google Play Console MCP server

GooglePlayConsoleMcp MCP server MCP Badge

A Python Model Context Protocol server that lets AI assistants (Claude, etc.) manage the full Google Play Store release lifecycle directly β€” from uploading artifacts to managing testers, rollouts, and Android Vitals.


Features

Tracks & Releases

ToolDescription
list_tracksList all tracks (internal, alpha, beta, production) with releases and country availability
get_track_infoGet detailed status, rollout %, and release notes for a specific track
create_releaseCreate or replace a release on any track with rollout %, release notes, and country targeting
update_releaseUpdate rollout %, halt, resume, or complete an existing release
promote_releasePromote a release between tracks (e.g. internal β†’ alpha β†’ beta β†’ production)

Artifact Management

ToolDescription
list_artifactsList all APKs and AABs with their version codes and SHA hashes
upload_artifactUpload an APK or AAB and create a release on a track in one step
upload_to_internal_sharingUpload a build to Internal App Sharing and get a shareable download URL

Tester Management

ToolDescription
get_testersGet tester email addresses and Google Groups for internal/closed testing
update_testersReplace the tester list for an internal or closed testing track

Android Vitals

ToolDescription
get_crash_rateDaily crash rate and user-perceived crash rate by version code
get_anr_rateDaily ANR rate and user-perceived ANR rate by version code
get_vitals_summaryCombined crash + ANR overview with bad behavior threshold indicators
get_wakelock_rateDaily stuck background wake lock rate by version code (battery health)
get_wakeup_rateDaily excessive wakeup rate by version code (battery health)

Claude Desktop integration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "google-play": {
      "command": "uvx",
      "args": ["google-play-mcp"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account.json"
      }
    }
  }
}

Restart Claude Desktop after saving.


Tool reference

list_tracks

package_name : str  β€” e.g. "com.example.myapp"

Returns all tracks with their releases, rollout percentages, statuses, and country availability.


get_track_info

package_name : str
track        : str  β€” "internal" | "alpha" | "beta" | "production" (default: "production")

Returns a human-readable summary plus releases with status, rollout %, version codes, and release notes.


create_release

package_name       : str
track              : str        β€” "internal" | "alpha" | "beta" | "production"
version_codes      : list[int]  β€” e.g. [1042]
rollout_percentage : float      β€” default 10.0 (used when status is "inProgress")
status             : str        β€” "draft" (default) | "inProgress" | "halted" | "completed"
release_name       : str        β€” optional
release_notes      : dict       β€” optional, e.g. {"en-US": "Bug fixes", "fr-FR": "Corrections"}
country_codes      : list[str]  β€” optional ISO 3166-1 alpha-2 codes, e.g. ["US", "GB"]

Creates or replaces a release on the given track. Use status="inProgress" with a rollout_percentage for a staged production rollout, or status="completed" to release to all users immediately.


update_release

package_name       : str
track              : str    β€” default "production"
rollout_percentage : float  β€” optional; pass 100 to complete the rollout
status             : str    β€” optional; "inProgress" | "halted" | "completed" | "draft"
version_codes      : list[int]  β€” optional filter; targets first matching release if omitted

Update an existing release. Common use cases:

  • Increase rollout: update_release(pkg, rollout_percentage=50)
  • Complete rollout: update_release(pkg, rollout_percentage=100)
  • Halt rollout: update_release(pkg, status="halted")
  • Resume rollout: update_release(pkg, status="inProgress")

promote_release

package_name       : str
from_track         : str        β€” "internal" | "alpha" | "beta"
to_track           : str        β€” "alpha" | "beta" | "production"
version_codes      : list[int]
rollout_percentage : float      β€” default 10.0
release_name       : str        β€” optional override
release_notes      : dict       β€” optional override; inherits from source if omitted

Copies a release from one track to another. Release notes and name are inherited from the source release unless explicitly overridden.


list_artifacts

package_name : str

Returns all APKs and AABs sorted by version code (newest first) with SHA hashes.


upload_artifact

package_name       : str
file_path          : str    β€” absolute local path to .apk or .aab
track              : str    β€” default "internal"
status             : str    β€” "draft" (default) | "inProgress" | "completed"
rollout_percentage : float  β€” default 10.0 (used when status is "inProgress")
release_name       : str    β€” optional
release_notes      : dict   β€” optional

Uploads an APK or AAB (auto-detected from extension) and creates a release on the given track in a single atomic operation. Returns the assigned version code.


upload_to_internal_sharing

package_name : str
file_path    : str  β€” absolute local path to .apk or .aab

Uploads a build to Internal App Sharing (bypasses track assignment) and returns a shareable downloadUrl. Testers must have Internal App Sharing enabled in their Play Store settings. Ideal for quick one-off testing without affecting any release track.


get_testers

package_name : str
track        : str  β€” "internal" (default) | "alpha"

Returns the list of tester email addresses and Google Groups for the track.


update_testers

package_name  : str
track         : str         β€” "internal" (default) | "alpha"
emails        : list[str]   β€” optional; full replacement list of tester emails
google_groups : list[str]   β€” optional; full replacement list of Google Group emails

Warning: This is a full replacement. Testers not in the new list will lose access. Call get_testers first to retrieve the current list if you only want to add/remove individuals.


get_crash_rate

package_name : str
days         : int  β€” look-back window, 1–30 (default 7)
version_code : str  β€” optional single version code to filter

Returns daily crashRate, userPerceivedCrashRate, and distinctUsers per version code. Google's bad behavior threshold for user-perceived crash rate is ~1.09%.


get_anr_rate

package_name : str
days         : int  β€” look-back window, 1–30 (default 7)
version_code : str  β€” optional single version code to filter

Returns daily anrRate, userPerceivedAnrRate, and distinctUsers per version code. Google's bad behavior threshold for user-perceived ANR rate is ~0.47%.


get_vitals_summary

package_name : str
days         : int  β€” look-back window, 1–30 (default 7)

Returns a combined crash + ANR summary aggregated per version code, with averages over the period and exceedsCrashThreshold / exceedsAnrThreshold flags. The latest version is highlighted as latestVersionSummary.

get_wakelock_rate

package_name : str
days         : int  β€” look-back window, 1–30 (default 7)
version_code : str  β€” optional single version code to filter

Returns daily stuckBackgroundWakelockRate and distinctUsers per version code. Relevant for 2026 Google Play battery health enforcement β€” apps with an excessive proportion of sessions holding a partial wake lock for more than 1 hour in the background may be penalized.


get_wakeup_rate

package_name : str
days         : int  β€” look-back window, 1–30 (default 7)
version_code : str  β€” optional single version code to filter

Returns daily excessiveWakeupRate and distinctUsers per version code. Relevant for 2026 Google Play battery health enforcement β€” apps that wake the CPU too frequently (above platform thresholds) may be penalized.


Marketplaces

RegistryLink
PyPIpip install google-play-mcp
Smitherysearch google-play-mcp
Official MCP Registrygoogle-play-mcp