Analise Seu Data Lake pelo Cursor IDE com DataSpoc MCP
O Cursor é um editor de código alimentado por IA. O DataSpoc Lens expõe um data lake como servidor MCP. Conecte-os e o Cursor se torna um ambiente de análise de dados — explore schemas, escreva SQL, gere gráficos e construa relatórios sem sair do editor.
Configuração
1. Instalar DataSpoc Lens
pip install dataspoc-lens[mcp]2. Configurar as Configurações MCP do Cursor
Abra as configurações do Cursor e navegue até a configuração MCP. Adicione o servidor DataSpoc Lens.
Crie ou edite .cursor/mcp.json na raiz do seu projeto:
{ "mcpServers": { "dataspoc-lens": { "command": "dataspoc-lens", "args": ["mcp"], "env": { "DATASPOC_BUCKET": "s3://my-company-data" } } }}Para GCS:
{ "mcpServers": { "dataspoc-lens": { "command": "dataspoc-lens", "args": ["mcp"], "env": { "DATASPOC_BUCKET": "gs://my-company-data" } } }}3. Reiniciar o Cursor
Após salvar a configuração, reinicie o Cursor. O servidor MCP iniciará automaticamente, e a IA do Cursor descobrirá as ferramentas disponíveis.
O Que o Cursor Pode Fazer Agora
Descobrir Tabelas
No chat do Cursor, digite:
What tables are available in my data lake?O Cursor chama lens.tables() via MCP:
Your data lake contains 8 tables:
raw_postgres_orders - 245,000 rowsraw_postgres_customers - 18,200 rowsraw_stripe_payments - 892,000 rowsraw_hubspot_contacts - 34,500 rowscurated_sales - 245,000 rowscurated_customer_360 - 18,200 rowsgold_revenue_by_region - 48 rowsgold_monthly_metrics - 36 rowsExplorar Schemas
What columns does curated_sales have? Show me sample data.O Cursor chama lens.schema() e lens.query():
curated_sales schema: order_id VARCHAR customer_id VARCHAR product VARCHAR category VARCHAR amount DOUBLE quantity INTEGER region VARCHAR sale_date DATE payment_method VARCHAR
Sample data (5 rows):| order_id | customer_id | product | amount | region | sale_date ||----------|-------------|----------------|---------|----------------|------------|| ORD-001 | CUST-042 | Widget Pro | 299.99 | North America | 2026-03-15 || ORD-002 | CUST-108 | Widget Basic | 49.99 | Europe | 2026-03-15 || ORD-003 | CUST-042 | Gadget Plus | 599.00 | North America | 2026-03-16 |Escrever Queries Analíticas
Show me revenue trends by month for the last 6 months, broken down by region.O Cursor gera e executa:
SELECT DATE_TRUNC('month', sale_date) AS month, region, SUM(amount) AS revenue, COUNT(*) AS orders, ROUND(AVG(amount), 2) AS avg_order_valueFROM curated_salesWHERE sale_date >= '2025-10-01'GROUP BY month, regionORDER BY month, revenue DESCE exibe os resultados diretamente no chat.
Gerar Código de Análise
Peça ao Cursor para criar um script Python de análise baseado nos dados que ele acabou de descobrir:
Write a Python script that analyzes customer cohorts by signup monthand tracks their monthly spending over time. Use dataspoc_lens to query.O Cursor escreve diretamente no seu editor:
"""Customer cohort analysis using DataSpoc Lens."""import pandas as pdimport matplotlib.pyplot as pltfrom dataspoc_lens import LensClient
lens = LensClient()
# Get customer cohorts (signup month) with their spending over timedf = lens.query(""" WITH cohorts AS ( SELECT customer_id, DATE_TRUNC('month', MIN(sale_date)) AS cohort_month FROM curated_sales GROUP BY customer_id ), monthly_spend AS ( SELECT s.customer_id, DATE_TRUNC('month', s.sale_date) AS spend_month, SUM(s.amount) AS monthly_total FROM curated_sales s GROUP BY s.customer_id, spend_month ) SELECT c.cohort_month, m.spend_month, DATEDIFF('month', c.cohort_month, m.spend_month) AS months_since_signup, COUNT(DISTINCT m.customer_id) AS active_customers, SUM(m.monthly_total) AS total_revenue, AVG(m.monthly_total) AS avg_spend_per_customer FROM cohorts c JOIN monthly_spend m ON c.customer_id = m.customer_id WHERE c.cohort_month >= '2025-07-01' GROUP BY c.cohort_month, m.spend_month, months_since_signup ORDER BY c.cohort_month, months_since_signup""")
# Pivot for cohort retention chartpivot = df.pivot_table( index="cohort_month", columns="months_since_signup", values="active_customers", aggfunc="sum")
# Calculate retention ratesretention = pivot.div(pivot[0], axis=0) * 100
# Plotfig, ax = plt.subplots(figsize=(12, 8))import seaborn as snssns.heatmap( retention, annot=True, fmt=".0f", cmap="YlOrRd_r", ax=ax, vmin=0, vmax=100,)ax.set_title("Customer Cohort Retention (%)")ax.set_xlabel("Months Since Signup")ax.set_ylabel("Cohort Month")plt.tight_layout()plt.savefig("cohort_retention.png", dpi=150)plt.show()print("Chart saved to cohort_retention.png")Você pode executar isso diretamente no terminal do Cursor.
Construir Gráficos Interativamente
Create a bar chart showing the top 10 products by revenue this quarter.O Cursor consulta os dados e gera o código de visualização:
from dataspoc_lens import LensClientimport matplotlib.pyplot as plt
lens = LensClient()
df = lens.query(""" SELECT product, SUM(amount) AS revenue FROM curated_sales WHERE sale_date >= '2026-01-01' GROUP BY product ORDER BY revenue DESC LIMIT 10""")
fig, ax = plt.subplots(figsize=(10, 6))ax.barh(df["product"][::-1], df["revenue"][::-1])ax.set_xlabel("Revenue ($)")ax.set_title("Top 10 Products by Revenue — Q1 2026")
for i, (val, name) in enumerate(zip(df["revenue"][::-1], df["product"][::-1])): ax.text(val + 1000, i, f"${val:,.0f}", va="center", fontsize=9)
plt.tight_layout()plt.savefig("top_products.png", dpi=150)plt.show()Gerar Relatórios em Markdown
Write a weekly metrics report for the last 7 days. Include revenue,order count, top products, and regional breakdown. Format as markdown.O Cursor consulta o lake múltiplas vezes e monta um relatório:
# Weekly Metrics Report: April 8-14, 2026
## Summary- **Total Revenue**: $987,000 (+8.3% vs prior week)- **Orders**: 3,420 (+5.1% vs prior week)- **Average Order Value**: $288.60 (+3.0% vs prior week)
## Daily Revenue| Date | Revenue | Orders ||------|---------|--------|| Apr 8 | $142,000 | 490 || Apr 9 | $138,000 | 478 || Apr 10 | $145,000 | 502 || Apr 11 | $151,000 | 523 || Apr 12 | $133,000 | 461 || Apr 13 | $128,000 | 443 || Apr 14 | $150,000 | 523 |
## Top 5 Products1. Widget Pro — $124,000 (12.6%)2. Gadget Plus — $98,000 (9.9%)...O Fluxo de Trabalho
O fluxo de trabalho típico Cursor + DataSpoc:
- Abra o Cursor no diretório do seu projeto
- Pergunte sobre dados — o Cursor descobre tabelas e schemas via MCP
- Itere nas queries — refine SQL baseado nos resultados, tudo no chat
- Gere código — peça ao Cursor para escrever scripts Python que usam LensClient
- Execute e refine — execute no terminal do Cursor, revise a saída, itere
- Salve artefatos — gráficos, relatórios e scripts de análise ficam no seu projeto
Comparação: BI Tradicional vs Jupyter vs CLI vs Cursor
| Tarefa | Ferramenta BI (Metabase) | Jupyter | CLI (dataspoc-lens) | Cursor + MCP |
|---|---|---|---|---|
| Explorar tabelas | Clicar na UI | lens.tables() | dataspoc-lens tables | ”What tables exist?” |
| Escrever SQL | Editor SQL | Célula com lens.query() | Pipe para comando | ”Show me revenue by month” |
| Gerar gráficos | Arrastar e soltar | Código Matplotlib | Exportar + ferramenta separada | ”Create a bar chart” |
| Escrever relatórios | Dashboard | Células Markdown | Manual | ”Write a weekly report” |
| Iterar | Atualizar dashboard | Re-executar células | Re-executar comando | Continuar conversa |
| Salvar trabalho | Link do dashboard | Arquivo .ipynb | Histórico do shell | Arquivos .py no projeto |
| Curva de aprendizado | Média | Média | Baixa | Baixa |
O Cursor com MCP combina a interface em linguagem natural de uma ferramenta BI com a geração de código do Jupyter e a velocidade de um CLI. Você descreve o que quer, o Cursor escreve o código, e você o executa.
Dicas para Análise de Dados Eficaz no Cursor
Comece com exploração:
What tables are available? Show me the schema of the largest table.Seja específico sobre intervalos de tempo:
Revenue by product category for March 2026 only, excluding returns.Peça comparações:
Compare this month vs last month for all key metrics.Show percentage changes.Solicite código reutilizável:
Write a function I can reuse to generate monthly reports.Take the month as a parameter.Encadeie análises:
First show me which customers churned last month.Then analyze what they had in common (plan, region, usage).Then suggest retention strategies based on the patterns.Segurança
A integração MCP do Cursor herda todas as propriedades de segurança do DataSpoc:
- Somente leitura: O servidor MCP rejeita SQL de escrita
- Cloud IAM: Usa suas credenciais existentes (AWS SSO, gcloud, Azure CLI)
- Escopo definido: Acessa apenas o bucket que você configurar
- Auditável: Toda query é SQL que é registrado em log
Seus dados permanecem no seu bucket na nuvem. A IA do Cursor gera SQL, o Lens o executa localmente via DuckDB, e os resultados ficam na sua máquina. Nenhum dado sai do seu ambiente a menos que você exporte explicitamente.