GooglePlayConsoleMcp

Deixe assistentes de IA gerenciarem seus lançamentos na Play Store

Documentação

Google Play Console MCP

Google Play Console MCP server

GooglePlayConsoleMcp MCP server MCP Badge License: MIT

Um servidor Python Model Context Protocol que permite que assistentes de IA (Claude, etc.) gerenciem todo o ciclo de vida de lançamentos da Google Play Store diretamente — desde o upload de artefatos até o gerenciamento de testadores, lançamentos progressivos e Android Vitals.


Início rápido

Opção A — uvx (recomendado, sem necessidade de instalação)

Execute uma vez. O Claude inicia e encerra o servidor automaticamente a cada sessão — você nunca mais precisa se preocupar com isso.

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

Requer uv — instale com brew install uv ou curl -Lsf https://astral.sh/uv/install.sh | sh

Opção B — pip install

Se você preferir uma instalação permanente:

pip install google-play-mcp

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

Opção C — HTTP (servidor local)

Necessário apenas se você quiser conectar via transporte HTTP em vez 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

Como o stdio funciona: Com as Opções A e B, não há servidor para iniciar manualmente. O Claude inicia o processo em segundo plano quando uma sessão abre e o encerra quando a sessão termina. Zero manutenção.


Recursos

Faixas e Lançamentos

FerramentaDescrição
list_tracksLista todas as faixas (interna, alfa, beta, produção) com lançamentos e disponibilidade por país
get_track_infoObtém status detalhado, % de lançamento progressivo e notas de versão para uma faixa específica
create_releaseCria ou substitui um lançamento em qualquer faixa com % de lançamento progressivo, notas de versão e segmentação por país
update_releaseAtualiza % de lançamento progressivo, pausa, retoma ou conclui um lançamento existente
promote_releasePromove um lançamento entre faixas (ex.: interna → alfa → beta → produção)

Gerenciamento de Artefatos

FerramentaDescrição
list_artifactsLista todos os APKs e AABs com seus códigos de versão e hashes SHA
upload_artifactEnvia um APK ou AAB e cria um lançamento em uma faixa em uma única etapa
upload_to_internal_sharingEnvia um build para o Compartilhamento Interno de Apps e obtém uma URL de download compartilhável

Gerenciamento de Testadores

FerramentaDescrição
get_testersObtém endereços de e-mail de testadores e Google Groups para testes internos/fechados
update_testersSubstitui a lista de testadores para uma faixa de testes interna ou fechada

Android Vitals

FerramentaDescrição
get_crash_rateTaxa diária de crashes e taxa de crashes percebida pelo usuário por código de versão
get_anr_rateTaxa diária de ANR e taxa de ANR percebida pelo usuário por código de versão
get_vitals_summaryVisão geral combinada de crashes + ANR com indicadores de limite de mau comportamento
get_wakelock_rateTaxa diária de wake locks presos em segundo plano por código de versão (saúde da bateria)
get_wakeup_rateTaxa diária de despertares excessivos por código de versão (saúde da bateria)

Pré-requisitos

  1. uv — guia de instalação
  2. Uma conta de serviço do Google Cloud com a chave JSON baixada.
  3. A conta de serviço adicionada ao Google Play Console com as permissões corretas (veja abaixo).
  4. Estas APIs habilitadas no seu projeto do Google Cloud:

Permissões necessárias no Play Console

FerramentasPermissão mínima necessária
upload_artifact, create_release, update_release, promote_release, update_testersLançar para produção, excluir dispositivos e usar assinatura de apps pelo Google Play
upload_to_internal_sharingLançar para faixas de teste
list_tracks, get_track_info, list_artifacts, get_testersVer informações do app e baixar relatórios em massa (somente leitura)
get_crash_rate, get_anr_rate, get_vitals_summary, get_wakelock_rate, get_wakeup_rateVer informações do app e baixar relatórios em massa (somente leitura) + Reporting API habilitada

Importante: O Gerenciador de Lançamentos não concede acesso à Reporting API. Você também deve habilitar Ver informações do app e baixar relatórios em massa (somente leitura) — tanto no nível da conta quanto no nível de cada app — para que as ferramentas de Vitals funcionem.


Integração com Claude Desktop

Adicione ao ~/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"
      }
    }
  }
}

Reinicie o Claude Desktop após salvar.


Configuração da conta de serviço

  1. Acesse IAM & Admin → Contas de serviço no seu projeto GCP.
  2. Crie uma conta de serviço (ou use uma existente) e baixe uma chave JSON.
  3. No Google Play Console → Configuração → Acesso à API:
    • Vincule seu projeto do Google Cloud.
    • Encontre a conta de serviço → Gerenciar permissões do Play Console.
    • Em Permissões da conta, habilite Ver informações do app e baixar relatórios em massa (somente leitura).
    • Em Permissões do app para cada app, habilite:
      • Ver informações do app e baixar relatórios em massa (somente leitura)
      • Lançar para produção… (se você precisar de acesso de escrita)
    • Clique em Aplicar → Convidar usuário.

As permissões devem ser concedidas tanto no nível da conta quanto no nível de cada app. Somente o nível da conta não é suficiente para a Reporting API.


Referência de ferramentas

list_tracks

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

Retorna todas as faixas com seus lançamentos, percentuais de lançamento progressivo, status e disponibilidade por país.


get_track_info

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

Retorna um resumo legível por humanos, além de lançamentos com status, % de lançamento progressivo, códigos de versão e notas de versão.


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"]

Cria ou substitui um lançamento na faixa especificada. Use status="inProgress" com um rollout_percentage para um lançamento de produção em etapas, ou status="completed" para lançar para todos os usuários imediatamente.


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

Atualiza um lançamento existente. Casos de uso comuns:

  • Aumentar lançamento progressivo: update_release(pkg, rollout_percentage=50)
  • Concluir lançamento: update_release(pkg, rollout_percentage=100)
  • Pausar lançamento: update_release(pkg, status="halted")
  • Retomar lançamento: 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 um lançamento de uma faixa para outra. As notas de versão e o nome são herdados do lançamento de origem, a menos que sejam explicitamente substituídos.


list_artifacts

package_name : str

Retorna todos os APKs e AABs ordenados por código de versão (mais recente primeiro) com 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

Envia um APK ou AAB (detectado automaticamente pela extensão) e cria um lançamento na faixa especificada em uma única operação atômica. Retorna o código de versão atribuído.


upload_to_internal_sharing

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

Envia um build para o Compartilhamento Interno de Apps (ignora a atribuição de faixa) e retorna um downloadUrl compartilhável. Os testadores devem ter o Compartilhamento Interno de Apps habilitado nas configurações da Play Store. Ideal para testes rápidos e pontuais sem afetar nenhuma faixa de lançamento.


get_testers

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

Retorna a lista de endereços de e-mail de testadores e Google Groups para a faixa.


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

Aviso: Esta é uma substituição completa. Testadores que não estiverem na nova lista perderão o acesso. Chame get_testers primeiro para recuperar a lista atual se você quiser apenas adicionar/remover pessoas.


get_crash_rate

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

Retorna crashRate, userPerceivedCrashRate e distinctUsers diários por código de versão. O limite de mau comportamento do Google para taxa de crashes percebida pelo usuário é ~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

Retorna anrRate, userPerceivedAnrRate e distinctUsers diários por código de versão. O limite de mau comportamento do Google para taxa de ANR percebida pelo usuário é ~0,47%.


get_vitals_summary

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

Retorna um resumo combinado de crashes + ANR agregado por código de versão, com médias ao longo do período e sinalizadores exceedsCrashThreshold / exceedsAnrThreshold. A versão mais recente é destacada 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

Retorna stuckBackgroundWakelockRate e distinctUsers diários por código de versão. Relevante para a fiscalização de saúde da bateria do Google Play em 2026 — apps com uma proporção excessiva de sessões mantendo um wake lock parcial por mais de 1 hora em segundo plano podem ser penalizados.


get_wakeup_rate

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

Retorna excessiveWakeupRate e distinctUsers diários por código de versão. Relevante para a fiscalização de saúde da bateria do Google Play em 2026 — apps que despertam a CPU com muita frequência (acima dos limites da plataforma) podem ser penalizados.


Solução de problemas

403 Forbidden nas ferramentas de Vitals

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

Este erro tem duas causas comuns — verifique ambas:

1. Google Play Developer Reporting API não habilitada

Habilite-a no seu projeto do Google Cloud: console.cloud.google.com/apis/library/playdeveloperreporting.googleapis.com

2. A conta de serviço não tem acesso à Reporting API por app

  1. Play Console → Configuração → Acesso à API → encontre a conta de serviço → Gerenciar permissões do Play Console.
  2. Em Permissões do app, selecione o app e habilite Ver informações do app e baixar relatórios em massa (somente leitura).
  3. Salve e aguarde alguns minutos para que a alteração seja propagada.

404 Package not found

A conta de serviço deve estar vinculada à mesma conta do Google Play Console que possui o app. Acesse Play Console → Configuração → Acesso à API e verifique se a conta de serviço está listada e foi convidada.


Marketplaces

RegistroLink
PyPIpip install google-play-mcp
Smitherypesquise google-play-mcp
Registro Oficial MCPgoogle-play-mcp

Licença

MIT