playstore-release-mcp
An MCP server that drives Google Play releases: bundle upload, track releases (internal/closed/open/production), listing metadata, store graphics, and review replies.
README
playstore-release-mcp
An MCP server that drives Google Play releases: bundle upload, track releases (internal / closed / open / production), listing metadata, store graphics, and review replies.
Sibling to appstore-release-mcp. Same
shape, same conventions — but simpler in one important way: Play's REST API can do the entire
release. There's no equivalent to Apple's "archive, sign, and upload" gap, because a .aab built
by EAS Build (or Gradle) already arrives signed. This server is a pure Android Publisher API
client — no fastlane, no local build toolchain, no async job runner.
Requirements
- A Google Cloud service account with the Android Publisher API enabled, granted access to your app in Play Console.
- An existing app record in Play Console. The Android Publisher API cannot create a brand-new app — the very first app must be created by hand (Play Console → Create app).
Setup
-
Create a service account (once): Google Cloud Console → IAM & Admin → Service Accounts → Create Service Account → skip granting Cloud-level roles → Keys → Add Key → JSON. Download it.
-
Grant it access in Play Console: Play Console → Users and permissions → Invite new users → paste the service account's email (from the JSON's
client_emailfield) → grant at least Release manager permissions on the app(s) it should manage. -
Register with Claude Code:
claude mcp add playstore \
-e GOOGLE_SERVICE_ACCOUNT_KEY_PATH=$HOME/.play/service-account.json \
-e PLAY_PACKAGE_NAME=com.example.myapp \
-- npx playstore-release-mcp
(Or GOOGLE_SERVICE_ACCOUNT_KEY_CONTENT with the JSON base64-encoded, if you'd rather not keep
the key on disk.)
- Verify: ask the agent to run
play_doctor. All checks should be ✓.
Tools
| Tool | What it does |
|---|---|
play_doctor |
Verify credentials, package name, API reachability — run first |
play_app_status |
All tracks + their current release, version codes, rollout % |
play_upload_bundle |
Upload a local .aab → returns the resulting versionCode |
play_release_to_track |
Assign a versionCode to a track, set status/rollout %/release notes |
play_update_listing |
Title / short description / full description, per locale |
play_upload_graphics |
Screenshots, hi-res icon, feature graphic — Play's API allows this directly |
play_list_reviews |
Recent user reviews with star ratings and text |
play_reply_review |
Post a public developer reply to a review |
Release walkthrough
play_doctor
play_upload_bundle {aab_path: "./build/app.aab"} # → versionCode
play_release_to_track {track: "internal", version_code} # no review gate — fast sanity check
...
play_release_to_track {track: "production", version_code, status: "completed"}
play_app_status # confirm rollout
Staged rollout example: play_release_to_track {track: "production", version_code, status: "inProgress", rollout_fraction: 0.1} ships to 10% of users; call it again with a higher fraction
to widen, or status: "completed" to go to 100%.
What this can't do
Play Console (web) only — no public API exists for either of these, as far as I've found:
- Data Safety form — the data-collection disclosure questionnaire.
- Content rating (IARC) questionnaire.
Both are one-time-per-app forms (rarely touched after initial setup), so this is a minor gap in
practice, but worth knowing going in — don't expect a play_update_data_safety tool.
Notes
- Google's OAuth2 flow requires exchanging a signed JWT for an access token (one extra network call versus Apple's ES256 JWT, which is used directly as the bearer token). Tokens are cached and refreshed automatically.
- Play's release model is transactional ("Edits"): open an edit, stage changes, commit. Only one open edit per app is allowed at a time. Every tool here opens and commits (or abandons, on error) its own edit — you never have to think about edit IDs.
play_release_to_tracktargetingproductionis the point of no return for a public rollout — the tool description tells agents to confirm with a human first, same convention asappstore-release-mcp'sasc_submit_review.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.