A general SQL tool on BigQuery risks two expensive mistakes — a modifying statement and a query that scans a fortune. Both are refused here at the tool boundary rather than left to prompting, which is why this is a narrower and safer thing to hand an agent than a generic client. The trade is real: you cannot write, and a legitimately large analytical query will be blocked.
A BigQuery query runner with a validation step built into the contract. It can estimate a query's processing size without running it, and its execution tool refuses data-modifying statements and anything that would scan more than 1TB.
- A dry run that validates the query and estimates how much data it will process, checked against the 1TB limit — `dry_run_query`
- Query execution that rejects DML statements and over-limit scans before running, and returns results as structured JSON — `run_query_with_validation`
Google Cloud authentication, either `gcloud auth application-default login` or a service account key path in `GOOGLE_APPLICATION_CREDENTIALS`. Node.js v16 or higher. Runs as a Node process against the built `build/index.js`. The package is `bigquery-analysis-mcp-server` 0.1.0.
One command plus a key — npx -y github:gotalab/bigquery-analysis-mcp-server, then supply credentials
