GooglePlayConsoleMcp
Permite que los asistentes de IA gestionen tus lanzamientos en Play Store
Documentación
Servidor MCP de Google Play Console
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 conbrew install uvocurl -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
| Herramienta | Descripción |
|---|---|
list_tracks | Lista todos los tracks (interno, alpha, beta, producción) con publicaciones y disponibilidad por país |
get_track_info | Obtén el estado detallado, el % de despliegue y las notas de la versión para un track específico |
create_release | Crea o reemplaza una publicación en cualquier track con % de despliegue, notas de versión y segmentación por país |
update_release | Actualiza el % de despliegue, detén, reanuda o completa una publicación existente |
promote_release | Promueve una publicación entre tracks (p. ej. interno → alpha → beta → producción) |
Gestión de artefactos
| Herramienta | Descripción |
|---|---|
list_artifacts | Lista todos los APK y AAB con sus códigos de versión y hashes SHA |
upload_artifact | Sube un APK o AAB y crea una publicación en un track en un solo paso |
upload_to_internal_sharing | Sube una compilación a Internal App Sharing y obtén una URL de descarga compartible |
Gestión de testers
| Herramienta | Descripción |
|---|---|
get_testers | Obtén las direcciones de correo de los testers y los Google Groups para pruebas internas/cerradas |
update_testers | Reemplaza la lista de testers para un track de pruebas interno o cerrado |
Android Vitals
| Herramienta | Descripción |
|---|---|
get_crash_rate | Tasa diaria de fallos y tasa de fallos percibida por el usuario según código de versión |
get_anr_rate | Tasa diaria de ANR y tasa de ANR percibida por el usuario según código de versión |
get_vitals_summary | Resumen combinado de fallos + ANR con indicadores de umbral de mal comportamiento |
get_wakelock_rate | Tasa diaria de wake locks atascados en segundo plano según código de versión (salud de la batería) |
get_wakeup_rate | Tasa diaria de activaciones excesivas según código de versión (salud de la batería) |
Requisitos previos
uv— guía de instalación- Una cuenta de servicio de Google Cloud con la clave JSON descargada.
- La cuenta de servicio añadida a Google Play Console con los permisos correctos (ver más abajo).
- Estas APIs habilitadas en tu proyecto de Google Cloud:
Permisos requeridos de Play Console
| Herramientas | Permiso mínimo requerido |
|---|---|
upload_artifact, create_release, update_release, promote_release, update_testers | Publicar en producción, excluir dispositivos y usar la firma de aplicaciones de Google Play |
upload_to_internal_sharing | Publicar en tracks de pruebas |
list_tracks, get_track_info, list_artifacts, get_testers | Ver 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_rate | Ver 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
- Ve a IAM y administración → Cuentas de servicio en tu proyecto de GCP.
- Crea una cuenta de servicio (o usa una existente) y descarga una clave JSON.
- 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_testersprimero 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
- Play Console → Configuración → Acceso a la API → busca la cuenta de servicio → Administrar permisos de Play Console.
- En Permisos de aplicación, selecciona la aplicación y habilita Ver información de la aplicación y descargar informes masivos (solo lectura).
- 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
| Registro | Enlace |
|---|---|
| PyPI | pip install google-play-mcp |
| Smithery | busca google-play-mcp |
| Registro oficial de MCP | google-play-mcp |
Licencia
MIT