BigQuery
Acesse e armazene em cache metadados do Google Cloud BigQuery.
Documentação
BigQuery MCP Server
Este é um servidor MCP (Model Context Protocol) baseado em Python que recupera informações de datasets, tabelas e esquemas do Google Cloud BigQuery, armazena em cache localmente e as serve via MCP. Seu objetivo principal é permitir que sistemas de IA generativa entendam rapidamente a estrutura do BigQuery e executem consultas com segurança.
Principais Recursos
- Gerenciamento de Metadados: Recupera e armazena em cache informações sobre datasets, tabelas e colunas do BigQuery
- Pesquisa por Palavras-chave: Suporta pesquisa por palavras-chave nos metadados em cache
- Execução Segura de Consultas: Fornece capacidades de execução SQL com inserção automática de cláusula LIMIT e controle de custos
- Exportação de Arquivos: Executa consultas e salva resultados em arquivos locais nos formatos CSV ou JSONL
- Conformidade com MCP: Oferece ferramentas através do Model Context Protocol
Ferramentas do Servidor MCP
Ferramentas disponíveis:
get_datasets- Recupera uma lista de todos os datasetsget_tables- Recupera todas as tabelas dentro de um dataset especificado (requer dataset_id, opcionalmente aceita project_id)search_metadata- Pesquisa metadados de datasets, tabelas e colunasexecute_query- Executa consultas SQL do BigQuery com segurança, com inserção automática de cláusula LIMIT e controle de custoscheck_query_scan_amount- Recupera a quantidade de varredura (scan) para consultas SQL do BigQuerysave_query_result- Executa consultas SQL do BigQuery e salva resultados em arquivos locais (formato CSV ou JSONL)
Detalhes das Ferramentas
save_query_result
A ferramenta save_query_result fornece execução avançada de consultas com capacidades de exportação de arquivos:
Parâmetros:
sql(obrigatório): Consulta SQL a ser executadaoutput_path(obrigatório): Caminho do arquivo local para salvar os resultadosformat(opcional): Formato de saída -"csv"(padrão) ou"jsonl"project_id(opcional): ID do projeto GCP de destinoinclude_header(opcional): Incluir linha de cabeçalho na saída CSV (padrão: true)
Principais Recursos:
- Sem LIMIT Automático: Ao contrário de
execute_query, esta ferramenta não adiciona automaticamente cláusulas LIMIT às suas consultas SQL - Controle de Custos: Mantém limites de quantidade de varredura (padrão: 1GB) e verificações de segurança para evitar consultas caras
- Segurança: Validação de caminho previne ataques de travessia de diretório
- Formatos Flexíveis: Suporta formatos de saída CSV e JSONL
- Suporte a Grandes Datasets: Lida com grandes resultados de consultas de forma eficiente dentro dos limites de varredura
Exemplo 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: Embora esta ferramenta não adicione cláusulas LIMIT, ela ainda impõe limites de quantidade de varredura para proteção de custos. Consultas que varreriam mais do que o limite configurado (padrão: 1GB) serão rejeitadas.
Instalação e Configuração do Ambiente
Pré-requisitos
- Python 3.11 ou posterior
- Conta do Google Cloud Platform
- Projeto GCP com a API do BigQuery habilitada
Instalação
uv
uv add bq_mcp_server
pip
pip install bq_mcp_server
Instalando Dependências
Este projeto usa uv para gerenciamento de pacotes:
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
Configurando Opções
Para uma lista de valores de configuração, consulte:
Configuração do 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>"
]
}
}
}
Executando Testes
Executando Todos os Testes
pytest
Executando Arquivos de Teste Específicos
pytest tests/test_logic.py
Executando Funções de Teste Específicas
pytest -k test_function_name
Verificando Cobertura de Testes
pytest --cov=bq_mcp_server
Desenvolvimento Local
Iniciando o Servidor MCP
uv run bq_mcp_server
Iniciando o Servidor de API REST FastAPI
uvicorn bq_mcp_server.adapters.web:app --reload
Comandos de Desenvolvimento
Formatação de Código e Linting
# Code formatting
ruff format
# Linting checks
ruff check
# Automatic fixes
ruff check --fix
Gerenciamento de Dependências
# Adding new dependencies
uv add <package>
# Adding development dependencies
uv add --dev <package>
# Updating dependencies
uv sync