Claude Desktop’s BigQuery MCP: 90-Second Setup, Empty WooCommerce Results

May 19, 2026
by Cherry Rose

Google’s remote BigQuery MCP server reached general availability in May 2026, collapsing the Claude Desktop wiring story to three lines of JSON and a one-time OAuth flow. The setup takes 90 seconds. The disappointment takes another two minutes. For 9 out of 10 WooCommerce stores, the default ETL stack syncs only six entity types from the WooCommerce REST API—orders, products, customers, coupons, refunds, shipping—and zero behavioural events. Claude Desktop runs SQL against that warehouse and returns answers about completed orders, and almost nothing else about cart behaviour, traffic sources, or campaign attribution.

The 90-Second Setup Is Genuinely 90 Seconds

The wiring story collapsed to three lines of JSON and one OAuth flow—and that’s the easy part.

Google’s remote BigQuery MCP server reached general availability in early May 2026, enabled automatically when the BigQuery API is enabled in a project (Google Cloud documentation). The configuration story is now this short: open claude_desktop_config.json on macOS, drop in an mcpServers entry pointing at the remote endpoint, save, restart Claude Desktop. A browser tab opens, you authenticate through OAuth 2.0, and the session token is held internally.

There are no API keys to generate. There are no service account JSON files to download and protect. The remote BigQuery MCP server authenticates entirely through OAuth 2.0, which means the only access Claude Desktop ever has is the access your Google account has—nothing more, nothing pre-shared, nothing rotating.

The server exposes five tools to Claude Desktop: execute_sql, list_dataset_ids, list_table_ids, get_dataset_info, and get_table_info. Translation: Claude Desktop can list every dataset in your project, list every table inside each dataset, read the schema of each table, and run arbitrary SQL against any of them. That covers every read-side question you could ask about your warehouse.

The technical bar for “connect Claude Desktop to my data warehouse” has effectively collapsed to a one-time OAuth flow and three lines of JSON.

And that’s where the wiring story ends. The remaining problem—the one nobody warns you about in the setup docs—is the warehouse itself.

What Claude Desktop Can Ask (and What It Can’t)

The MCP server exposes five tools. What comes back depends entirely on what events sit in your tables.

The moment of disappointment is universally about two minutes after the OAuth flow finishes. You type something obvious. Claude Desktop runs the SQL. It comes back with nothing useful. Here’s what actually happens for the questions a WooCommerce owner wants to ask first:

“Which campaign drove revenue this hour?” Claude Desktop runs SELECT campaign, SUM(total) FROM orders WHERE created_at >= NOW() - INTERVAL 1 HOUR GROUP BY campaign. The query executes. The result set is empty—not because there were no orders, but because the orders table has no campaign column. The WooCommerce REST API doesn’t stamp campaign attribution onto order rows.

“Which products are getting added to cart but not purchased today?” Claude Desktop tries to find an add_to_cart events table. There isn’t one. The schema introspection returns six tables, none of them behavioural.

“Who’s the customer who placed three orders last week?” This one works. Customers and orders are both in the warehouse, and joining them on customer_id with a date filter returns a clean result. Order-shaped questions get order-shaped answers.

The pattern is consistent and uncomfortable. Anything that depends on behaviour, session, attribution, or pre-purchase intent returns empty. Anything that depends only on completed transactions returns useful data. The MCP server is doing its job perfectly. The warehouse is doing what it was built to do. The mismatch is between the questions a 2026 store owner wants to ask and the events a 2018-era REST API was designed to expose.

What Claude Desktop Tries to QueryWooCommerce ETL Synced?GA4 Enhanced Ecommerce Event
Completed order revenueYes (orders table)purchase
Product catalogYes (products table)view_item_list
Customer LTVYes (customers + orders)n/a
Product view velocityNoview_item
Add-to-cart eventsNoadd_to_cart
Checkout abandonmentNobegin_checkout, add_payment_info
Traffic source attributionNoutm parameters on session
Returning vs new customer splitPartial (no session ID)session_start + user_id

You may be interested in: Claude Desktop Has No GA4 Connector — So Your Data Now Belongs in BigQuery

Why the WooCommerce REST API Stops at Six Tables

The REST API was built to move purchase records, not session telemetry. Six entity types is the entire surface area.

The WooCommerce REST API exposes six entity types: orders, products, customers, coupons, refunds, and shipping (WooCommerce REST API documentation). Every ETL connector—Stitch, Fivetran, Airbyte, the bespoke Cloud Functions most agencies write—pulls from those same endpoints. The destination warehouse is therefore a faithful mirror of what the REST API exposes, which is a faithful mirror of what WooCommerce stores in its WordPress tables. None of those layers contain behavioural events, because none of them were designed to.

GA4’s recommended schema for retail is a different animal. The enhanced ecommerce specification recommends 12 events, most of them pre-purchase: view_item_list, select_item, view_item, add_to_cart, view_cart, remove_from_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund, and view_promotion (Google Analytics 4 documentation). Two of those map onto WooCommerce REST entities. Ten do not.

GA4 recommends 12 enhanced ecommerce events. The WooCommerce REST API exposes 6 entity types, none of them behavioural. Claude Desktop runs against the API output, not the GA4 spec.

The gap doesn’t show up in stores running Shopify, because Shopify emits the full event spectrum to its own analytics layer and (via partner connectors) to BigQuery. The gap is structural to WooCommerce-on-WordPress. Until events are captured outside the REST API path—either client-side via GA4 export, or server-side via a dedicated capture layer—the warehouse Claude Desktop queries simply doesn’t have the answers.

You may be interested in: The BigQuery Schema Every WooCommerce Live Artifact Will Quietly Demand

How to Make MCP Queries Actually Return Answers

The fix is upstream at event capture, not downstream at the query layer.

Two paths exist. The first is the GA4 BigQuery export, free on the GA4 standard tier, which writes one row per event with the full enhanced ecommerce schema. It’s complete for behavioural data but it’s daily-batch on standard GA4, lossy under consent restrictions, and it doesn’t include order-side facts like refund status or fulfilment events. Claude Desktop will happily query it, and the answers improve immediately—until you try to join behaviour to revenue with hourly granularity.

The second path is server-side capture. Events fire from WooCommerce hooks, get sent to a first-party Node.js server on your subdomain, and stream into BigQuery in seconds with a stable user_id and utm parameters stamped on every row. Transmute Engine™ emits the full GA4 enhanced ecommerce event spectrum directly to BigQuery alongside order data, so the same MCP query that Claude Desktop just configured returns the full picture instead of an empty table.

The reason this matters specifically for the MCP setup: Claude Desktop never sees the difference between an empty result and a missing column. If a query returns zero rows, the model has to guess whether that’s a real zero or a schema gap. Filling the warehouse with the right events removes the ambiguity, which is what makes Claude Desktop’s answers trustworthy enough to base decisions on.

The wiring story is finished. The data story is the one that determines whether any of it pays off.

Key Takeaways

  • Setup is cheap: Three lines of JSON in claude_desktop_config.json plus one OAuth flow. No API keys, no service accounts—about 90 seconds.
  • The MCP server exposes five tools: execute_sql, list_dataset_ids, list_table_ids, get_dataset_info, get_table_info—everything Claude Desktop needs to query a warehouse.
  • WooCommerce REST API exposes 6 entity types: orders, products, customers, coupons, refunds, shipping. Zero behavioural events. The default ETL stack mirrors that gap into BigQuery.
  • GA4 recommends 12 enhanced ecommerce events, most pre-purchase. Only two map onto WooCommerce REST entities. Claude Desktop is blind to the other ten by default.
  • The fix is server-side capture, not a smarter query. Stream behavioural events directly to BigQuery, and the same MCP query returns the answer that was previously empty.
<!– wp:yoast/faq-block {"questions":[{"id":"faq-question-e65d6e24-b6b5-424e-bea4-5784544a62cb","jsonQuestion":"How long does it take to connect Claude Desktop to BigQuery via MCP?","jsonAnswer":"Roughly 90 seconds. You add three lines of JSON to claude_desktop_config.json pointing at Google’s remote BigQuery MCP server, restart Claude Desktop, and complete a one-time OAuth flow in your browser. The wiring itself is genuinely a sub-two-minute job.”},{“id”:”faq-question-0b276fe3-8ae5-4896-afbc-f5174cd8f683″,”jsonQuestion”:”Why does Claude Desktop return empty answers for most WooCommerce stores?”,”jsonAnswer”:”The default WooCommerce-to-BigQuery ETL stack syncs six entity types from the WooCommerce REST API: orders, products, customers, coupons, refunds, and shipping. It does not sync behavioural events—no add_to_cart, no begin_checkout, no view_item, no session data, no traffic source. Claude Desktop can only query what’s already in the warehouse.”},{“id”:”faq-question-0d354a7c-136f-46a4-9694-300b6b2efe18″,”jsonQuestion”:”What does the Google BigQuery MCP server expose to Claude Desktop?”,”jsonAnswer”:”Five tools: execute_sql, list_dataset_ids, list_table_ids, get_dataset_info, and get_table_info. Claude Desktop can list every dataset and table in your project, inspect their schemas, and run arbitrary SQL—provided the rows you want to query already exist in those tables.”},{“id”:”faq-question-92af9f32-eb6c-4b47-a7f5-b5c431ba6f1d”,”jsonQuestion”:”What’s the fix for an empty WooCommerce BigQuery warehouse?”,”jsonAnswer”:”Stream behavioural events server-side directly to BigQuery alongside the order data. A first-party Node.js server like Transmute Engine emits the full GA4 enhanced ecommerce event spectrum—view_item, add_to_cart, begin_checkout, purchase, refund—with stable user_id and utm parameters stamped before insert, so Claude Desktop’s MCP queries actually return meaningful answers.”},{“id”:”faq-question-259fa070-b2c8-47f0-b7e3-a7698631f717″,”jsonQuestion”:”Do I need an API key for the BigQuery MCP server?”,”jsonAnswer”:”No. Google’s remote BigQuery MCP server authenticates through OAuth 2.0. You complete a browser-based authentication flow on first use, and Claude Desktop maintains the session token. No service account keys, no API keys, no shared secrets.”}]} –>
How long does it take to connect Claude Desktop to BigQuery via MCP?

Roughly 90 seconds. You add three lines of JSON to claude_desktop_config.json pointing at Google’s remote BigQuery MCP server, restart Claude Desktop, and complete a one-time OAuth flow in your browser. The wiring itself is genuinely a sub-two-minute job.

Why does Claude Desktop return empty answers for most WooCommerce stores?

The default WooCommerce-to-BigQuery ETL stack syncs six entity types from the WooCommerce REST API: orders, products, customers, coupons, refunds, and shipping. It does not sync behavioural events—no add_to_cart, no begin_checkout, no view_item, no session data, no traffic source. Claude Desktop can only query what’s already in the warehouse.

What does the Google BigQuery MCP server expose to Claude Desktop?

Five tools: execute_sql, list_dataset_ids, list_table_ids, get_dataset_info, and get_table_info. Claude Desktop can list every dataset and table in your project, inspect their schemas, and run arbitrary SQL—provided the rows you want to query already exist in those tables.

What’s the fix for an empty WooCommerce BigQuery warehouse?

Stream behavioural events server-side directly to BigQuery alongside the order data. A first-party Node.js server like Transmute Engine emits the full GA4 enhanced ecommerce event spectrum—view_item, add_to_cart, begin_checkout, purchase, refund—with stable user_id and utm parameters stamped before insert, so Claude Desktop’s MCP queries actually return meaningful answers.

Do I need an API key for the BigQuery MCP server?

No. Google’s remote BigQuery MCP server authenticates through OAuth 2.0. You complete a browser-based authentication flow on first use, and Claude Desktop maintains the session token. No service account keys, no API keys, no shared secrets.

References

  1. Google Cloud. “Use the BigQuery MCP server.” cloud.google.com/bigquery/docs/use-bigquery-mcp (2026).
  2. Google Cloud. “Pre-built tools with MCP Toolbox for BigQuery.” cloud.google.com/bigquery/docs/pre-built-tools-with-mcp-toolbox (2026).
  3. WooCommerce. “REST API Documentation.” woocommerce.github.io/woocommerce-rest-api-docs (2026).
  4. Google Analytics. “Enhanced ecommerce events (GA4).” developers.google.com/analytics/devguides/collection/ga4/ecommerce (2026).
  5. Anthropic. “Claude Desktop Live Artifacts.” support.anthropic.com (April 20, 2026).
  6. Model Context Protocol Specification. “MCP authentication.” modelcontextprotocol.io (2026).

Connect the MCP server in 90 seconds. Fill the warehouse with the events that make the queries worth running. See how Seresa streams the full event spectrum into BigQuery.

Share this post
Related posts