Skip to main content
Glama
ducnhd

google-data-mcp

by ducnhd

google-data-mcp

PyPI

An MCP server for four Google data surfaces that answer to plain HTTP — no API key, no browser, no scraping service:

Tool

What it returns

google_trends_interest

Interest over time for one keyword (0–100, weekly or hourly points)

google_trends_compare

Up to 5 keywords in ONE request, so the values are comparable

google_trends_trending

What is trending right now in a country

youtube_listing

A channel's Shorts, a channel's videos, or search results

google_ads_advertisers

Advertisers in the Ads Transparency Center, by name

google_ads_creatives

Every ad an advertiser runs — format, preview URL, first/last shown

google_play_reviews

App reviews — rating, text, date, version, developer reply

Read this before you install

Everything leaves from your machine's IP, and Google's per-IP budget accumulates over hours. This is not a caveat buried at the bottom; it is the main thing that decides whether this server is right for your job.

Measured: an unpaced burst was rate-limited at request 93, and after roughly 130 paced requests spread over hours the same address was refused on the first request of a fresh session. While writing this server, both the author's IPs — a home connection and a datacenter VPS — ended the day refused by Google Trends.

So this server caches every result on disk (~/.cache/google-data-mcp) and paces its requests. That is enough for interactive use: asking an agent a handful of questions, exploring a topic, checking a competitor. It is not enough for bulk work, and no amount of local code can make one IP behave like many.

If you need volume, the same clients run behind rotating proxies as Apify Actors: Google Trends · YouTube · Ads Transparency.

Related MCP server: bigquery-google-trends-mcp

What is deliberately missing

YouTube transcripts. They look available — the watch page still lists caption tracks — but api/timedtext returns zero bytes and /youtubei/v1/get_transcript answers Precondition check failed even when sent the page's own INNERTUBE_CONTEXT and visitorData, and the ANDROID and IOS player clients are refused the same way. A transcript tool here would be a promise this server cannot keep, so there isn't one.

Install

pipx install google-data-mcp
# or: pip install google-data-mcp
# or, without installing anything: uvx google-data-mcp

Then register it with your MCP client. For Claude Code:

claude mcp add google-data -- google-data-mcp

Or by hand, in an MCP client config:

{
  "mcpServers": {
    "google-data": {
      "command": "google-data-mcp"
    }
  }
}

Notes on the data

  • Trends values are relative within a single request. Two separate google_trends_interest calls are not comparable to each other; that is what google_trends_compare is for. Google caps a comparison at 5 terms and silently drops a 6th, so a 6th is refused rather than quietly ignored.

  • Play reviews differ per locale. Each hl/gl pair returns a different set of reviews — six locales gave 120 unique reviews of the same app. Vary them to widen coverage rather than paging deeper in one language.

  • Reviewer identity is omitted by default. The records carry an author name, avatar and Google account id; rating, text, date and version answer product questions without them. Set include_author if you genuinely need the name.

  • Zero ads is a real answer. Google keeps advertisers whose ads have stopped running and still reports a count for them, so an empty ads list with a non-zero declared count is information, not a failure.

  • searchVolume on trending terms is Google's own rounded bucket, not a precise count.

These are public pages, but none of them has an official public API and each platform's Terms of Service restrict automated access. You are responsible for how you use the output. No personal data is collected by default.

Development

python -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m google_data_mcp        # speaks MCP over stdio

Each client is plain standard library and can be exercised on its own, which is the fastest way to check whether Google changed something:

.venv/bin/python -c "from google_data_mcp.play import PlayClient; print(len(PlayClient().reviews('com.spotify.music', limit=40)))"

Available Tools

7 tools
google_play_reviewsA

Reviews for an Android app: rating, text, date, app version, thumbs-up and the developer's reply. Reviewer names and avatars are omitted unless you ask for them. Note each language/country returns a DIFFERENT set of reviews, so vary hl/gl to widen coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoCountry code.US
hlNoLanguage code. Each language returns a different set of reviews.en
sortNoGoogle's own ordering.relevant
limitNoMaximum reviews.
app_idYesAndroid package name, e.g. com.spotify.music.
include_authorNoInclude the reviewer's display name. Off by default: it is personal data and rarely needed for product or ASO analysis.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses that reviewer names and avatars are omitted by default because they are personal data, and explains the language/country variability. This adds meaningful behavioral context beyond the schema.

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, front-loaded with the core purpose, and every phrase adds value. It is tightly written without redundancy or irrelevant details.

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?

The description mentions the return fields, the personal data omission, and the language/country coverage tip, which collectively give a good sense of what to expect. It does not discuss sort/limit behavior, but those are already documented in the schema.

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?

The schema already covers 100% of parameters, so the baseline is 3. The description adds value by explaining the interplay between hl/gl and review coverage, and by clarifying why include_author defaults to false (personal data concern). This exceeds baseline.

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 identifies the tool as fetching Android app reviews and enumerates the data fields (rating, text, date, app version, thumbs-up, developer reply). It lacks an explicit verb like 'get' or 'fetch', but the resource and scope are specific enough to distinguish it from sibling tools.

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 direct usage guidance: varying hl/gl to widen coverage and acknowledging that each language/country returns different reviews. It does not explicitly contrast with sibling tools or state when NOT to use it, but the context is clear.

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

youtube_listingA

List videos from YouTube: a channel's Shorts tab, a channel's videos tab, or search results. Returns videoId, title, view count, and (for videos/search) a publish date. Transcripts are NOT available from this server — Google gates them behind a token this server cannot mint.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhich listing to read.videos
limitNoMaximum rows. Pagination stops early if the listing runs out.
targetYesA channel (@handle, UC… id or URL) for 'shorts'/'videos'; a search query for 'search'.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose key behavioral traits: return fields and the transcript limitation caused by server token restrictions. It does not mention authentication, rate limits, or ordering, but for a read-only listing tool this is reasonably transparent.

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 no filler. The first sentence defines purpose and modes, the second covers return fields and a critical limitation. Every sentence earns its place.

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

Completeness5/5

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

For a simple 3-parameter tool with no output schema, the description is complete: it covers the three listing modes, what fields are returned, and the main constraint. The schema covers parameter details like limit and pagination behavior, so the description does not need to repeat those.

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?

All three parameters are already described in the schema (100% coverage), so the description adds minimal new parameter semantics. It does clarify the target parameter's meaning per kind, but this is already present in the schema description, so no extra value beyond the baseline.

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 lists videos from YouTube, enumerates the three specific modes (Shorts, videos, search), and lists return fields. It is immediately distinguishable from sibling tools which focus on Google Trends, Google Ads, and Play Reviews.

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 clearly implies when to use the tool (for listing YouTube videos from channels/search) and explicitly states a limitation (transcripts unavailable). However, it does not name alternative tools or provide when-not-to-use guidance beyond the transcript caveat, so it lacks explicit exclusions.

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. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.0
    • First observedgoogle_ads_advertisers
    • First observedgoogle_ads_creatives
    • First observedgoogle_play_reviews
    • First observedgoogle_trends_compare
    • First observedgoogle_trends_interest
    • First observedgoogle_trends_trending
    • First observedyoutube_listing

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct Google service or distinct operation within a service. google_trends_compare and google_trends_interest are clearly differentiated by their normalization semantics, and the ad tools (advertisers vs creatives) have distinct purposes. No two tools could be easily confused.

Naming Consistency4/5

Tool names follow a consistent service-prefix pattern (google_trends_, google_ads_, youtube_, google_play_), but the second part mixes nouns, verbs, and gerunds (e.g., compare, trending, listing, advertisers, creatives, reviews). While not perfectly uniform, the pattern is predictable and readable.

Tool Count5/5

With 7 tools, the set is well-scoped. It covers multiple Google data services without bloating, and each tool addresses a common use case, making the count feel right for the stated purpose.

Completeness4/5

The tool surface covers core workflows for Trends (compare, trending, interest), Ads (advertiser search and creatives), YouTube (listing videos), and Play (reviews). Minor gaps exist (e.g., no YouTube channel details, no Play app metadata), but the essential read operations are present. The server explicitly notes limitations like no transcripts, which clarifies its boundaries.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides Google Search trend data as an MCP tool, with historical series, growth percentages, and live trending searches, no scraping or rate limits.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that exposes Google Trends data via BigQuery, enabling LLMs to query top search terms, rising terms, and compare term interest over time for different countries.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides free Google Trends data (interest over time, term comparison, related queries, trending now, regional breakdown) to MCP-compatible AI clients without needing an API key.
    5
    98
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ducnhd/google-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server