Skip to main content
Glama
OldJii

google-play-vitals-mcp

by OldJii

Google Play Vitals MCP Server

PyPI version Python Version License: MIT MCP Protocol CI

Google Play Vitals MCP is a high-performance, token-efficient Model Context Protocol (MCP) server for the Google Play Developer Reporting API (Android Vitals).

Designed specifically for AI coding assistants and autonomous agents (Cursor, Claude Desktop, Claude Code, Codex, Windsurf, and Cline), it empowers AI to analyze Android production stability, diagnose ANRs (Application Not Responding), track crash trends, and verify startup optimizations (such as AndroidX Baseline Profiles) with minimal context token consumption.


🌟 Key Highlights

  • Token Economy by Design (Token Saver): Upstream Google Developer Reporting APIs return deeply nested, verbose Protobuf responses. Our built-in compression engine strips 80%+ redundant metadata and automatically reassembles raw frame data into clean, single-line standard Java stack traces (at com.example.Foo.bar(Foo.java:42)).

  • One-Shot Comprehensive Diagnosis (play_get_top_anr_summary): Eliminates the frustration of multi-turn tool roundtrips. A single tool call aggregates Top ANR clusters, affected user counts, occurrence numbers, and their representative de-obfuscated main thread stack traces.

  • Version Comparative Analysis (play_compare_versions): Specifically designed for quantifying release optimizations. Compare before-and-after versions (e.g., verifying ANR governance or Baseline Profile cold-start acceleration) with automated delta calculation and percentage improvement reporting.

  • Universal & Production Decoupled: Zero proprietary hardcoding. Supports any Android package, dynamic runtime parameters, environment variables, Service Account JSON files, JSON strings, or Google Application Default Credentials (ADC).

  • Zero-Latency In-Memory Hot Cache: Built-in 5-minute LRU cache prevents accidental quota exhaustion during multi-step AI reasoning.

  • Broad Agent Compatibility: Works out of the box with Cursor, Claude Desktop, Claude Code, Windsurf, Codex, and standard MCP JSON-RPC 2.0 stdio clients.


Related MCP server: MCP Google Play Store Server

🛠️ MCP Tools Overview

Tool Name

Type

Description

play_get_release_tracks

Release Discovery

Fetches active release tracks (PRODUCTION, BETA, ALPHA, INTERNAL) and serving releases with their release names and versionCodes. Essential for discovering latest stable releases.

play_search_error_issues

Issue Search

Searches error clusters (CRASH, ANR, or NON_FATAL) with full AIP-160 filter support (versionCode, isUserPerceived, appProcessState, etc.). Sorted by occurrences and user impact.

play_get_error_reports

Deep Drilldown

Fetches multi-device environmental samples and cleaned, de-obfuscated stack traces for an issue ID or resource name.

play_list_anomalies

Anomaly Monitor

Retrieves sudden metric spikes and regression alerts detected by Google Play algorithms.

play_list_accessible_apps

App Discovery

Lists all Google Play applications accessible by the configured service account.

2. Analytics & Convenience Tools

Tool Name

Type

Description

play_get_metric_trends

Metrics

Queries historical daily trends and overall averages for ANR, STARTUP (slow cold starts), or CRASH with optional version code filters.

play_compare_versions

Analytics

Compares metrics between two app versions (e.g. baseline 100 vs target 101) and computes net percentage improvement.

play_get_top_anr_summary

Quick Triage

One-shot aggregator for top ANR clusters and sample main-thread stack traces.

play_check_status

Diagnostics

Self-tests Python dependencies, GCP Service Account key presence, and environment readiness.

play_get_raw_error_reports

Legacy Alias

Backward-compatible alias for play_get_error_reports.

📝 MCP Prompts & Resources

Capability

Name / URI

Purpose

Prompt

analyze-anr-incident

Interactive prompt guiding AI to perform root-cause triage and generate architectural fixes.

Prompt

verify-baseline-profile

Automated audit prompt comparing release versions to quantify cold-start acceleration and ANR reductions.

Prompt

vitals-weekly-report

Executive prompt generating a weekly Android stability markdown dashboard.

Resource

vitals://status

Read-only JSON resource reporting connection health, credentials presence, and active configuration.


🚀 Quick Start

1. Installation

Option A: Install via pip or uv

pip install google-play-vitals-mcp
# or
uv pip install google-play-vitals-mcp

Option B: One-click Install via Smithery (Cursor / Windsurf / Claude)

npx -y @smithery/cli install google-play-vitals-mcp --client cursor

Option C: Docker Container

docker run -i --rm -v ~/.config/gcp:/gcp -e GOOGLE_APPLICATION_CREDENTIALS=/gcp/key.json google-play-vitals-mcp

2. Authentication & Credentials

Google Play Developer Reporting API requires enterprise authentication via a Google Cloud Service Account authorized with "View app quality data" read-only permission:

Option A: Google Cloud Service Account JSON Key (Standard)

  1. Ask your Google Play Console administrator (Account Owner) for a Service Account JSON key with "View app quality data" read-only permission.

  2. Set the environment variable:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/play_service_account.json"

Option B: CI/CD Plaintext JSON

export GOOGLE_PLAY_CREDENTIALS_JSON='{"type": "service_account", "project_id": "..."}'

🤖 AI Client Integration Guides

1. Cursor

Add to your project's .cursor/mcp.json or global Cursor settings:

{
  "mcpServers": {
    "google-play-vitals": {
      "command": "google-play-vitals-mcp",
      "args": [],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/play_service_account.json",
        "GOOGLE_PLAY_PACKAGE_NAME": "com.yourcompany.app"
      }
    }
  }
}

Note: You can also run with python -m google_play_vitals_mcp if installed in a specific virtual environment.

2. Claude Desktop

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "google-play-vitals": {
      "command": "google-play-vitals-mcp",
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/play_service_account.json",
        "GOOGLE_PLAY_PACKAGE_NAME": "com.yourcompany.app"
      }
    }
  }
}

3. Claude Code CLI

Add the MCP server directly via CLI:

claude mcp add google-play-vitals -- \
  google-play-vitals-mcp \
  --package-name com.yourcompany.app \
  --credentials /path/to/play_service_account.json

4. Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "google-play-vitals": {
      "command": "google-play-vitals-mcp",
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/play_service_account.json",
        "GOOGLE_PLAY_PACKAGE_NAME": "com.yourcompany.app"
      }
    }
  }
}

💡 Prompt Examples

Once configured, simply talk to your AI assistant:

  • "Find the top 10 Crashes and ANRs for our latest production release, along with de-obfuscated stack traces."

  • "Check Google Play Vitals connection status."

  • "Analyze the top ANR clusters in production right now and show me the problematic stack traces."

  • "Show me the daily ANR rate and slow startup rate for the last 14 days."

  • "Compare version 204000 against version 203000 to verify if our Baseline Profile and ANR fixes improved cold startup and reduced ANRs."

  • "Inspect issue apps/com.example/errorIssues/123456 and retrieve the raw device reports."


💻 CLI Commands

The package includes a built-in CLI:

# Check configuration and credentials readiness
google-play-vitals-mcp check -p com.example.app -c /path/to/key.json

# Launch MCP stdio server manually
google-play-vitals-mcp run -p com.example.app

# Check version
google-play-vitals-mcp --version

🔧 Environment Variables

Variable

Description

GOOGLE_APPLICATION_CREDENTIALS

Path to Google Cloud Service Account JSON key file.

GOOGLE_PLAY_CREDENTIALS_JSON

Raw JSON string of Service Account credentials (useful for CI/CD or Cloud runtimes).

GOOGLE_PLAY_PACKAGE_NAME

Default Android application package name (e.g. com.example.app).

GOOGLE_PLAY_CACHE_TTL

Cache duration in seconds (default: 300).


🧪 Development & Testing

# Clone repository
git clone https://github.com/OldJii/google-play-vitals-mcp.git
cd google-play-vitals-mcp

# Install in editable mode with dev dependencies
pip install -e ".[dev]"

# Run unit tests
pytest -v

# Run linting
ruff check .
ruff format --check .

📄 License

This project is licensed under the MIT License.

Available Tools

10 tools
play_check_statusC

Verify Google Play API dependencies, GCP Service Account credentials, and environment readiness.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameNoOptional target Android package name to verify.
credentials_pathNoOptional path to GCP service account JSON key file.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Verify' implies a non-destructive check, but the description doesn't explicitly state that no modifications occur, nor does it describe what the tool returns (e.g., success/failure indicators, diagnostics). The lack of any side-effect or result details is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the action verb ('Verify') and lists the three items being checked. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description should convey expected return values and operational details. It doesn't specify what 'environment readiness' means or what the tool outputs upon success/failure. For a status-check tool, this is incomplete—the agent doesn't know how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both parameters (package_name and credentials_path) have descriptive text. The description adds no additional meaning beyond the schema, which is the baseline for high coverage. Since parameters are optional and clearly explained, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Verify') and specific resources (Google Play API dependencies, GCP Service Account credentials, environment readiness). This differentiates it from sibling tools that retrieve data or list items; it's a status check. Not a tautology, though it could be more explicit about what 'verify' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the siblings. It doesn't mention that it's a preliminary check before other operations, nor does it list any exclusions or alternatives. The usage context is entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_compare_versionsA

[Version Comparison] Compare metrics between two app versions (e.g., before and after Baseline Profile / ANR fixes). Automatically calculates delta and percentage improvement.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays range to aggregate (default: 7).
metric_typeNoMetric to compare (default: 'ANR').
package_nameNoAndroid package name. Optional if environment variable is set.
target_versionYesTarget/newer version code (e.g. 201).
baseline_versionYesBaseline/older version code (e.g. 200).
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it 'Automatically calculates delta and percentage improvement', which is useful behavioral context beyond the schema. However, with no annotations provided, the description carries the full burden for behavioral disclosure. It doesn't mention whether this is a read-only operation, whether it requires special permissions, or what happens if versions are invalid. The delta/percentage calculation is a positive addition, but more behavioral context would be expected for a tool with zero annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the '[Version Comparison]' category tag, followed by a clear one-sentence purpose and a useful note about automatic delta calculation. It earns its place without being verbose. Minor improvement would be adding explicit usage guidance, but the current structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a comparison tool with 6 parameters and no output schema, the description covers the core purpose and the automatic calculation behavior. However, it doesn't describe the output format (what the delta/percentage looks like), which is important since there's no output schema. It also doesn't mention edge cases like missing data for a version. The description is adequate but leaves some gaps for an agent to discover at runtime.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters. The description adds context about the two key parameters (baseline_version and target_version) by framing them as 'before and after' versions, which helps an agent understand their relationship. However, it doesn't add detail about metric_type options or days aggregation beyond what the schema already provides. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: comparing metrics between two app versions, with a concrete example (Baseline Profile / ANR fixes). It uses a specific verb ('Compare') and resource ('metrics between two app versions'), and the '[Version Comparison]' prefix helps distinguish it from sibling tools like play_get_metric_trends or play_get_top_anr_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for when to use this tool (comparing before/after a change like Baseline Profile or ANR fixes) and implies it's for version-to-version comparison. It doesn't explicitly state when NOT to use it or name alternative tools, but the context is strong enough for an agent to select it appropriately among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_get_error_reportsB

[Atomic Error Reports & Stack Traces] Fetch detailed multi-device sample reports and cleaned de-obfuscated stack traces for a given error issue ID or resource name.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesError issue ID (e.g. 'd6f045ccd040889d') or full resource name ('apps/.../errorIssues/...').
page_sizeNoNumber of sample reports to retrieve (default: 3).
page_tokenNoOptional pagination token from previous call.
package_nameNoAndroid package name. Optional if environment variable is set.
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. 'Fetch' clearly implies a read-only operation, and 'cleaned de-obfuscated stack traces' conveys a transformation behavior beyond the schema. Still, it does not disclose authentication expectations, pagination behavior, error handling, or whether the operation has any side effects, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is compact and front-loaded, immediately stating the resource and purpose. The bracketed '[Atomic Error Reports & Stack Traces]' prefix is somewhat redundant jargon but does not bloat the description. Overall, it is appropriately sized with no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, no annotations, and no output schema, the description covers the main purpose and return content but leaves some context implicit. It does not explain when to prefer this over play_get_raw_error_reports, nor does it describe pagination or the meaning of 'sample reports' beyond the schema. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds only minimal semantic value beyond the schema by restating that issue_id can be an ID or resource name; it does not enrich the meaning of page_size, page_token, package_name, or credentials_path.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and names concrete resources ('detailed multi-device sample reports and cleaned de-obfuscated stack traces'). It also scopes the operation to 'a given error issue ID or resource name,' which clearly differentiates it from search-oriented siblings like play_search_error_issues and from play_get_raw_error_reports via the 'cleaned de-obfuscated' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you already have an error issue ID or resource name and want detailed reports/traces. However, it does not explicitly state when not to use it or mention alternatives such as play_get_raw_error_reports for raw traces or play_search_error_issues for discovery, so the usage guidance remains implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_get_raw_error_reportsA

[Deep-dive Drilldown] Fetch multi-device environmental samples and full stack traces for a specific error issue ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoNumber of sample reports to retrieve (default: 3).
issue_nameYesFull issue resource name (e.g., 'apps/.../errorIssues/...').
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, whether pagination is involved (despite the page_size parameter), or what happens when the issue ID is invalid. The mention of 'multi-device environmental samples and full stack traces' gives some expectation of the data scope, but it omits critical behaviors like potential large payloads or the need for authentication. This is a significant gap for a data-fetching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a clear, front-loaded bracket tag. It conveys the tool's purpose and scope in under 20 words, with no filler. The structure is efficient and immediately actionable for an agent, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description should explain what the tool returns and how the caller can use the response. It mentions 'environmental samples and full stack traces' but doesn't describe the response structure, pagination behavior, or error handling. The tool has three parameters (one required) and a specialized drill-down purpose, so the description gives the gist but leaves out details an agent might need to correctly parse the output. It's adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so all three parameters are already documented. The tool description adds minimal value: it reiterates that 'issue_name' identifies the error and implies 'page_size' controls sample count, but it doesn't explain the exact format of 'issue_name' beyond the schema's example or clarify the default behavior of 'page_size'. Since the schema already covers parameter meaning, the description doesn't need to repeat it, but it also doesn't enrich the semantics beyond what's structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Fetch') and resource ('multi-device environmental samples and full stack traces for a specific error issue ID'). The 'Deep-dive Drilldown' prefix and the specificity of 'raw' set it apart from siblings like play_get_error_reports, which presumably returns aggregated data. An agent can immediately understand what this tool does and when it would be useful.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an implied usage context ('Deep-dive Drilldown') but does not explicitly state when to use this tool over alternatives like play_get_error_reports or play_search_error_issues. It doesn't provide exclusion criteria or mention that raw stack traces are only needed for deep investigation. The guidance is implicit rather than explicit, so it falls short of a clear routing instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_get_release_tracksA

[Release Discovery] Fetch Google Play release tracks (PRODUCTION, BETA, ALPHA, INTERNAL) and active serving releases with their release names and versionCodes. Essential for automatically discovering the latest production version.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameNoAndroid package name (e.g. com.example.app). Optional if GOOGLE_PLAY_PACKAGE_NAME is set.
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It correctly implies a read-only fetch and enumerates the data returned (tracks, serving releases, versionCodes). However, it does not mention auth requirements, credentials behavior, or error/failure cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a category tag, a clear verb-first sentence, and a short use-case sentence. No redundant information is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two optional parameters and no output schema, the description adequately explains what the tool returns and why it should be used. It lacks details on edge cases like missing package_name or response shape, but these are not critical for this straightforward operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema; it only reinforces the purpose rather than clarifying parameter formats or behaviors.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and identifies the resource (Google Play release tracks, active serving releases, release names, versionCodes). This clearly distinguishes it from sibling tools focused on status, errors, and anomalies, though it does not explicitly name a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a concrete use case: 'Essential for automatically discovering the latest production version.' It does not mention alternatives or exclusions, but the context is clear enough for an agent to select it when release information is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_get_top_anr_summaryA

[One-shot Diagnosis] Retrieve top ANR error clusters along with affected user counts, occurrence rates, and representative cleaned main-thread stack traces. Eliminates back-and-forth round trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of top ANR clusters to retrieve (default: 5).
package_nameNoAndroid package name (e.g., com.example.app). Optional if GOOGLE_PLAY_PACKAGE_NAME is set.
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load for behavioral transparency. It accurately conveys a non-mutating read operation ('Retrieve') and adds that stack traces are 'cleaned' and 'representative', but it does not disclose any limitations, permission expectations, or edge cases. This is adequate but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief and front-loaded with the 'One-Shot Diagnosis' label followed by the core action and return items. Every sentence contributes meaning; no fluff. It is an efficient two-part sentence that fully conveys purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description appropriately lists the key return contents (affected user counts, occurrence rates, representative stack traces). It does not mention failure modes, pagination, or prerequisites, but for a tool with only optional parameters and a single summary action, this coverage is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 per the calibration. The description does not add meaning to any parameter (it doesn't mention 'limit' or 'package_name' or 'credentials_path'), and it does not compensate beyond the 'top' summary concept. No benefit over the schema is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb ('Retrieve') and a distinct resource ('top ANR error clusters'), and names concrete outputs (affected user counts, occurrence rates, representative cleaned main-thread stack traces). This clearly differentiates it from siblings like play_get_error_reports or play_search_error_issues, which do not promise a summarized 'top clusters' view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'One-Shot Diagnosis' label and 'Eliminates back-and-forth round trips' provide implied usage direction (when you want a quick, consolidated diagnosis). However, there are no explicit when-to-use versus alternatives, no exclusions, and no advice about when to prefer play_get_error_reports or play_search_error_issues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_list_accessible_appsB

[Account Apps Discovery] List all Google Play applications accessible by the configured GCP Service Account.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoNumber of apps to retrieve (default: 20).
page_tokenNoOptional pagination token from previous call.
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool lists apps accessible by the service account, which implies a read-only operation, but it does not mention pagination behavior, authentication requirements, or what happens if credentials are missing. The description adds minimal behavioral context beyond the operation itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with a useful category prefix. It is concise and contains no filler, though it could have added a brief note about pagination without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with fully documented parameters, the description is mostly complete. However, with no annotations and no output schema, it would benefit from stating that results are paginated and that the tool is read-only. The absence of any behavioral or return-value context leaves a small but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add extra meaning about how page_size, page_token, or credentials_path interact, but the baseline of 3 is appropriate because the schema covers the parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('Google Play applications accessible by the configured GCP Service Account'), and the '[Account Apps Discovery]' prefix adds context. It is clear enough to distinguish from siblings like play_get_release_tracks or play_list_anomalies, though it does not explicitly name a sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a discovery/listing use case and the '[Account Apps Discovery]' prefix signals when to use it, but it does not explicitly state when not to use it or name alternative tools. The context is adequate but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_list_anomaliesA

[Anomaly Detection] List production metric anomalies and sudden regression spikes detected by Google Play algorithms for the application.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoNumber of anomalies to retrieve (default: 10).
page_tokenNoOptional pagination token from previous call.
package_nameNoAndroid package name. Optional if environment variable is set.
credentials_pathNoOptional path to GCP credentials JSON.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description must carry all behavioral details, but it only states the list intent. It fails to disclose response format, authentication prerequisites, rate limits, or whether it is read-only, leaving the agent in the dark about operating effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A concise single sentence that fronts the primary verb and outcome, with the '[Anomaly Detection]' label providing scope without bloat. There is no redundancy, and every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and no annotations, the description is thin on what the agent will actually receive: response shape, time, and how pagination threads through. The schema covers parameters; a few words about return structure (or reference to page_token behavior) would help close the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 4 parameters with descriptions (100% coverage), so the tool description does not need to repeat them. It adds no parameter-level meaning, but the schema handles that burden, earning the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'list' and identifies a precise resource: production metric anomalies and sudden regression spikes. The mention of Google Play algorithms and the '[Anomaly Detection]' label clearly differentiates this from siblings like play_get_metric_trends or play_get_error_reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving Play-detected anomalies but offers no explicit when-to-use guidance or alternatives. It does not tell the agent when to choose this over analyzers like play_get_metric_trends, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_search_error_issuesB

[Atomic Issue Cluster Search] Search Google Play error clusters (CRASH, ANR, or NON_FATAL) with full AIP-160 filter support. Filter by specific versionCode, user-perceived state, or process state (FOREGROUND/BACKGROUND). Sorted by user impact and occurrences.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNoNumber of top error clusters to retrieve (default: 10, max: 50).
error_typeYesError cluster type to retrieve.
page_tokenNoOptional pagination token from previous call.
package_nameNoAndroid package name. Optional if environment variable is set.
version_codeNoOptional specific Android versionCode filter (e.g. 100200).
custom_filterNoOptional raw AIP-160 filter expression (e.g. 'deviceModel = "google/walleye"').
credentials_pathNoOptional path to GCP credentials JSON.
app_process_stateNoOptional filter for app process state.
is_user_perceivedNoOptional filter to match only user-perceived error issues.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It states sorting behavior and filter options but does not mention authentication requirements, rate limits, read-only nature, or pagination semantics beyond the schema. The absence of these operational details leaves significant gaps for a tool with 9 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. The core action is front-loaded ('Search Google Play error clusters'), and key filters are summarized succinctly. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters including pagination and enums, the description covers the main purpose and key filters but omits details like pagination usage, authentication, and return format. Since there is no output schema, the description should hint at response structure; it only mentions sorting. The gaps are moderate given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by grouping filters (versionCode, user-perceived state, process state) and highlighting AIP-160 filter support, which maps to custom_filter. This complements the schema without redundancy, enhancing the agent's understanding of parameter relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches Google Play error clusters and enumerates the error types (CRASH, ANR, NON_FATAL). It mentions filtering and sorting, giving a specific verb-resource pair. However, it does not explicitly name sibling alternatives like play_get_error_reports or play_get_top_anr_summary, so differentiation is implicit via the term 'error clusters'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching error clusters with advanced AIP-160 filters, but it does not explicitly say when to choose this tool over siblings. It mentions 'full AIP-160 filter support' suggesting power users, but lacks exclusions or direct comparisons to other Play Console tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.3.1
    • First observedplay_check_status
    • First observedplay_compare_versions
    • First observedplay_get_error_reports
    • First observedplay_get_metric_trends
    • First observedplay_get_raw_error_reports
    • First observedplay_get_release_tracks
    • First observedplay_get_top_anr_summary
    • First observedplay_list_accessible_apps
    • First observedplay_list_anomalies
    • First observedplay_search_error_issues

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Tools are largely distinct, each targeting a specific aspect of Google Play Vitals (status, releases, errors, anomalies, metrics, versions). The only potential confusion is between play_get_error_reports and play_get_raw_error_reports, but the descriptions clarify different levels of detail (cleaned vs. raw).

Naming Consistency5/5

All tools follow a consistent 'play_' prefix with snake_case verb_noun patterns (e.g., list_anomalies, compare_versions, get_metric_trends). There are no mixed conventions or ambiguous verbs, making the naming highly predictable.

Tool Count5/5

With 10 tools, the server is well-scoped for its purpose. Each tool adds value—covering discovery, error analysis, metrics, and anomaly detection—without redundancy or overwhelming bloat. The count fits comfortably within the ideal 3-15 range.

Completeness4/5

The tool set covers the main workflows for monitoring Google Play Vitals: release tracking, error cluster search, detailed reports, ANR summaries, metric trends, and version comparisons. Minor gaps exist (e.g., no dedicated tool for fetching specific version metrics), but agents can work around them using existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language analysis of Perfetto traces to diagnose Android app performance issues like ANRs, jank, CPU hotspots, memory leaks, and lock contention without writing SQL queries.
    218
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates Google Play Store management tools with AI assistants to handle app listings, releases, and user reviews. It enables users to manage Play Console tasks like updating store information and retrieving performance statistics through natural language.
    26 npm
    10
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to manage Google Play Console reviews and Android app releases, including replying to reviews, promoting releases, managing staged rollouts, and checking crash/ANR vitals.
    44
    11 npm
    1
    MIT