Server data from the Official MCP Registry
Manage Google Play Console: releases, listings, monetization, reviews, and Android Vitals.
Manage Google Play Console: releases, listings, monetization, reviews, and Android Vitals.
Valid MCP server (1 strong, 0 medium validity signals). 1 known CVE in dependencies (1 critical, 0 high severity) Package registry verified. Imported from the Official MCP Registry.
3 files analyzed · 2 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Set these up before or after installing:
Environment variable: PLAY_SERVICE_ACCOUNT_JSON
Environment variable: GOOGLE_APPLICATION_CREDENTIALS
Environment variable: PLAY_DEVELOPER_ACCOUNT_ID
Environment variable: PLAY_REPORTS_BUCKET
Environment variable: PLAY_STORAGE_CREDENTIALS
Environment variable: PLAY_TOOLSETS
Environment variable: PLAY_READ_ONLY
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-wiseappsai-play-console-mcp": {
"env": {
"PLAY_TOOLSETS": "your-play-toolsets-here",
"PLAY_READ_ONLY": "your-play-read-only-here",
"PLAY_REPORTS_BUCKET": "your-play-reports-bucket-here",
"PLAY_STORAGE_CREDENTIALS": "your-play-storage-credentials-here",
"PLAY_DEVELOPER_ACCOUNT_ID": "your-play-developer-account-id-here",
"PLAY_SERVICE_ACCOUNT_JSON": "your-play-service-account-json-here",
"GOOGLE_APPLICATION_CREDENTIALS": "your-google-application-credentials-here"
},
"args": [
"-y",
"@wiseappsai/play-console-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
An MCP server that lets AI agents (Claude, Cursor, …) manage Google Play Console — releases, store listings, monetization, reviews, and Android Vitals.
Once it's connected, just ask your assistant:
“List my Play Console apps.” “Show this week's crash rate for
com.example.app.” “Reply to the latest 1‑star review and ask them to email support.” “Roll out./app-release.aabto the internal track.”
It runs via npx — nothing to install. You just need a Google service-account key with access to your Play Console (2‑minute setup below).
Claude Code:
claude mcp add play-console \
-e GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \
-e PLAY_READ_ONLY=true \
-- npx -y @wiseappsai/play-console-mcp
Claude Desktop / Cursor — add to your client's MCP config:
{
"mcpServers": {
"play-console": {
"command": "npx",
"args": ["-y", "@wiseappsai/play-console-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"PLAY_READ_ONLY": "true"
}
}
}
}
PLAY_READ_ONLY=true keeps it look-but-don't-touch. Remove it when you want the agent to make changes. Restart your client, and you're ready.
“Use play_reporting_apps to list my apps.” — needs no app id; confirms it's working. “List the latest reviews for
com.example.app.”
That's it. The rest of this README is reference material.
The server signs in as a Google Cloud service account that you grant access to your Play Console.
…@<project>.iam.gserviceaccount.com) and grant it permissions (account‑level “View app information” is enough to start; add more for publishing/replies).Point GOOGLE_APPLICATION_CREDENTIALS at that JSON file (or paste its contents into PLAY_SERVICE_ACCOUNT_JSON). New grants can take a few minutes to take effect.
34 tools, grouped into toolsets you can enable with PLAY_TOOLSETS (default: all). Each tool takes an action parameter selecting the operation — your agent reads the tool's description to know the options.
| Toolset | Tools | Covers |
|---|---|---|
releases | play_edit, play_tracks, play_artifacts, play_artifact_files | Edits, release tracks, AAB/APK uploads, expansion & mapping files |
store_listing | play_listings, play_images | Listings, app details, screenshots & graphics |
monetization | play_inappproducts, play_subscriptions, play_subscription_baseplans, play_subscription_offers, play_onetimeproducts, play_onetimeproduct_offers, play_pricing | In-app products, subscriptions, base plans, offers, one-time products, price conversion |
commerce | play_purchases_products, play_purchases_subscriptions, play_voided_purchases, play_orders | Purchase verification, subscription management, voided purchases, orders & refunds |
reviews | play_reviews, play_reviews_export | List/read/reply to recent reviews (last ~7 days); play_reviews_export reads the full historical reviews CSVs from the Cloud Storage reports bucket |
users | play_users | Console users & per-app permission grants |
devices | play_device_tier_configs | Device tier configs |
advanced | play_generated_apks, play_internal_app_sharing, play_app_recovery, play_external_transactions, play_data_safety | Generated/system APKs, internal sharing, app recovery, external transactions, data safety |
vitals | play_vitals_crash_anr, play_vitals_errors, play_vitals_performance, play_vitals_battery, play_vitals_anomalies, play_reporting_apps | Android Vitals: crashes, ANRs, errors, performance, battery, anomalies |
workflows | play_publish_release, play_promote_release | One-call “upload + roll out” and “promote between tracks” |
All configuration is via environment variables. The common ones:
| Variable | Description |
|---|---|
GOOGLE_APPLICATION_CREDENTIALS | Path to your service-account key file. (or PLAY_SERVICE_ACCOUNT_JSON for inline JSON) |
PLAY_READ_ONLY | true = expose only read actions. Default false. |
PLAY_TOOLSETS | Comma-separated toolsets to enable, or all (default). |
PLAY_DEVELOPER_ACCOUNT_ID | Numeric developer id — required for the users toolset. |
PLAY_REPORTS_BUCKET | Cloud Storage report-export bucket for play_reviews_export — the value from Play Console → Download reports → "Copy Cloud Storage URI" (pubsite_prod_rev_…). |
PLAY_STORAGE_CREDENTIALS | Credentials JSON used only for the storage/reviews-export client (see Historical reviews export below). Optional. |
| Variable | Default | Description |
|---|---|---|
PLAY_SERVICE_ACCOUNT_JSON | — | Inline service-account key JSON (alternative to the file path). |
PLAY_OAUTH_CLIENT_ID / _SECRET / _REFRESH_TOKEN | — | OAuth 2.0 refresh-token auth (alternative to a service account). |
PLAY_AUTO_COMMIT_EDITS | true | When an edit-based action has no editId, open an edit, apply, and commit in one shot. |
PLAY_ENABLE_LEGACY_SUBSCRIPTIONS_V1 | false | Expose the deprecated purchases.subscriptions (v1) actions. |
PLAY_REGIONS_VERSION | 2022/02 | Default monetization regionsVersion for subscription/product writes. |
PLAY_LOG_LEVEL | info | error | warn | info | debug (logs go to stderr). |
editId and it commits automatically; pass an editId (from play_edit → insert) to batch several changes and commit them yourself.media object with a filePath (on the machine running the server) or base64 contents.appId — usually the package name; find it with play_reporting_apps → search.See .env.example for a copy‑paste template.
play_reviews only returns the last ~7 days of reviews — that's a hard limit of the Android Publisher API. For older reviews and full per-month history, play_reviews_export reads the monthly CSVs Google writes to your private Cloud Storage reports bucket. Two things to set up:
1. The bucket id. Copy it from Play Console → Download reports → Reviews → "Copy Cloud Storage URI" (it looks like gs://pubsite_prod_rev_0123456789). Set it as PLAY_REPORTS_BUCKET. It is not your developer account id and can't be discovered via any API — so it must be configured (or passed as the bucket arg).
2. A credential that can read it. These buckets are owned by Google and grant only the Play account owner (a user identity) read access — a service account usually cannot be granted access (you'll see 403/getIamPolicy denied). So the storage client uses a credential separate from your Android Publisher service account:
Local: run gcloud auth application-default login and sign in as the Play account owner. The MCP auto-detects these Application Default Credentials — no extra config.
Docker / explicit: set PLAY_STORAGE_CREDENTIALS to a credentials JSON the container can read, e.g. mount your ADC file:
-v "$HOME/.config/gcloud/application_default_credentials.json:/creds.json:ro" \
-e PLAY_STORAGE_CREDENTIALS=/creds.json
Resolution order for the storage credential: PLAY_STORAGE_CREDENTIALS → gcloud ADC (when the main auth is a service account) → the main auth. If your main auth is already OAuth user credentials, storage just works.
Docker (image at ghcr.io/wiseappsai/play-console-mcp:latest). Pass credentials as inline JSON and run interactively (-i, it's a stdio server):
{
"mcpServers": {
"play-console": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "PLAY_SERVICE_ACCOUNT_JSON", "-e", "PLAY_READ_ONLY", "ghcr.io/wiseappsai/play-console-mcp:latest"],
"env": { "PLAY_SERVICE_ACCOUNT_JSON": "{\"type\":\"service_account\", ...}", "PLAY_READ_ONLY": "true" }
}
}
}
From source:
git clone https://github.com/wiseappsai/play-console-mcp.git
cd play-console-mcp && npm install && npm run build
# then point your client at: node /abs/path/play-console-mcp/dist/index.js
403 … API … is disabled — enable the named API (Android Publisher and/or Play Developer Reporting) for your project, then wait ~2 minutes.403 … insufficient permissions — the service account isn't granted access in Play Console → Users and permissions yet (or the grant hasn't propagated).PLAY_DEVELOPER_ACCOUNT_ID is required — the users toolset needs your numeric developer id (from the Play Console Setup → API access URL).PLAY_READ_ONLY=true mode, or its toolset isn't in PLAY_TOOLSETS.play_reviews_export says it can't read the bucket (401/403) — the reports bucket can't be granted to a service account; run gcloud auth application-default login as the Play account owner, or set PLAY_STORAGE_CREDENTIALS. See Historical reviews export above.No reports bucket configured — set PLAY_REPORTS_BUCKET from Play Console → Download reports → "Copy Cloud Storage URI".npm install
npm run build # tsc -> dist/
npm test # vitest (in-memory MCP client/server, no network)
npm run typecheck
npm run dev # run from source with tsx
Each toolset is a module in src/tools/<toolset>.ts exporting buildTools(config), registered via src/lib/tool.ts; auth and the Google clients live in src/auth.ts / src/clients.ts. Please keep npm test and npm run typecheck green.
Releases are automated: push a vX.Y.Z tag (matching package.json) to publish to npm + the MCP registry (release.yml) and build + push the Docker image to GHCR (docker.yml).
This server can change your Play Console (publish releases, edit prices, reply to reviews, manage users). Grant the service account only what it needs, use PLAY_READ_ONLY=true for read-mostly use, and never commit your key file. Credentials are read from env vars and never logged.
MIT © WiseApps AI
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace · Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm — conversationally
by mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.