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 分