Skip to main content
Glama
durjoi

BQ Agent Gateway

by durjoi

BQ Agent Gateway

A read-only MCP server that connects Claude to BigQuery with layered guardrails against dangerous and expensive SQL.

What it blocks

Static AST validation (parsed with sqlglot, not regex):

  • Anything that isn't a SELECT (no INSERT/UPDATE/DELETE/MERGE/DDL)

  • SELECT * and table.* (but COUNT(*) is fine)

  • CROSS JOIN and implicit cartesian products (comma joins with no ON)

  • Multiple statements in one call (blocks SELECT 1; DROP TABLE ...)

  • Queries referencing datasets outside an allowlist

  • Missing LIMIT (auto-injected by default) and over-large LIMITs

BigQuery cost gate:

  • A dry-run estimates bytes scanned before running; over-threshold queries are rejected

  • Execution sets maximum_bytes_billed as a hard server-side cap, so even a mis-estimate can't overspend — BigQuery kills the job instead

  • Row count and wall-clock timeout are capped

Related MCP server: BigQuery MCP Server

Tools exposed

list_datasets, list_tables, describe_table, estimate_query_cost, run_query.

Setup

pip install -r requirements.txt        # or: uv pip install -r requirements.txt
cp .env.example .env                    # then edit values

# Auth: either set GOOGLE_APPLICATION_CREDENTIALS to a service-account key,
# or run:
gcloud auth application-default login

Give the service account only what it needs: roles/bigquery.dataViewer + roles/bigquery.jobUser. The dataViewer role cannot mutate data, so the read-only guarantee is enforced at the IAM layer too, not just in code.

Run

# stdio (for Claude Desktop)
python server.py

# or HTTP
fastmcp run server.py --transport http --port 8000

Register with Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "bq-agent-gateway": {
      "command": "python",
      "args": ["/absolute/path/to/bq-agent-gateway/server.py"],
      "env": {
        "BQ_PROJECT": "my-gcp-project",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/key.json",
        "BQ_ALLOWED_DATASETS": "analytics,prod_reporting",
        "BQ_MAX_BYTES_SCANNED_GIB": "5"
      }
    }
  }
}

Restart Claude Desktop; the BigQuery tools appear in the tools menu.

Design notes / defense in depth

The guardrails are structured as independent layers so a bypass of one doesn't defeat the rest:

  1. IAM — read-only service account can't write regardless of SQL.

  2. AST validation — shape checks that regex can't do reliably.

  3. Dry-run cost gate — the real budget protection for BigQuery.

  4. maximum_bytes_billed — hard cap enforced by BigQuery itself.

  5. Row/time caps — bound the response size and latency.

Toggle any static rule via env vars (see .env.example) without touching code.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    Enables natural language exploration and querying of Google BigQuery datasets through four tools: listing datasets, inspecting table schemas, generating SQL queries with LLM assistance, and executing approved queries.
    Last updated
    1
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables AI assistants to query and analyze Google BigQuery data, including schema browsing, running queries, and comparing datasets through natural language.
    Last updated
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/durjoi/bq_agent_gateway'

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