Skip to main content
Glama
caron14

BigQuery Validator

by caron14

mcp-bigquery

Safe BigQuery exploration through Model Context Protocol

MIT License PyPI Version Python Support Downloads

Documentation | Quick Start | Tools | Examples


πŸ“Œ What is this?

mcp-bigquery is an MCP (Model Context Protocol) server that enables AI assistants like Claude to safely interact with Google BigQuery.

🎯 Key Features

graph LR
    A[AI Assistant] -->|MCP Protocol| B[mcp-bigquery]
    B -->|Dry-run Only| C[BigQuery API]
    B -.->|❌ Never Executes| D[Actual Query Execution]
  • πŸ›‘οΈ 100% Safe: All operations are dry-run only (never executes queries)

  • πŸ’° Cost Transparency: See costs before running any query

  • πŸ” Complete Analysis: Analyze dependencies and validate SQL syntax

  • πŸ“Š Schema Explorer: Browse datasets, tables, and columns with ease

⚑ Why use mcp-bigquery?

Problem

Solution with mcp-bigquery

πŸ’Έ Accidentally running expensive queries

Check costs before execution

πŸ› Wasting time on SQL errors

Detect syntax errors before running

πŸ—ΊοΈ Unknown table structures

Easily explore schemas

⚠️ AI executing dangerous operations

Everything is read-only and safe

Related MCP server: MySQL MCP

πŸš€ Quick Start (4 minutes)

Step 1: Install (1 minute)

pip install mcp-bigquery

Step 2: Authenticate with Google Cloud (2 minutes)

# For personal accounts
gcloud auth application-default login

# For service accounts
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json

Step 3: Configure Claude Desktop (1 minute)

Open your Claude Desktop config:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add this configuration:

{
  "mcpServers": {
    "mcp-bigquery": {
      "command": "mcp-bigquery",
      "env": {
        "BQ_PROJECT": "your-gcp-project-id"  // ← Replace with your project ID
      }
    }
  }
}

Step 4: Test It!

Restart Claude Desktop and try these questions:

"What datasets are available in my BigQuery project?"
"Can you estimate the cost of: SELECT * FROM dataset.table"
"Show me the schema for the users table"

πŸ› οΈ Available Tools

πŸ“ SQL Validation & Analysis

Tool

Purpose

When to Use

bq_validate_sql

Check SQL syntax

Before running any query

bq_dry_run_sql

Get cost estimates & metadata

πŸ’° To check costs

bq_extract_dependencies

Extract table dependencies

To understand data lineage

bq_validate_query_syntax

Detailed error analysis

To debug SQL errors

πŸ” Schema Discovery

Tool

Purpose

When to Use

bq_list_datasets

List all datasets

To explore your project

bq_list_tables

List tables with partitioning info

To browse a dataset

bq_describe_table

Get detailed table schema

To understand columns

bq_get_table_info

Complete table metadata

To get statistics

πŸ’‘ Real-World Examples

Example 1: Check Costs Before Running

# Before running an expensive query...
query = "SELECT * FROM `bigquery-public-data.github_repos.commits`"

# First, check the cost
result = bq_dry_run_sql(sql=query)
print(f"Estimated cost: ${result['usdEstimate']}")
print(f"Data processed: {result['totalBytesProcessed'] / 1e9:.2f} GB")

# Output:
# Estimated cost: $12.50
# Data processed: 2500.00 GB

Example 2: Understand Table Structure

# Check table schema
result = bq_describe_table(
    dataset_id="your_dataset",
    table_id="users"
)

# Output:
# β”œβ”€β”€ user_id (INTEGER, REQUIRED)
# β”œβ”€β”€ email (STRING, NULLABLE)
# β”œβ”€β”€ created_at (TIMESTAMP, REQUIRED)
# └── profile (RECORD, REPEATED)
#     β”œβ”€β”€ name (STRING)
#     └── age (INTEGER)

Example 3: Track Data Dependencies

# Understand query dependencies
query = """
WITH user_stats AS (
  SELECT user_id, COUNT(*) as order_count
  FROM orders
  GROUP BY user_id
)
SELECT u.name, s.order_count
FROM users u
JOIN user_stats s ON u.id = s.user_id
"""

result = bq_extract_dependencies(sql=query)

# Output:
# Tables: ['orders', 'users']
# Columns: ['user_id', 'name', 'id']
# Dependency Graph:
#   orders β†’ user_stats β†’ final_result
#   users β†’ final_result

🎨 How It Works

Your Code ← β†’ Claude/AI Assistant
                   ↓
            MCP Protocol
                   ↓
            mcp-bigquery
                   ↓
         BigQuery API (Dry-run)
                   ↓
             BigQuery
      (Never executes actual queries)

βš™οΈ Configuration

Environment Variables

export BQ_PROJECT="my-project"        # GCP Project ID (required)
export BQ_LOCATION="asia-northeast1"  # Region (optional)
export SAFE_PRICE_PER_TIB="5.0"      # Price per TiB (default: $5)
export LOG_LEVEL="INFO"              # Optional log level override

Full Claude Desktop Configuration

{
  "mcpServers": {
    "mcp-bigquery": {
      "command": "mcp-bigquery",
      "env": {
        "BQ_PROJECT": "my-production-project",
        "BQ_LOCATION": "asia-northeast1",
        "SAFE_PRICE_PER_TIB": "6.0",
        "LOG_LEVEL": "WARNING"
      }
    }
  }
}

πŸ”§ Troubleshooting

Common Issues & Solutions

❌ Authentication Error

Error: Could not automatically determine credentials

Solution:

gcloud auth application-default login

❌ Permission Error

Error: User does not have bigquery.tables.get permission

Solution: Grant BigQuery Data Viewer role

gcloud projects add-iam-policy-binding YOUR_PROJECT \
  --member="user:your-email@example.com" \
  --role="roles/bigquery.dataViewer"

❌ Project Not Set

Error: Project ID is required

Solution: Set BQ_PROJECT in your configuration

Debug Mode

If issues persist, enable debug mode:

{
  "env": {
    "LOG_LEVEL": "INFO",
    "BQ_PROJECT": "your-project"
  }
}

πŸ“š Learn More

Getting Started

For Developers

🚦 Project Status

Version

Release Date

Key Features

v0.5.0

2026-01-02

Consolidated formatters, client cache, logging controls

v0.4.2

2025-12-08

Modular schema explorer, unified client/logging controls

v0.4.1

2025-01-22

Better error handling, debug logging

v0.4.0

2025-01-22

Added 6 schema discovery tools

v0.3.0

2025-01-17

SQL analysis engine

v0.2.0

2025-01-16

Basic validation & dry-run

🀝 Contributing

Pull requests are welcome! See our Contributing Guide.

# Setup development environment
git clone https://github.com/caron14/mcp-bigquery.git
cd mcp-bigquery
pip install -e ".[dev]"

# Run tests
pytest tests/

πŸ“„ License

MIT License - see LICENSE for details.

πŸ™ Acknowledgments

  • Google BigQuery team for the excellent API

  • Anthropic for the MCP protocol

  • All contributors and users


Built for safe BigQuery exploration πŸ›‘οΈ

Report Bug Β· Request Feature Β· Discussions

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/caron14/mcp-bigquery'

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