Setup guide
From install to your first read.
PubShip runs on your computer with your own Google credentials. This is the shortest path. Every step links to the full details on GitHub.
- Python 3.11 or later
- uv
- An MCP client
- Access to your app in Play Console
-
Install uv
PubShip is published on PyPI and runs with uvx, which comes with uv.
uv installation guideuv --versionDesktop clients can start with a different PATH from your terminal. Restart your client after installing uv.
-
Prepare your Google access
Use a service account you control. Grant only the access you need.
Google access guide, including gcloud and ADC- Enable the Google Play Android Developer API in your Cloud project.
- Create a service account, or reuse one you control.
- In Play Console, open Users and permissions, invite its email and grant access to your app. Read-only app information is enough to start.
- Save its JSON key on this computer, outside any repository, and note the absolute path.
Never paste the key's contents into a chat, a client setting, an issue or a website. PubShip only needs the file path.
For Android vitals, also enable the Google Play Developer Reporting API.
-
Add PubShip to your client
Set the key path and your app allowlist for the PubShip process. GOOGLE_PLAY_PACKAGES limits PubShip's requests; it does not change Google permissions.
Claude Code
export GOOGLE_APPLICATION_CREDENTIALS=/absolute/private/path/service-account.json export GOOGLE_PLAY_PACKAGES=com.example.appclaude mcp add --transport stdio pubship -- uvx pubshipDocumented command
Set GOOGLE_APPLICATION_CREDENTIALS and GOOGLE_PLAY_PACKAGES in the shell that launches Claude Code, then run /mcp to check the connection.
Full instructions on GitHubCodex
export GOOGLE_APPLICATION_CREDENTIALS=/absolute/private/path/service-account.json export GOOGLE_PLAY_PACKAGES=com.example.appcodex mcp add pubship -- uvx pubship codex mcp listDocumented command
Set GOOGLE_APPLICATION_CREDENTIALS and GOOGLE_PLAY_PACKAGES in the shell that launches Codex. Desktop apps can use a different PATH from your terminal.
Full instructions on GitHubCursor
- Service account key file
-
/absolute/private/path/service-account.json - Package names
com.example.app
Plugin manifest
Not a Cursor marketplace listing. The plugin starts uvx pubship. Enter the key file path, never the key contents.
Full instructions on GitHubGemini CLI
gemini extensions install https://github.com/pubship/pubshipExtension manifest
Native installation not verified. Enter your key file path and package names when prompted, then restart Gemini CLI.
Full instructions on GitHubAny stdio client
{ "mcpServers": { "pubship": { "command": "uvx", "args": ["pubship"], "env": { "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/private/path/service-account.json", "GOOGLE_PLAY_PACKAGES": "com.example.app" } } } }Standard stdio configuration
Command uvx, argument pubship. Keep shell syntax out of the command field.
Full instructions on GitHub -
Verify, then make a first read
The check needs no credentials and makes no Google call. It prints the PubShip name and installed version.
uvx pubship --checkThen confirm your client lists PubShip tools, and ask:
Show the production releases for com.example.app. Make no changes.
Expect a list_releases call with each release's name, version codes and lifecycle state. Waiting on Play Console access? Ask for two entries from the API catalog; it needs no credentials.
Stuck? Check these first.
Full troubleshooting table- Authentication failed
- Check the key path, the selected account and any impersonation permission. Restart the client after changes.
- HTTP 403
- The API may be off, or the service account lacks app access in Play Console.
- HTTP 429
- Google's quota was reached. Retry later instead of looping.
- No rows for a date
- Missing rows are not zero. Check that report's coverage before filling gaps.