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.
README
play-console-mcp
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
- In the Google Cloud console, select or create a project and enable the Google Play Android Developer API.
- 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.
- 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.
- 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. - 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)
- Point
GOOGLE_SERVICE_ACCOUNT_KEY_PATHat 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_Angelesand 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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。