Google Play Console MCP

io.github.AgiMaulana由 GitHub 账号 AgiMaulana 发布v0.5.0更新于 Oct 24, 2026

Google Play release lifecycle: tracks, testers, rollout, and Android Vitals.

已验证STDIO仅桌面开发者工具数据与分析

概览

AI 生成的概览

一个本地 MCP 服务器,让助手通过 Play Console API 管理 Google Play 的发布、测试人员、构建产物和 Android Vitals。

可以做什么
列出各轨道,查看轨道状态、分阶段发布比例和发布说明,并创建、更新、暂停、恢复发布或在轨道间提升发布。列出 APK 和 AAB 及其版本号与哈希,一步上传产物并创建发布,或将构建推送到内部应用分享以获得下载链接。读取并整体替换内部测试和封闭测试轨道的测试人员邮箱列表与 Google 群组。读取 Android Vitals:按版本号统计每日崩溃率、ANR 率、后台唤醒锁和过度唤醒率,以及带阈值标记的综合摘要。
适用场景
适合发布 Android 应用的团队,让助手处理 Play 商店的发布事务:分阶段发布、轨道提升、测试人员名单调整、产物上传,以及发布前后检查崩溃和 ANR 健康状况。
运行要求
以 Python 包形式在本地运行(uvx 或 pip install)。需要一个 Google Cloud 服务账号 JSON 密钥,通过 GOOGLE_APPLICATION_CREDENTIALS 传入其绝对路径,并在 Play Console 中为该账号授予账号级和应用级权限。Cloud 项目中需启用 Google Play Android Developer API 和 Google Play Developer Reporting API。
安装前请注意
服务账号密钥文件是敏感凭据,持有者可在其权限范围内操作你的 Play Console 账号。写入类工具会改变线上商店状态:create_release、update_release、promote_release 和 upload_artifact 可发布到正式版或将分阶段发布推进到全部用户,update_testers 会整体替换测试人员名单,未列入者将失去访问权限。只授予必要权限,优先使用草稿或分阶段发布。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Google Play Console MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Google Play Console MCP

[Google Play Console MCP server]

[GooglePlayConsoleMcp MCP server] [MCP Badge] [License: MIT]

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.


Quick start

Option A — 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.

bash
claude mcp add google-play-mcp \  -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \  -- uvx google-play-mcp

Requires uv — install with brew install uv or curl -Lsf https://astral.sh/uv/install.sh | sh

Option B — pip install

If you prefer a permanent install:

bash
pip install google-play-mcp
claude mcp add google-play-mcp \  -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \  -- google-play-mcp

Option C — HTTP (local server)

Only needed if you want to connect via HTTP transport instead of stdio:

bash
# Terminal 1 — start the serverGOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \  uvx google-play-mcp --transport http --port 8080
# Terminal 2 — register with Claudeclaude mcp add --transport http google-play-mcp http://localhost:8080

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.


Features

Tracks & Releases

ToolDescription
list_tracksList all tracks (internal, alpha, beta, production) with releases and country availability
get_track_infoGet detailed status, rollout %, and release notes for a specific track
create_releaseCreate or replace a release on any track with rollout %, release notes, and country targeting
update_releaseUpdate rollout %, halt, resume, or complete an existing release
promote_releasePromote a release between tracks (e.g. internal → alpha → beta → production)

Artifact Management

ToolDescription
list_artifactsList all APKs and AABs with their version codes and SHA hashes
upload_artifactUpload an APK or AAB and create a release on a track in one step
upload_to_internal_sharingUpload a build to Internal App Sharing and get a shareable download URL

Tester Management

ToolDescription
get_testersGet tester email addresses and Google Groups for internal/closed testing
update_testersReplace the tester list for an internal or closed testing track

Android Vitals

ToolDescription
get_crash_rateDaily crash rate and user-perceived crash rate by version code
get_anr_rateDaily ANR rate and user-perceived ANR rate by version code
get_vitals_summaryCombined crash + ANR overview with bad behavior threshold indicators
get_wakelock_rateDaily stuck background wake lock rate by version code (battery health)
get_wakeup_rateDaily excessive wakeup rate by version code (battery health)

Prerequisites

  1. uv — install guide
  2. A Google Cloud service account with the JSON key downloaded.
  3. The service account added to Google Play Console with the correct permissions (see below).
  4. These APIs enabled in your Google Cloud project:

Required Play Console permissions

ToolsMinimum permission required
upload_artifact, create_release, update_release, promote_release, update_testersRelease to production, exclude devices, and use app signing by Google Play
upload_to_internal_sharingRelease to testing tracks
list_tracks, get_track_info, list_artifacts, get_testersView app information and download bulk reports (read-only)
get_crash_rate, get_anr_rate, get_vitals_summary, get_wakelock_rate, get_wakeup_rateView 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.


Claude Desktop integration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

json
{  "mcpServers": {    "google-play": {      "command": "uvx",      "args": ["google-play-mcp"],      "env": {        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account.json"      }    }  }}

Restart Claude Desktop after saving.


Service account setup

  1. Go to IAM & Admin → Service Accounts in your GCP project.
  2. Create a service account (or use an existing one) and download a JSON key.
  3. In Google Play Console → Setup → API access:
    • Link your Google Cloud project.
    • Find the service account → Manage Play Console permissions.
    • Under Account permissions, enable View app information and download bulk reports (read-only).
    • Under App permissions for each app, enable:
      • View app information and download bulk reports (read-only)
      • Release to production… (if you need write access)
    • Click Apply → Invite user.

Permissions must be granted at both account level and per-app level. Account-level alone is not sufficient for the Reporting API.


Tool reference

list_tracks

package_name : str  — e.g. "com.example.myapp"

Returns all tracks with their releases, rollout percentages, statuses, and country availability.


get_track_info

package_name : strtrack        : str  — "internal" | "alpha" | "beta" | "production" (default: "production")

Returns a human-readable summary plus releases with status, rollout %, version codes, and release notes.


create_release

package_name       : strtrack              : str        — "internal" | "alpha" | "beta" | "production"version_codes      : list[int]  — e.g. [1042]rollout_percentage : float      — default 10.0 (used when status is "inProgress")status             : str        — "draft" (default) | "inProgress" | "halted" | "completed"release_name       : str        — optionalrelease_notes      : dict       — optional, e.g. {"en-US": "Bug fixes", "fr-FR": "Corrections"}country_codes      : list[str]  — optional ISO 3166-1 alpha-2 codes, e.g. ["US", "GB"]

Creates 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_release

package_name       : strtrack              : str    — default "production"rollout_percentage : float  — optional; pass 100 to complete the rolloutstatus             : str    — optional; "inProgress" | "halted" | "completed" | "draft"version_codes      : list[int]  — optional filter; targets first matching release if omitted

Update an existing release. Common use cases:

  • Increase rollout: update_release(pkg, rollout_percentage=50)
  • Complete rollout: update_release(pkg, rollout_percentage=100)
  • Halt rollout: update_release(pkg, status="halted")
  • Resume rollout: update_release(pkg, status="inProgress")

promote_release

package_name       : strfrom_track         : str        — "internal" | "alpha" | "beta"to_track           : str        — "alpha" | "beta" | "production"version_codes      : list[int]rollout_percentage : float      — default 10.0release_name       : str        — optional overriderelease_notes      : dict       — optional override; inherits from source if omitted

Copies a release from one track to another. Release notes and name are inherited from the source release unless explicitly overridden.


list_artifacts

package_name : str

Returns all APKs and AABs sorted by version code (newest first) with SHA hashes.


upload_artifact

package_name       : strfile_path          : str    — absolute local path to .apk or .aabtrack              : str    — default "internal"status             : str    — "draft" (default) | "inProgress" | "completed"rollout_percentage : float  — default 10.0 (used when status is "inProgress")release_name       : str    — optionalrelease_notes      : dict   — optional

Uploads 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_sharing

package_name : strfile_path    : str  — absolute local path to .apk or .aab

Uploads 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_testers

package_name : strtrack        : str  — "internal" (default) | "alpha"

Returns the list of tester email addresses and Google Groups for the track.


update_testers

package_name  : strtrack         : str         — "internal" (default) | "alpha"emails        : list[str]   — optional; full replacement list of tester emailsgoogle_groups : list[str]   — optional; full replacement list of Google Group emails

Warning: This is a full replacement. Testers not in the new list will lose access. Call get_testers first to retrieve the current list if you only want to add/remove individuals.


get_crash_rate

package_name : strdays         : int  — look-back window, 1–30 (default 7)version_code : str  — optional single version code to filter

Returns daily crashRate, userPerceivedCrashRate, and distinctUsers per version code. Google's bad behavior threshold for user-perceived crash rate is ~1.09%.


get_anr_rate

package_name : strdays         : int  — look-back window, 1–30 (default 7)version_code : str  — optional single version code to filter

Returns daily anrRate, userPerceivedAnrRate, and distinctUsers per version code. Google's bad behavior threshold for user-perceived ANR rate is ~0.47%.


get_vitals_summary

package_name : strdays         : int  — look-back window, 1–30 (default 7)

Returns 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_rate

package_name : strdays         : int  — look-back window, 1–30 (default 7)version_code : str  — optional single version code to filter

Returns 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_rate

package_name : strdays         : int  — look-back window, 1–30 (default 7)version_code : str  — optional single version code to filter

Returns 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.


Troubleshooting

403 Forbidden on Vitals tools

403 Client Error: Forbidden for url: https://playdeveloperreporting.googleapis.com/...

This 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

  1. Play Console → Setup → API access → find the service account → Manage Play Console permissions.
  2. Under App permissions, select the app and enable View app information and download bulk reports (read-only).
  3. Save and wait a few minutes for the change to propagate.

404 Package not found

The 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.


Marketplaces

RegistryLink
PyPIpip install google-play-mcp
Smitherysearch google-play-mcp
Official MCP Registrygoogle-play-mcp

License

MIT

来源:README.md,提交 9003e63

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分