play-console-mcp

play-console-mcp

Enables AI agents to manage Google Play Console reviews and Android app releases, including replying to reviews, promoting releases, managing staged rollouts, and checking crash/ANR vitals.

Category
Visit Server

README

play-console-mcp

npm CI node license: MIT

MCP server for the Google Play Console that exposes the official Google Play Developer API and Play Developer Reporting API as tools for AI agents.

Its focus is managing user feedback and Android app releases — reading and replying to Play Store reviews, inspecting release tracks, promoting a build from beta to production, steering a staged rollout, and checking crash/ANR vitals before and after a release.

What it deliberately does not do: no app bundle (AAB/APK) uploads, no store listing or metadata edits, no in-app product or subscription management, and no Android device management (that is the unrelated Android Management API). Writes are limited to review replies and release track updates.

Install

claude mcp add play-console \
  -e GOOGLE_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json \
  -e GOOGLE_PLAY_PACKAGE_NAME=com.example.app \
  -- npx -y @orellbuehler/play-console-mcp

The -e flags must come before the -- separator; anything after -- is passed to the server process instead of being read as configuration.

Getting a service account key

  1. In the Google Cloud console, select or create a project and enable the Google Play Android Developer API.
  2. Go to IAM & Admin → Service accounts → Create service account. You can skip the optional "grant access" steps — Play Console permissions are granted separately, not via Cloud IAM roles.
  3. Open the new service account, go to the Keys tab, and choose Add key → Create new key → JSON. The file downloads once and cannot be retrieved again.
  4. In the Google Play Console, go to Users and permissions → Invite new users and paste the service account's email address (name@project-id.iam.gserviceaccount.com) as if it were a person.
  5. Select your app and grant at least:
    • View app information (required by every tool)
    • Reply to reviews (for reply_to_review)
    • Release to testing tracks and/or Production releases (for promote_release, update_rollout, halt_rollout)
  6. Point GOOGLE_SERVICE_ACCOUNT_KEY_PATH at the downloaded JSON file.

You no longer need to link your Play developer account to a Google Cloud project to use the API. Treat the JSON key like a password — it carries whatever permissions you granted, with no second factor in front of it. Keep it outside the repository and consider chmod 600.

Permission changes can take a few minutes to propagate. Until they do, calls fail with The caller does not have permission.

Configuration

Variable Required Description
GOOGLE_SERVICE_ACCOUNT_KEY_PATH one of Path to the downloaded service account JSON key
GOOGLE_SERVICE_ACCOUNT_KEY one of The service account JSON key inline, as a raw JSON string
GOOGLE_PLAY_PACKAGE_NAME no Default app package name, so tools can omit package_name

Usage with Claude Code

{
  "mcpServers": {
    "play-console": {
      "command": "npx",
      "args": ["-y", "@orellbuehler/play-console-mcp"],
      "env": {
        "GOOGLE_SERVICE_ACCOUNT_KEY_PATH": "/path/to/service-account.json",
        "GOOGLE_PLAY_PACKAGE_NAME": "com.example.app"
      }
    }
  }
}

Example prompts

  • "What are people complaining about in this week's Play Store reviews?"
  • "Reply to the 1-star review from Ada apologising for the crash and saying a fix ships this week."
  • "Which tracks have releases right now, and what version code is in production?"
  • "Promote the current beta release to production as a 10% staged rollout."
  • "The crash rate spiked — halt the production rollout."
  • "Compare the crash rate for version code 415 against 414 over the last two weeks."
  • "Show me the top crash issues by affected users and the stack trace for the worst one."

Tools

Reviews

Tool Description
list_reviews List recent reviews with rating, text, device, app version and any existing reply
get_review Get a single review and its full comment thread by review ID
reply_to_review Post or edit the public developer reply to a review (max 350 characters)

Releases

Tool Description
list_tracks List all tracks with their releases (version codes, status, rollout fraction, notes)
get_track Get a single track and its releases
promote_release Promote the active release of one track to another, optionally as a staged rollout
update_rollout Change the staged rollout percentage, or complete it by passing user_fraction: 1
halt_rollout Halt an in-progress staged rollout, keeping its current fraction

Every write tool accepts validate_only: true for a dry run — the change is validated against the API and then discarded instead of being committed.

Vitals

Tool Description
query_crash_rate Crash rate and user-perceived crash rate over time, optionally by dimension
query_anr_rate ANR rate and user-perceived ANR rate over time
query_error_counts Absolute error report counts and affected users, e.g. broken down by issue
search_error_issues Grouped crash/ANR issues with cause, location, counts and Play Console link
search_error_reports Individual error reports including the raw stack trace

Notes & caveats

  • Reviews are limited by Google, not by this server. The API only returns reviews created or modified in the last 7 days, only reviews that contain written text, and only for production releases. Replies are capped at 350 characters and the user is only notified about the first reply to a review.
  • Quotas: review reads are limited to roughly 200 requests/hour and replies to 2,000/day per developer account.
  • Release writes use the Play edits workflow. Each write tool opens an edit, applies the change, and commits it in a single call; failed calls delete the edit again. Promoting replaces the destination track's release list, which is what the Play Console does too.
  • Vitals data lags. Android vitals metrics are aggregated daily in America/Los_Angeles and are typically about a day behind. Slices with too few users are omitted by Google.
  • Ratings over time are not available through the Reporting API; per-review star ratings come from list_reviews.

Development

npm install
npm run build         # tsc -p tsconfig.build.json -> dist/
npm test              # vitest run
npm run lint          # eslint src
npm run typecheck     # tsc --noEmit
npm run format        # prettier --write .

Smoke-test the built server against a real app:

GOOGLE_SERVICE_ACCOUNT_KEY_PATH=/path/to/service-account.json \
GOOGLE_PLAY_PACKAGE_NAME=com.example.app \
npx @modelcontextprotocol/inspector node dist/index.js

CI / Releasing

CI runs format:check, lint, typecheck, test and build on Node 20 and 22. Publishing happens on GitHub release via npm trusted publishing (OIDC, no tokens):

npm version patch
git push --follow-tags
gh release create "v$(node -p "require('./package.json').version")" --generate-notes

License

MIT © Orell Bühler

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured