BigQuery MCP Server
This server is an MCP tool that lets Claude analyze BigQuery data—especially Google Search Console bulk exports and GA4 data—to answer SEO and analytics questions with actual analyses, verdicts, and recommendations.
Ask natural-language questions about traffic, keywords, rankings, revenue, and content performance.
Run general BigQuery operations: list datasets and tables, describe schemas, preview rows, estimate query costs, and execute SELECT-only SQL queries.
GSC-only BigQuery analyses: anonymous traffic share, AI conversation-query detection, ARIMA_PLUS traffic forecasting, ML anomaly detection, year-over-year seasonal trends, device/page ranking splits, search-intent classification, n-gram extraction, and new keyword discovery.
Standard GSC analysis tools: quick wins, CTR opportunities, content gaps, site snapshots, content decay, cannibalisation, traffic drop diagnosis, topic clusters, CTR benchmarking, SEO alerts, content recommendations, and full markdown reports.
GA4 + GSC blended analysis (when GA4 export is connected): keyword revenue attribution, content ROI, position value, snippet mismatch detection, branded vs non-branded performance, and combined page performance.
Rich visual dashboards: results render as interactive artifacts with summary cards, color-coded indicators, charts, and tabbed sections.
Safety and cost controls: read-only queries, automatic LIMITs, dry-run cost estimates, and a bytes-billed cap.
Works with any BigQuery dataset via the general-purpose tools, not just Search Console or GA4 data.
Integrates with Google Cloud BigQuery to run SQL queries, manage datasets and tables, perform ML-based forecasting and anomaly detection, and analyze data from Google Search Console and Google Analytics exports.
Provides tools for analyzing Google Search Console data stored in BigQuery, including search query analysis, keyword performance, traffic forecasting, anomaly detection, content recommendations, and SEO diagnostics.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BigQuery MCP Server forecast my traffic for the next 90 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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?"

"Forecast my traffic for the next 90 days"

"Are there any traffic anomalies I should investigate?"

"Show me year over year seasonal trends"

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

"Break down my queries by search intent"

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

"What new keywords appeared this week?"

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 recommendationsWith 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 dataQuick start
git clone https://github.com/Suganthan-Mohanadasan/Suganthans-BigQuery-MCP-Server.git
cd Suganthans-BigQuery-MCP-Server
npm install
npm run buildAdd 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 |
| How much traffic is hidden behind anonymous queries? The API hides ~46% of clicks entirely. |
| Which queries are AI conversation fragments? Seven kinds sorted, no API row limits, plus the anonymised split the API can't see. |
| ARIMA_PLUS traffic forecasting via BigQuery ML. Predict clicks up to 365 days out. |
| ML anomaly detection. Flags genuinely unusual traffic patterns, not just threshold breaches. |
| Year over year monthly comparison. Spot seasonal patterns with YoY percentage changes. |
| Queries where mobile and desktop rank entirely different pages from your site. |
| Classify all queries by search intent: informational, transactional, commercial, navigational. |
| Extract recurring terms from queries. Find themes your content should cover. |
| 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 |
| Keywords at positions 4 to 15 with high impressions, scored by opportunity |
| Pages with high impressions but CTR below expected for their position |
| Topics with search demand but no real content targeting them |
| How is the site doing overall? Clicks, impressions, CTR, position with period comparison |
| Pages declining across three consecutive 30 day periods |
| Keywords where multiple pages compete against each other |
| What lost traffic, and whether it's a ranking loss, CTR collapse, or demand decline |
| Aggregated performance for all pages matching a URL path pattern |
| Your actual CTR per position vs industry benchmarks |
| Position drops, CTR collapses, click losses, disappeared pages. Severity rated |
| Prioritised actions: pages to update, content to create, pages to consolidate |
| 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 |
| Which search queries actually drive revenue and conversions? Proportional attribution by click share. |
| Which pages have the biggest gap between rankings and conversions? Diagnoses each page. |
| What is each search position worth on your site? Conversion rate and revenue per click by position bucket. |
| Which pages have misleading or underselling snippets? |
| How does branded vs non-branded traffic convert? |
| 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 |
| Run any SELECT query. Claude writes the SQL for you. |
| Dry run to see bytes scanned before executing. |
| Discover available datasets in your project. |
| All tables and schemas in a dataset. |
| Column types, row counts, partitioning, size. |
| 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 |
| Yes | Your Google Cloud project ID |
| No | Path to service account JSON key (falls back to |
| No | Default dataset for queries (e.g. |
| No | Dataset location (default: |
| No | GA4 export dataset name (e.g. |
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.

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.

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 toolsdescribe_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
Scored across 32 tools
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.
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.
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.
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
Related MCP Connectors
Hosted BigQuery MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Google Search Console, GA4 and PageSpeed MCP server for Claude, ChatGPT and Cursor. Free, hosted.
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn 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.101MIT
- AlicenseNot gradedqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceProduction-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 npmMIT
- AlicenseAqualityDmaintenanceAn 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.13MIT