GooglePlayConsoleMcp

Permite que los asistentes de IA gestionen tus lanzamientos en Play Store

Documentación

Servidor MCP de Google Play Console

Google Play Console MCP server

GooglePlayConsoleMcp MCP server MCP Badge License: MIT

Un servidor Python de Model Context Protocol que permite a los asistentes de IA (Claude, etc.) gestionar todo el ciclo de vida de publicación de Google Play Store directamente — desde la subida de artefactos hasta la gestión de testers, despliegues progresivos y Android Vitals.


Inicio rápido

Opción A — uvx (recomendada, sin instalación necesaria)

Ejecuta esto una vez. Claude inicia y detiene automáticamente el servidor en cada sesión — nunca tendrás que volver a tocarlo.

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

Requiere uv — instala con brew install uv o curl -Lsf https://astral.sh/uv/install.sh | sh

Opción B — pip install

Si prefieres una instalación permanente:

pip install google-play-mcp

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

Opción C — HTTP (servidor local)

Solo es necesario si quieres conectarte mediante transporte HTTP en lugar de stdio:

# Terminal 1 — start the server
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \
  uvx google-play-mcp --transport http --port 8080

# Terminal 2 — register with Claude
claude mcp add --transport http google-play-mcp http://localhost:8080

Cómo funciona stdio: Con las Opciones A y B, no hay servidor que iniciar manualmente. Claude lanza el proceso en segundo plano cuando se abre una sesión y lo detiene cuando la sesión termina. Cero mantenimiento.


Características

Tracks y publicaciones

HerramientaDescripción
list_tracksLista todos los tracks (interno, alpha, beta, producción) con publicaciones y disponibilidad por país
get_track_infoObtén el estado detallado, el % de despliegue y las notas de la versión para un track específico
create_releaseCrea o reemplaza una publicación en cualquier track con % de despliegue, notas de versión y segmentación por país
update_releaseActualiza el % de despliegue, detén, reanuda o completa una publicación existente
promote_releasePromueve una publicación entre tracks (p. ej. interno → alpha → beta → producción)

Gestión de artefactos

HerramientaDescripción
list_artifactsLista todos los APK y AAB con sus códigos de versión y hashes SHA
upload_artifactSube un APK o AAB y crea una publicación en un track en un solo paso
upload_to_internal_sharingSube una compilación a Internal App Sharing y obtén una URL de descarga compartible

Gestión de testers

HerramientaDescripción
get_testersObtén las direcciones de correo de los testers y los Google Groups para pruebas internas/cerradas
update_testersReemplaza la lista de testers para un track de pruebas interno o cerrado

Android Vitals

HerramientaDescripción
get_crash_rateTasa diaria de fallos y tasa de fallos percibida por el usuario según código de versión
get_anr_rateTasa diaria de ANR y tasa de ANR percibida por el usuario según código de versión
get_vitals_summaryResumen combinado de fallos + ANR con indicadores de umbral de mal comportamiento
get_wakelock_rateTasa diaria de wake locks atascados en segundo plano según código de versión (salud de la batería)
get_wakeup_rateTasa diaria de activaciones excesivas según código de versión (salud de la batería)

Requisitos previos

  1. uv — guía de instalación
  2. Una cuenta de servicio de Google Cloud con la clave JSON descargada.
  3. La cuenta de servicio añadida a Google Play Console con los permisos correctos (ver más abajo).
  4. Estas APIs habilitadas en tu proyecto de Google Cloud:

Permisos requeridos de Play Console

HerramientasPermiso mínimo requerido
upload_artifact, create_release, update_release, promote_release, update_testersPublicar en producción, excluir dispositivos y usar la firma de aplicaciones de Google Play
upload_to_internal_sharingPublicar en tracks de pruebas
list_tracks, get_track_info, list_artifacts, get_testersVer información de la aplicación y descargar informes masivos (solo lectura)
get_crash_rate, get_anr_rate, get_vitals_summary, get_wakelock_rate, get_wakeup_rateVer información de la aplicación y descargar informes masivos (solo lectura) + Reporting API habilitada

Importante: El rol de Release Manager no otorga acceso a la Reporting API. También debes habilitar Ver información de la aplicación y descargar informes masivos (solo lectura) — tanto a nivel de cuenta como a nivel de aplicación — para que funcionen las herramientas de Vitals.


Integración con Claude Desktop

Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

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

Reinicia Claude Desktop después de guardar.


Configuración de la cuenta de servicio

  1. Ve a IAM y administración → Cuentas de servicio en tu proyecto de GCP.
  2. Crea una cuenta de servicio (o usa una existente) y descarga una clave JSON.
  3. En Google Play Console → Configuración → Acceso a la API:
    • Vincula tu proyecto de Google Cloud.
    • Busca la cuenta de servicio → Administrar permisos de Play Console.
    • En Permisos de cuenta, habilita Ver información de la aplicación y descargar informes masivos (solo lectura).
    • En Permisos de aplicación para cada aplicación, habilita:
      • Ver información de la aplicación y descargar informes masivos (solo lectura)
      • Publicar en producción… (si necesitas acceso de escritura)
    • Haz clic en Aplicar → Invitar usuario.

Los permisos deben otorgarse tanto a nivel de cuenta como a nivel de aplicación. Solo el nivel de cuenta no es suficiente para la Reporting API.


Referencia de herramientas

list_tracks

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

Devuelve todos los tracks con sus publicaciones, porcentajes de despliegue, estados y disponibilidad por país.


get_track_info

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

Devuelve un resumen legible además de las publicaciones con estado, % de despliegue, códigos de versión y notas de la versión.


create_release

package_name       : str
track              : 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        — optional
release_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"]

Crea o reemplaza una publicación en el track indicado. Usa status="inProgress" con un rollout_percentage para un despliegue de producción escalonado, o status="completed" para publicar a todos los usuarios de inmediato.


update_release

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

Actualiza una publicación existente. Casos de uso comunes:

  • Aumentar el despliegue: update_release(pkg, rollout_percentage=50)
  • Completar el despliegue: update_release(pkg, rollout_percentage=100)
  • Detener el despliegue: update_release(pkg, status="halted")
  • Reanudar el despliegue: update_release(pkg, status="inProgress")

promote_release

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

Copia una publicación de un track a otro. Las notas de la versión y el nombre se heredan de la publicación de origen a menos que se sobrescriban explícitamente.


list_artifacts

package_name : str

Devuelve todos los APK y AAB ordenados por código de versión (más reciente primero) con hashes SHA.


upload_artifact

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

Sube un APK o AAB (detección automática por extensión) y crea una publicación en el track indicado en una única operación atómica. Devuelve el código de versión asignado.


upload_to_internal_sharing

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

Sube una compilación a Internal App Sharing (omite la asignación a un track) y devuelve un downloadUrl compartible. Los testers deben tener Internal App Sharing habilitado en su configuración de Play Store. Ideal para pruebas rápidas puntuales sin afectar ningún track de publicación.


get_testers

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

Devuelve la lista de direcciones de correo de los testers y los Google Groups para el track.


update_testers

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

Advertencia: Esto es un reemplazo completo. Los testers que no estén en la nueva lista perderán el acceso. Llama a get_testers primero para recuperar la lista actual si solo quieres añadir/eliminar personas.


get_crash_rate

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

Devuelve crashRate, userPerceivedCrashRate y distinctUsers diarios por código de versión. El umbral de mal comportamiento de Google para la tasa de fallos percibida por el usuario es ~1,09 %.


get_anr_rate

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

Devuelve anrRate, userPerceivedAnrRate y distinctUsers diarios por código de versión. El umbral de mal comportamiento de Google para la tasa de ANR percibida por el usuario es ~0,47 %.


get_vitals_summary

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

Devuelve un resumen combinado de fallos + ANR agregado por código de versión, con promedios durante el período y los indicadores exceedsCrashThreshold / exceedsAnrThreshold. La versión más reciente se resalta como latestVersionSummary.

get_wakelock_rate

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

Devuelve stuckBackgroundWakelockRate y distinctUsers diarios por código de versión. Relevante para la aplicación de la salud de la batería de Google Play en 2026: las aplicaciones con una proporción excesiva de sesiones que mantienen un wake lock parcial durante más de 1 hora en segundo plano pueden ser penalizadas.


get_wakeup_rate

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

Devuelve excessiveWakeupRate y distinctUsers diarios por código de versión. Relevante para la aplicación de la salud de la batería de Google Play en 2026: las aplicaciones que activan la CPU con demasiada frecuencia (por encima de los umbrales de la plataforma) pueden ser penalizadas.


Solución de problemas

403 Forbidden en las herramientas de Vitals

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

Este error tiene dos causas comunes: revisa ambas.

1. Google Play Developer Reporting API no habilitada

Habilítala en tu proyecto de Google Cloud: console.cloud.google.com/apis/library/playdeveloperreporting.googleapis.com

2. La cuenta de servicio no tiene acceso a la Reporting API por aplicación

  1. Play Console → Configuración → Acceso a la API → busca la cuenta de servicio → Administrar permisos de Play Console.
  2. En Permisos de aplicación, selecciona la aplicación y habilita Ver información de la aplicación y descargar informes masivos (solo lectura).
  3. Guarda y espera unos minutos para que el cambio se propague.

404 Package not found

La cuenta de servicio debe estar vinculada a la misma cuenta de Google Play Console que posee la aplicación. Ve a Play Console → Configuración → Acceso a la API y verifica que la cuenta de servicio esté listada y haya sido invitada.


Mercados

RegistroEnlace
PyPIpip install google-play-mcp
Smitherybusca google-play-mcp
Registro oficial de MCPgoogle-play-mcp

Licencia

MIT