BigQuery
Accede y almacena en caché los metadatos de Google Cloud BigQuery.
Documentación
Servidor MCP de BigQuery
Este es un servidor MCP (Protocolo de Contexto de Modelo) basado en Python que recupera información de conjuntos de datos, tablas y esquemas de Google Cloud BigQuery, la almacena en caché localmente y la sirve a través de MCP. Su propósito principal es permitir que los sistemas de IA generativa comprendan rápidamente la estructura de BigQuery y ejecuten consultas de forma segura.
Características principales
- Gestión de metadatos: Recupera y almacena en caché información sobre conjuntos de datos, tablas y columnas de BigQuery
- Búsqueda por palabras clave: Admite búsqueda por palabras clave en los metadatos almacenados en caché
- Ejecución segura de consultas: Proporciona capacidades de ejecución de SQL con inserción automática de la cláusula LIMIT y control de costos
- Exportación de archivos: Ejecuta consultas y guarda los resultados en archivos locales en formato CSV o JSONL
- Cumplimiento de MCP: Ofrece herramientas a través del Protocolo de Contexto de Modelo
Herramientas del servidor MCP
Herramientas disponibles:
get_datasets- Recupera una lista de todos los conjuntos de datosget_tables- Recupera todas las tablas dentro de un conjunto de datos especificado (requiere dataset_id, opcionalmente acepta project_id)search_metadata- Busca metadatos de conjuntos de datos, tablas y columnasexecute_query- Ejecuta consultas SQL de BigQuery de forma segura con inserción automática de la cláusula LIMIT y control de costoscheck_query_scan_amount- Recupera la cantidad de escaneo para consultas SQL de BigQuerysave_query_result- Ejecuta consultas SQL de BigQuery y guarda los resultados en archivos locales (formato CSV o JSONL)
Detalles de las herramientas
save_query_result
La herramienta save_query_result proporciona ejecución avanzada de consultas con capacidades de exportación de archivos:
Parámetros:
sql(obligatorio): Consulta SQL a ejecutaroutput_path(obligatorio): Ruta de archivo local para guardar los resultadosformat(opcional): Formato de salida -"csv"(predeterminado) o"jsonl"project_id(opcional): ID del proyecto GCP de destinoinclude_header(opcional): Incluir fila de encabezado en la salida CSV (predeterminado: true)
Características principales:
- Sin LIMIT automático: A diferencia de
execute_query, esta herramienta no agrega automáticamente cláusulas LIMIT a sus consultas SQL - Control de costos: Mantiene límites de cantidad de escaneo (predeterminado: 1 GB) y verificaciones de seguridad para evitar consultas costosas
- Seguridad: La validación de rutas previene ataques de recorrido de directorios
- Formatos flexibles: Admite formatos de salida CSV y JSONL
- Soporte para conjuntos de datos grandes: Maneja resultados de consultas grandes de manera eficiente dentro de los límites de escaneo
Ejemplo de uso:
-- Export all rows without LIMIT restriction (subject to scan amount limits)
SELECT customer_id, order_date, total_amount
FROM `project.dataset.orders`
WHERE order_date >= '2024-01-01'
Nota importante: Aunque esta herramienta no agrega cláusulas LIMIT, igualmente aplica límites de cantidad de escaneo para protección de costos. Las consultas que escaneen más del límite configurado (predeterminado: 1 GB) serán rechazadas.
Instalación y configuración del entorno
Requisitos previos
- Python 3.11 o posterior
- Cuenta de Google Cloud Platform
- Proyecto GCP con la API de BigQuery habilitada
Instalar
uv
uv add bq_mcp_server
pip
pip install bq_mcp_server
Instalación de dependencias
Este proyecto utiliza uv para la gestión de paquetes:
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
Configuración de opciones
Para obtener una lista de los valores de configuración, consulte:
Configuración de MCP
Claude Code
claude mcp add bq_mcp_server -- uvx --from git+https://github.com/takada-at/bq_mcp_server bq_mcp_server --project-ids <your project ids>
JSON
{
"mcpServers": {
"bq_mcp_server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/takada-at/bq_mcp_server",
"bq_mcp_server",
"--project-ids",
"<your project ids>"
]
}
}
}
Ejecución de pruebas
Ejecutar todas las pruebas
pytest
Ejecutar archivos de prueba específicos
pytest tests/test_logic.py
Ejecutar funciones de prueba específicas
pytest -k test_function_name
Verificación de la cobertura de pruebas
pytest --cov=bq_mcp_server
Desarrollo local
Iniciar el servidor MCP
uv run bq_mcp_server
Iniciar el servidor de API REST FastAPI
uvicorn bq_mcp_server.adapters.web:app --reload
Comandos de desarrollo
Formato de código y linting
# Code formatting
ruff format
# Linting checks
ruff check
# Automatic fixes
ruff check --fix
Gestión de dependencias
# Adding new dependencies
uv add <package>
# Adding development dependencies
uv add --dev <package>
# Updating dependencies
uv sync