Skip to main content
Glama
BigQuery MCP Server

BigQuery MCP Server

BigQuery MCP Server

An MCP server for BigQuery that lets you ask Claude questions about your search and analytics data warehouse and get real answers. Not raw query results. Actual analysis with verdicts and recommendations.

33 tools. GA4 + GSC revenue attribution. Generative AI conversation-query detection. ML forecasting. Anomaly detection. Anonymous query analysis. Free and open source.

Full setup guide with screenshots: suganthan.com/blog/bigquery-mcp-server/

New in v4.1 (AI conversation queries): suganthan.com/blog/ai-mode-queries-search-console/

New in v4.0 (GA4 integration): suganthan.com/blog/google-analytics-bigquery-mcp-server/

See it in action

"How much of my traffic is hidden behind anonymous queries?"

Anonymous traffic analysis showing the ~46% of clicks the GSC API hides

"Forecast my traffic for the next 90 days"

ARIMA_PLUS traffic forecasting with daily predictions and confidence intervals

"Are there any traffic anomalies I should investigate?"

ML anomaly detection flagging unusual traffic patterns

"Show me year over year seasonal trends"

Year over year monthly comparison with YoY percentage changes

"Show me queries where mobile and desktop rank different pages"

Device split analysis showing ranking discrepancies

"Break down my queries by search intent"

Intent classification: informational, transactional, commercial, navigational

"What are the most common terms in my queries?"

N-gram extraction showing recurring themes

"What new keywords appeared this week?"

New keyword discovery: queries appearing for the first time

Related MCP server: google-analytics-mcp

What you can ask

What are my quick win keywords?
Which pages are losing traffic and why?
Forecast my traffic for the next 90 days
Are there any traffic anomalies I should investigate?
How much of my traffic comes from anonymous queries?
Find the AI conversation fragments hiding in my queries
Show me year over year seasonal trends
What new keywords appeared this week?
Break down my queries by search intent
Show me queries where multiple pages are competing
Generate a full performance report
How does my CTR compare to benchmarks?
How is my /blog/ cluster performing?
Check for any SEO alerts in the last 7 days
Give me content recommendations

With the GA4 BigQuery export also connected (v4.0+):

Which keywords generate the most revenue?
Which pages have the biggest gap between rankings and conversions?
What is each search position worth on my site?
Which pages have a mismatch between their search snippet and actual content quality?
Compare branded vs non-branded performance for 'my brand, my-brand'
Show me page performance combining search and analytics data

Quick start

git clone https://github.com/Suganthan-Mohanadasan/Suganthans-BigQuery-MCP-Server.git
cd Suganthans-BigQuery-MCP-Server
npm install
npm run build

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "bigquery": {
      "command": "node",
      "args": ["/path/to/Suganthans-BigQuery-MCP-Server/dist/index.js"],
      "env": {
        "BIGQUERY_PROJECT_ID": "your-project-id",
        "BIGQUERY_KEY_FILE": "/path/to/service-account-key.json",
        "BIGQUERY_DEFAULT_DATASET": "searchconsole",
        "BIGQUERY_LOCATION": "US"
      }
    }
  }
}

Your service account needs three IAM roles: BigQuery Data Editor, BigQuery Data Viewer, and BigQuery Job User.

Need help with BigQuery setup, bulk export, service accounts, or permissions? The full guide walks through every step with screenshots.

Want the GA4 + GSC blending tools too? Add the GA4 BigQuery export and one extra environment variable (BIGQUERY_GA4_DATASET). Full walkthrough: GA4 + GSC in BigQuery setup guide.

All 33 tools

BigQuery exclusive (9)

These use BigQuery capabilities the Search Console API simply doesn't have.

Tool

What it answers

gsc_anonymous_traffic

How much traffic is hidden behind anonymous queries? The API hides ~46% of clicks entirely.

gsc_genai_conversation_queries

Which queries are AI conversation fragments? Seven kinds sorted, no API row limits, plus the anonymised split the API can't see.

gsc_forecast

ARIMA_PLUS traffic forecasting via BigQuery ML. Predict clicks up to 365 days out.

gsc_anomalies

ML anomaly detection. Flags genuinely unusual traffic patterns, not just threshold breaches.

gsc_seasonal

Year over year monthly comparison. Spot seasonal patterns with YoY percentage changes.

gsc_device_split

Queries where mobile and desktop rank entirely different pages from your site.

gsc_intent_breakdown

Classify all queries by search intent: informational, transactional, commercial, navigational.

gsc_ngrams

Extract recurring terms from queries. Find themes your content should cover.

gsc_new_keywords

Queries appearing in recent data that weren't present before.

GSC analysis (12)

The same analysis tools from the GSC MCP server, rebuilt to run on BigQuery's unsampled data.

Tool

What it answers

gsc_quick_wins

Keywords at positions 4 to 15 with high impressions, scored by opportunity

gsc_ctr_opportunities

Pages with high impressions but CTR below expected for their position

gsc_content_gaps

Topics with search demand but no real content targeting them

gsc_site_snapshot

How is the site doing overall? Clicks, impressions, CTR, position with period comparison

gsc_content_decay

Pages declining across three consecutive 30 day periods

gsc_cannibalisation

Keywords where multiple pages compete against each other

gsc_traffic_drops

What lost traffic, and whether it's a ranking loss, CTR collapse, or demand decline

gsc_topic_cluster

Aggregated performance for all pages matching a URL path pattern

gsc_ctr_benchmark

Your actual CTR per position vs industry benchmarks

gsc_alerts

Position drops, CTR collapses, click losses, disappeared pages. Severity rated

gsc_content_recommendations

Prioritised actions: pages to update, content to create, pages to consolidate

gsc_report

Full markdown performance report

GA4 + GSC blending (6, new in v4.0)

Require the GA4 BigQuery export running alongside GSC in the same project. Set BIGQUERY_GA4_DATASET (or pass ga4_dataset per call). Full setup guide.

Tool

What it answers

ga4_gsc_query_revenue

Which search queries actually drive revenue and conversions? Proportional attribution by click share.

ga4_gsc_content_roi

Which pages have the biggest gap between rankings and conversions? Diagnoses each page.

ga4_gsc_position_value

What is each search position worth on your site? Conversion rate and revenue per click by position bucket.

ga4_gsc_snippet_mismatch

Which pages have misleading or underselling snippets?

ga4_gsc_branded_performance

How does branded vs non-branded traffic convert?

ga4_gsc_page_performance

Full page-level search + analytics metrics joined per landing page.

General purpose (6)

Work with any BigQuery dataset, not just GSC.

Tool

What it does

query

Run any SELECT query. Claude writes the SQL for you.

query_cost_estimate

Dry run to see bytes scanned before executing.

list_datasets

Discover available datasets in your project.

list_tables

All tables and schemas in a dataset.

describe_table

Column types, row counts, partitioning, size.

sample_rows

Preview rows without writing SQL.

Why BigQuery instead of the GSC API?

GSC API

BigQuery bulk export

Sampling

Sampled at high volumes

Unsampled

Anonymous queries

Hidden entirely

Included

History

Rolling 16 months

Permanent (forward only, no backfill)

Query flexibility

Fixed parameters

Any SQL you want

ML capabilities

None

ARIMA forecasting, anomaly detection

Cost

Free

~$12 to $24/year

Both complement each other. Use the GSC MCP server for quick real time lookups. Use this for deeper analysis.

What makes this different

Analysis, not just queries. Most BigQuery tools give you raw SQL access. This ships with 27 pre-built SEO analysis tools: opportunity scoring, cannibalisation detection, decay tracking, CTR benchmarking, traffic drop diagnosis, ML forecasting, AI conversation-query detection, and GA4 + GSC revenue attribution. You ask a question, it runs the analysis and tells you what to do.

ML built in. ARIMA_PLUS traffic forecasting and anomaly detection run directly in BigQuery. No external services, no extra cost beyond standard BigQuery pricing.

Hallucination guardrails. Every tool instructs Claude to base analysis only on returned data. Provenance metadata in every response. Exact numbers, no speculation, insufficient data flagged.

Visual dashboards. Results render as rich, interactive visualisations in Claude Desktop. Summary cards, colour coded indicators, bar charts, and tabbed sections. Not plain text dumps.

Read only. Cost controlled. Only SELECT queries allowed. All mutations blocked. Auto-LIMIT on queries, 10GB bytes billed cap, dry run cost preview. EXPORT, CALL, and EXECUTE statements blocked.

Environment variables

Variable

Required

Description

BIGQUERY_PROJECT_ID

Yes

Your Google Cloud project ID

BIGQUERY_KEY_FILE

No

Path to service account JSON key (falls back to GOOGLE_APPLICATION_CREDENTIALS)

BIGQUERY_DEFAULT_DATASET

No

Default dataset for queries (e.g. searchconsole)

BIGQUERY_LOCATION

No

Dataset location (default: US). Set to EU, asia-southeast1, etc. if needed.

BIGQUERY_GA4_DATASET

No

GA4 export dataset name (e.g. analytics_123456789). Only needed for the 6 ga4_gsc_* blending tools.

Full guide

Step by step setup with screenshots, cost breakdowns, and honest comparison with dedicated SEO tools:

suganthan.com/blog/bigquery-mcp-server/

Changelog

v4.1.1 Position maths corrected across the 13 gsc_* tools. The bulk export's position columns are zero-based, and the older tools summed them without the + 1 that the ga4_gsc_* tools already applied, so average positions read one rank too good and position-band filters shifted by one (gsc_quick_wins asked for 4 to 15 and effectively selected 3 to 14). All 19 expressions are fixed, lookback windows now anchor to the export's latest data_date rather than the wall clock, and every affected tool description carries a note on how to read avg_position. Independently caught, evidenced and fixed by David Wulf in #1 before this landed; his PR also proposes five new tools, under review for the next release.

v4.1.0 Generative AI conversation queries, the BigQuery twin. gsc_genai_conversation_queries finds the AI conversation fragments hiding in your query data and sorts them into seven kinds: reply artefacts, pivot follow-ups, conversational questions, tracker probes, agent harnesses, pasted strings, and a review pile. Same classifier as the GSC MCP version, run over the bulk export instead of the API, so there are no serving limits on large sites, windows anchor to the export's real freshness, and it reports the anonymised split: how many of your impressions carry no query string at all, which is where most of the conversation pool hides (57.7% on the reference property). John Mueller made the same point on LinkedIn the day it launched: large sites will find more of these queries in the export than any other route returns. Total tools now 33. Full method and findings: the launch post.

v4.0.0 GA4 integration. 6 new tools that blend GA4 conversion and revenue data with GSC search data: ga4_gsc_query_revenue, ga4_gsc_content_roi, ga4_gsc_position_value, ga4_gsc_snippet_mismatch, ga4_gsc_branded_performance, and ga4_gsc_page_performance. Requires the GA4 BigQuery export running alongside GSC and one extra environment variable (BIGQUERY_GA4_DATASET). Total tools now 32. Full setup guide: GA4 + GSC in BigQuery.

Keyword revenue attribution demo: queries joined to GA4 conversion and revenue data via proportional click share

v3.1.0 Visual dashboard rendering. All GSC analysis tools now produce rich, interactive visualisations in Claude Desktop with summary cards, colour coded indicators, bar charts, and tabbed sections instead of plain text output. No reinstall needed, just restart Claude Desktop.

Visual dashboard rendering in Claude Desktop

v3.0.0 Initial release with 26 tools: 8 BigQuery exclusives (anonymous traffic, ML forecasting, anomaly detection, seasonal analysis, device split, intent breakdown, N-grams, new keywords), 12 GSC analysis tools, and 6 general purpose BigQuery tools.

Licence

Apache 2.0. See LICENSE and NOTICE for details. Use it, fork it, build on it. Just keep the attribution.

Built by Suganthan Mohanadasan. If you find it useful, star it.

Available Tools

32 tools
describe_tableA

Get detailed schema information for a specific BigQuery table including column names, types, descriptions, row count, size, partitioning, and clustering.

Inputs: table (required), dataset (required), project_id.

ga4_gsc_branded_performanceA

Compare branded vs non-branded organic traffic with engagement and conversion overlay from GA4. Shows how each traffic type performs across clicks, CTR, engagement rate, conversions, and revenue. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: brand_terms (required), days, ga4_dataset, gsc_dataset.

ga4_gsc_content_roiA

Find pages that rank well but don't convert (fix the page, not the SEO) and pages that convert brilliantly but have low rankings (invest in SEO, the payoff is proven). Diagnoses each page. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: days, max_rows, min_clicks, ga4_dataset, +1 more.

ga4_gsc_page_performanceA

Landing pages with BOTH search performance (clicks, impressions, position from GSC) AND engagement data (sessions, engagement rate, conversions from GA4) side by side. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: days, max_rows, min_clicks, ga4_dataset, +1 more.

ga4_gsc_position_valueA

What is each ranking position worth in revenue and conversions for YOUR site? Shows conversion rate and revenue per click by position bucket (1, 2-3, 4-5, 6-10, 11-20, 20+). Uses 90 days by default for statistical significance. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: days, max_rows, ga4_dataset, gsc_dataset.

ga4_gsc_query_revenueA

Which search queries actually drive revenue and conversions? Uses proportional attribution: if a page gets clicks from 3 queries, revenue is split by click share. The 'revenue per keyword' metric SEOs have wanted for years. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: days, max_rows, min_clicks, ga4_dataset, +1 more.

ga4_gsc_snippet_mismatchA

Find pages where SERP snippet performance doesn't match on-site engagement. High CTR + low engagement = misleading title/description. Low CTR + high engagement = great content with a bad snippet. Both are fixable. Requires GA4 BigQuery export. IMPORTANT: GA4 and GSC data are joined on normalised landing page URL. Join rates vary by site (typically 70-90%). Numbers may not match GA4 or GSC dashboards exactly due to URL normalisation, timezone differences (GSC uses Pacific Time, GA4 uses property timezone), and sampling. Report the join rate when relevant. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: days, max_rows, min_clicks, ga4_dataset, +1 more.

gsc_alertsA

Check for SEO alerts: position drops, CTR collapses, click losses, and pages that disappeared from search results. Returns severity-rated alerts so you know what needs attention first. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, ctr_drop_pct, click_drop_pct, +1 more.

gsc_anomaliesA

Detect traffic anomalies using BigQuery ML. Unlike threshold-based alerts, this understands seasonality and weekly patterns, so it only flags genuinely unexpected traffic changes. Requires sufficient historical data (ideally 6+ months). IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: dataset, anomaly_threshold.

gsc_anonymous_trafficA

Analyse anonymous (hidden) query traffic that the GSC API cannot show. Reveals what percentage of your clicks come from queries Google redacts, and which pages get the most hidden traffic. Only possible with BigQuery bulk export. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset.

gsc_cannibalisationA

Find keywords where multiple pages from your site compete against each other. Shows which pages rank for the same query and their respective positions. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_impressions.

gsc_content_decayA

Find pages with consistent traffic decline over three consecutive months from GSC bulk export data. One bad month is noise; three is a problem. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: dataset.

gsc_content_gapsA

Find topics you should create content for. Returns queries where you get impressions but rank beyond position 20, meaning there is search demand but no real content targeting it. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_position, min_impressions.

gsc_content_recommendationsA

Get actionable content recommendations by cross-referencing quick wins, content gaps, and cannibalisation data. Returns prioritised actions: pages to update, content to create, and pages to consolidate. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, max_recommendations.

gsc_ctr_benchmarkA

Compare your actual CTR per page against industry benchmarks by position. Flags pages significantly underperforming for their ranking position with verdicts. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_impressions.

gsc_ctr_opportunitiesA

Find pages with high impressions but CTR significantly below the expected benchmark for their ranking position. These are title and meta description optimisation candidates. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_impressions.

gsc_device_splitA

Find queries where mobile and desktop rank different pages from your site. This device cannibalisation is invisible in the GSC UI and impossible to detect via the API's 3-dimension limit. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_clicks.

gsc_forecastA

Forecast organic traffic using BigQuery ML ARIMA_PLUS. Trains a time-series model on your historical click data and projects future clicks with confidence intervals. Requires sufficient historical data (ideally 6+ months). This is only possible with BigQuery ML. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: dataset, horizon, confidence_level.

gsc_intent_breakdownA

Classify all your ranking queries by search intent (informational, transactional, commercial, navigational) using regex pattern matching at scale. Shows clicks, impressions, and CTR by intent category. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset.

gsc_new_keywordsA

Discover queries that appeared in your recent data but were not present in the baseline period. Useful for spotting new ranking opportunities, trending topics, or the impact of recently published content. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: dataset, recent_days, baseline_days, min_impressions.

gsc_ngramsA

Extract the most common meaningful terms across your entire query set, ranked by clicks. A lightweight alternative to keyword clustering that reveals emerging topics and content themes. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, min_query_count.

gsc_quick_winsA

Find keywords from GSC bulk export data at positions 4 to 15 with high impressions. These are striking distance keywords that could be pushed to page one. Sorted by traffic opportunity. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, max_position, min_impressions.

gsc_reportA

Generate a comprehensive markdown performance report. Covers site snapshot, alerts, quick wins, traffic drops, content decay, and recommendations. Returns the full report as markdown. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset, include_sections.

gsc_seasonalA

Year-over-year seasonal traffic analysis. Shows monthly clicks, impressions, CTR, and position with YoY comparison. Requires 12+ months of BigQuery data. Impossible with the 16-month rolling GSC API. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: dataset.

gsc_site_snapshotA

Get a quick overview of how the site is performing. Returns total clicks, impressions, CTR, position, unique pages and queries with a comparison to the prior period. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset.

gsc_topic_clusterA

See how a group of pages performs as a whole. Aggregates clicks, impressions, CTR, and position for all pages matching a URL path pattern, plus top pages and queries. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: url_pattern (required), days, dataset.

gsc_traffic_dropsA

Find pages that lost the most traffic recently. Compares current period vs prior period and diagnoses whether each drop is a ranking loss, CTR collapse, or demand decline. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing. PRESENTATION: Always present these results as a rich, interactive visualization using artifacts. Use summary cards for key metrics, colour-coded indicators for severity or change direction (green for positive, red for negative), bar charts or sparklines for comparisons, and tabbed sections to organise different categories of results. Make the output visually scannable and dashboard-like rather than plain text or raw tables.

Inputs: days, dataset.

list_datasetsA

List all datasets in the BigQuery project. Use this first to discover what data is available.

Inputs: project_id.

list_tablesA

List all tables in a BigQuery dataset with their schemas. Uses INFORMATION_SCHEMA for efficiency. Use this to understand what tables and columns are available before writing queries.

Inputs: dataset (required), project_id.

queryA

Run a SQL query against BigQuery and return results. Only SELECT queries are allowed. A LIMIT clause is automatically added if missing. Claude should use list_datasets, list_tables, and describe_table first to understand the schema before writing queries. IMPORTANT: Base your analysis ONLY on the data returned. Report exact numbers from the results. Do not speculate about causes (e.g. algorithm updates, competitor actions) unless the data explicitly supports it. If the data does not contain enough information to answer a question, say so clearly rather than guessing.

Inputs: sql (required), max_rows, project_id.

query_cost_estimateA

Dry-run a SQL query to see how many bytes it would scan without actually executing it. Use this before running expensive queries to check cost.

Inputs: sql (required), project_id.

sample_rowsA

Preview sample rows from a table without writing SQL. Useful for quickly understanding what data looks like. Limited to 1GB bytes billed.

Inputs: table (required), dataset (required), limit, project_id.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 32 tools

    Disambiguation2/5

    Many gsc_* tools have overlapping purposes, such as gsc_traffic_drops, gsc_content_decay, and gsc_alerts all addressing traffic declines, or gsc_ctr_opportunities and gsc_ctr_benchmark both focusing on CTR underperformance. The detailed descriptions help, but the sheer number of similar analytics tools creates ambiguity for an agent selecting the right one.

    Naming Consistency3/5

    All names use snake_case, which is consistent. However, the pattern is mixed: core BigQuery tools follow a verb_noun structure (list_datasets, describe_table), while the gsc_* and ga4_* tools use noun phrases with prefixes (gsc_quick_wins, ga4_gsc_revenue). This mixed convention is still readable but not uniformly predictable.

    Tool Count2/5

    With 32 tools, this server is over-scoped. The large block of gsc_* analytics tools (20+) significantly inflates the count beyond the 15-tool threshold for a well-scoped set. Even for an SEO analytics server, the count feels heavy, and for a general BigQuery server it is excessive.

    Completeness4/5

    The SEO analytics surface is remarkably comprehensive, covering snapshots, quick wins, CTR, content gaps, decay, cannibalisation, alerts, recommendations, forecasting, and GA4 integrations. The main gap is the lack of BigQuery write operations (create/update/delete), which may be acceptable for a read-only analytics server but is a notable omission for a general BigQuery tool.

    Maintenance

    ActivityStale
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      An MCP server that gives Claude read access to Umami web analytics, allowing natural language queries for stats, breakdowns, pageview trends, live visitors, and user journeys.
      10
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A powerful Model Context Protocol (MCP) server that provides comprehensive Google Analytics 4 (GA4), Google Search Console (GSC), and Google Merchant Center (GMC) integration for Claude Desktop and other MCP clients.
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Production-ready MCP server for BigQuery that translates natural language questions to SQL, executes queries securely, and delivers results via stdio or HTTP for integration with GitHub Copilot, Power BI, and web applications.
      864 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that provides Google Analytics and Search Console data as tools for AI assistants, enabling natural language queries for web analytics, SEO performance, and site insights.
      13
      MIT