Skip to main content
Glama
caron14

BigQuery Validator

by caron14

mcp-bigquery

Безопасное исследование BigQuery через Model Context Protocol

MIT License PyPI Version Python Support Downloads

Документация | Быстрый старт | Примеры


Обзор

mcp-bigquery — это сервер Model Context Protocol (MCP), который позволяет ИИ-ассистентам (таким как Claude) безопасно взаимодействовать с Google BigQuery.

Ключевые возможности

  • Безопасное выполнение: Все операции строго ограничены проверкой dry-run. Сервер никогда не выполняет запросы, которые изменяют данные или влекут затраты на выполнение.

  • Прозрачность затрат: Предоставляет оценку стоимости запросов и объёма обрабатываемых данных до выполнения.

  • Статический анализ: Анализирует зависимости запросов и проверяет синтаксис SQL.

  • Исследование схемы: Просмотр наборов данных, таблиц и столбцов.

Бизнес-ценность

Проблема

Решение с mcp-bigquery

Непреднамеренное выполнение дорогостоящих запросов

Оценка стоимости до выполнения

Задержки разработки из-за синтаксических ошибок SQL

Раннее обнаружение синтаксических ошибок

Отсутствие видимости структуры схемы

Безопасное обнаружение метаданных схемы

Риск несанкционированного изменения данных ИИ

Принудительные ограничения dry-run


Related MCP server: mcp-bigquery-dryrun

Быстрый старт

Шаг 1: Установка

Установите пакет с помощью pip:

pip install mcp-bigquery

Шаг 2: Аутентификация

Настройте аутентификацию Google Cloud Platform:

# For user account authentication
gcloud auth application-default login

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

Шаг 3: Конфигурация Claude Desktop

Настройте сервер в файле конфигурации Claude Desktop:

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

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

Добавьте следующую запись:

{
  "mcpServers": {
    "mcp-bigquery": {
      "command": "mcp-bigquery",
      "env": {
        "BQ_PROJECT": "your-gcp-project-id"
      }
    }
  }
}

Шаг 4: Проверка

Перезапустите Claude Desktop и выполните следующие запросы, чтобы проверить настройку:

  • «Какие наборы данных доступны в моём проекте BigQuery?»

  • «Можешь оценить стоимость: SELECT * FROM dataset.table»

  • «Покажи схему таблицы users»


Доступные инструменты

Проверка и анализ SQL

Инструмент

Назначение

Основной сценарий использования

bq_validate_sql

Проверка синтаксиса SQL

Проверка перед выполнением запроса

bq_dry_run_sql

Получение оценки стоимости и метаданных

Оценка стоимости до выполнения

bq_extract_dependencies

Построение зависимостей таблиц

Построение карты зависимостей

bq_validate_query_syntax

Детальный анализ синтаксиса

Отладка сложных SQL-запросов

Обнаружение схемы

Инструмент

Назначение

Основной сценарий использования

bq_list_datasets

Список всех наборов данных в проекте

Первичное знакомство с проектом

bq_list_tables

Список таблиц с метаданными секционирования

Просмотр структуры набора данных

bq_describe_table

Получение детальной информации о схеме

Проверка на уровне столбцов

bq_get_table_info

Получение полных метаданных

Анализ статистики таблиц

bq_preview_table

Предпросмотр данных таблицы (бесплатно)

Просмотр примеров записей без затрат на сканирование

[!ВАЖНО] Инструмент bq_preview_table использует client.list_rows (API: tabledata.list) для прямого получения строк, что обеспечивает нулевое сканирование байт и отсутствие затрат на выполнение. Чтобы предотвратить непреднамеренную утечку конфиденциальной информации (например, ПДн) в LLM, этот инструмент по умолчанию отключён. Вы должны явно включить его, установив MCP_BQ_ENABLE_PREVIEW=true в конфигурации окружения.


Конфигурация

Переменные окружения

Переменная

Назначение

По умолчанию

BQ_PROJECT

Целевой идентификатор проекта GCP

Определяется через ADC

BQ_LOCATION

Целевой регион BigQuery

Не задано

SAFE_PRICE_PER_TIB

Цена за ТиБ для оценки стоимости

5.0

LOG_LEVEL

Уровень детализации журнала (DEBUG, INFO, WARNING, ERROR, CRITICAL)

WARNING

MCP_BQ_ENABLE_PREVIEW

Включить инструмент bq_preview_table (true/false)

false

Пример файла .env

Для локального тестирования или сред разработки вы можете определить эти переменные в файле .env:

BQ_PROJECT=your-gcp-project-id
BQ_LOCATION=asia-northeast1
SAFE_PRICE_PER_TIB=5.0
LOG_LEVEL=WARNING
MCP_BQ_ENABLE_PREVIEW=true

Полный пример конфигурации Claude Desktop

{
  "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",
        "MCP_BQ_ENABLE_PREVIEW": "true"
      }
    }
  }
}

Устранение неполадок

Сопоставленные ошибки и их решения

Ошибка аутентификации

Error: Could not automatically determine credentials
  • Решение: Повторно пройдите аутентификацию с помощью командной строки:

    gcloud auth application-default login

Отказано в доступе

Error: User does not have bigquery.tables.get permission
  • Решение: Предоставьте роль BigQuery Data Viewer целевой учётной записи:

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

Отсутствует идентификатор проекта

Error: Project ID is required
  • Решение: Убедитесь, что переменная BQ_PROJECT корректно задана в вашей конфигурации.


Примеры использования

Пример 1: Проверка затрат перед выполнением

# 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

Пример 2: Понимание структуры таблицы

# 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)

Пример 3: Отслеживание зависимостей данных

# 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

Статус проекта и история версий

Версия

Дата выпуска

Краткое описание изменений

v0.7.1

2026-08-17

Уточнены ограничения зависимостей mcp и оптимизирована вики-документация

v0.7.0

2026-06-21

Добавлен бесплатный инструмент предпросмотра таблиц (bq_preview_table) и конфигурация безопасности с явным согласием

v0.6.0

2026-06-21

Потокобезопасное кэширование, рекурсивные AST-запросы, повторные попытки с задержкой и сопоставление исключений Google API

v0.5.0

2026-01-02

Консолидированные форматтеры, клиентский кэш и единые элементы управления журналированием

v0.4.2

2025-12-08

Модульный обозреватель схем и единые элементы управления клиентом и журналированием

v0.4.1

2025-01-22

Улучшена обработка ошибок и отладочное журналирование

v0.4.0

2025-01-22

Добавлены инструменты обнаружения схемы

v0.3.0

2025-01-17

Интегрирован механизм статического анализа SQL

v0.2.0

2025-01-16

Первоначальный выпуск с поддержкой базовой проверки и dry-run-запросов


Разработка и вклад

Инструкции по настройке локальной разработки и политике вклада см. в руководстве CONTRIBUTING.md.

# Clone the repository
git clone https://github.com/caron14/mcp-bigquery.git
cd mcp-bigquery

# Install development dependencies
pip install -e ".[dev]"

# Execute the test suite
pytest tests/

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в LICENSE.

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
2moRelease cycle
5Releases (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
    Not graded
    quality
    B
    maintenance
    A read-only BigQuery MCP server with auto-LIMIT injection, dry-run cost guard, and ADC authentication. Allows safe SQL querying of BigQuery by LLMs without risk of data modification or unexpected costs.
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Validates BigQuery SQL syntax and performs dry-run analysis without executing queries, providing cost estimates, referenced tables, and schema previews.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query and analyze Google BigQuery data, including schema browsing, running queries, and comparing datasets through natural language.
    MIT

View all related MCP servers

Related MCP Connectors

  • Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.

  • Run SOQL queries to explore and retrieve Salesforce data. Inspect records, fields, and relationshi…

  • Run SOQL queries against your Salesforce org to explore and retrieve data. Quickly iterate on filt…

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

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