The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Google Play Console MCP listing page.
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.
uvx (recommended, no install needed)Run this once. Claude automatically starts and stops the server for every session — you never have to touch it again.
Requires
uv— install withbrew install uvorcurl -Lsf https://astral.sh/uv/install.sh | sh
pip installIf you prefer a permanent install:
Only needed if you want to connect via HTTP transport instead of stdio:
How stdio works: With Options A and B, there is no server to start manually. Claude launches the process in the background when a session opens and shuts it down when the session ends. Zero maintenance.
| Tool | Description |
|---|---|
list_tracks | List all tracks (internal, alpha, beta, production) with releases and country availability |
get_track_info | Get detailed status, rollout %, and release notes for a specific track |
create_release | Create or replace a release on any track with rollout %, release notes, and country targeting |
update_release | Update rollout %, halt, resume, or complete an existing release |
promote_release | Promote a release between tracks (e.g. internal → alpha → beta → production) |
| Tool | Description |
|---|---|
list_artifacts | List all APKs and AABs with their version codes and SHA hashes |
upload_artifact | Upload an APK or AAB and create a release on a track in one step |
upload_to_internal_sharing | Upload a build to Internal App Sharing and get a shareable download URL |
| Tool | Description |
|---|---|
get_testers | Get tester email addresses and Google Groups for internal/closed testing |
update_testers | Replace the tester list for an internal or closed testing track |
| Tool | Description |
|---|---|
get_crash_rate | Daily crash rate and user-perceived crash rate by version code |
get_anr_rate | Daily ANR rate and user-perceived ANR rate by version code |
get_vitals_summary | Combined crash + ANR overview with bad behavior threshold indicators |
get_wakelock_rate | Daily stuck background wake lock rate by version code (battery health) |
get_wakeup_rate | Daily excessive wakeup rate by version code (battery health) |
uv — install guide| Tools | Minimum permission required |
|---|---|
upload_artifact, create_release, update_release, promote_release, update_testers | Release to production, exclude devices, and use app signing by Google Play |
upload_to_internal_sharing | Release to testing tracks |
list_tracks, get_track_info, list_artifacts, get_testers | View app information and download bulk reports (read-only) |
get_crash_rate, get_anr_rate, get_vitals_summary, get_wakelock_rate, get_wakeup_rate | View app information and download bulk reports (read-only) + Reporting API enabled |
Important: Release Manager does not grant Reporting API access. You must also enable View app information and download bulk reports (read-only) — both at account level and per-app level — for the Vitals tools to work.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
Restart Claude Desktop after saving.
Permissions must be granted at both account level and per-app level. Account-level alone is not sufficient for the Reporting API.
list_tracksReturns all tracks with their releases, rollout percentages, statuses, and country availability.
get_track_infoReturns a human-readable summary plus releases with status, rollout %, version codes, and release notes.
create_releaseCreates 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_releaseUpdate an existing release. Common use cases:
update_release(pkg, rollout_percentage=50)update_release(pkg, rollout_percentage=100)update_release(pkg, status="halted")update_release(pkg, status="inProgress")promote_releaseCopies a release from one track to another. Release notes and name are inherited from the source release unless explicitly overridden.
list_artifactsReturns all APKs and AABs sorted by version code (newest first) with SHA hashes.
upload_artifactUploads 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_sharingUploads 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_testersReturns the list of tester email addresses and Google Groups for the track.
update_testersWarning: This is a full replacement. Testers not in the new list will lose access. Call
get_testersfirst to retrieve the current list if you only want to add/remove individuals.
get_crash_rateReturns daily crashRate, userPerceivedCrashRate, and distinctUsers per version code.
Google's bad behavior threshold for user-perceived crash rate is ~1.09%.
get_anr_rateReturns daily anrRate, userPerceivedAnrRate, and distinctUsers per version code.
Google's bad behavior threshold for user-perceived ANR rate is ~0.47%.
get_vitals_summaryReturns 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_rateReturns 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_rateReturns 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.
403 Forbidden on Vitals toolsThis error has two common causes — check both:
1. Google Play Developer Reporting API not enabled
Enable it in your Google Cloud project: console.cloud.google.com/apis/library/playdeveloperreporting.googleapis.com
2. Service account lacks per-app Reporting API access
404 Package not foundThe service account must be linked to the same Google Play Console account that owns the app. Go to Play Console → Setup → API access and verify the service account is listed and has been invited.
| Registry | Link |
|---|---|
| PyPI | pip install google-play-mcp |
| Smithery | search google-play-mcp |
| Official MCP Registry | google-play-mcp |
MIT