Pular para o conteúdo

MCP Server

O DataSpoc Lens inclui um servidor MCP (Model Context Protocol) que permite que agentes de IA interajam com seu data lake programaticamente. Os agentes podem descobrir tabelas, executar queries, fazer perguntas em linguagem natural e gerenciar cache.

Terminal window
pip install dataspoc-lens[mcp]
Terminal window
dataspoc-lens mcp

O servidor roda via transporte stdio, projetado para ser iniciado por um cliente MCP (como o Claude Desktop).

Adicione o Lens ao arquivo de configuração MCP do Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
"mcpServers": {
"dataspoc-lens": {
"command": "dataspoc-lens",
"args": ["mcp"]
}
}
}

Reinicie o Claude Desktop após salvar. As tabelas do Lens ficarão disponíveis para o Claude como tools MCP.

ToolDescrição
list_tablesLista todas as tabelas disponíveis no data lake
describe_tableMostra o schema (colunas e tipos) de uma tabela
queryExecuta uma query SQL somente leitura (operações de escrita são rejeitadas)
askTraduz uma pergunta em linguagem natural para SQL e executa
cache_statusMostra o status de todas as tabelas cacheadas localmente
cache_refreshForça o refresh do cache local de uma tabela específica
cache_refresh_staleAtualiza todas as tabelas cacheadas que estão stale

list_tables Retorna um nome de tabela por linha. Sem parâmetros.

describe_table Parâmetros: table (string) — nome da tabela. Retorna array JSON de objetos {"column_name": ..., "data_type": ...}.

query Parâmetros: sql (string) — query SQL a executar. Deve ser somente leitura (SELECT, SHOW, etc.). Retorna JSON com columns, rows, row_count e duration. Operações de escrita (DROP, DELETE, INSERT, UPDATE, ALTER, TRUNCATE, CREATE, REPLACE) são rejeitadas.

ask Parâmetros: question (string) — pergunta em linguagem natural sobre os dados. Retorna JSON com sql, columns, rows, duration e error.

cache_status Retorna array JSON de objetos {"table", "status", "cached_at", "size_bytes"}.

cache_refresh Parâmetros: table (string) — nome da tabela a atualizar. Retorna JSON com cached_at, size_bytes e file_count.

cache_refresh_stale Atualiza todas as tabelas cujo status é stale. Retorna array JSON das tabelas atualizadas.

URIDescrição
lens://tablesCatálogo completo de todas as tabelas com seus schemas de colunas

O resource lens://tables retorna um array JSON onde cada elemento contém o nome da table e suas columns (array de {column_name, data_type}).

Depois de configurado no Claude Desktop, você pode interagir com seu data lake naturalmente:

Você: Quais tabelas eu tenho no meu data lake?

Claude (chama list_tables): Você tem 3 tabelas: customers, orders e products.

Você: Quantos pedidos foram feitos no mês passado?

Claude (chama query com SQL): Foram 4.230 pedidos no mês passado, com uma receita total de R$ 362.400.

Você: Quais clientes têm o maior ticket médio mas não compraram nos últimos 90 dias?

Claude (chama ask): Aqui estão os principais clientes inativos de alto valor:

nameavg_order_valuelast_orderdays_inactive
Alice Smith$245.002026-01-1095
Bob Johnson$198.502025-12-28108

Você: Cacheia a tabela orders para trabalho offline.

Claude (chama cache_refresh): Pronto. Cacheado orders: 4 arquivos, 12.3 MB. O cache agora está atualizado.

  • O servidor MCP roda com as mesmas permissões do usuário que o iniciou
  • Todo controle de acesso é feito pelo IAM da nuvem — o servidor só pode acessar buckets que o usuário tem permissão de leitura
  • Operações de escrita são explicitamente bloqueadas no nível da query
  • Nenhuma autenticação é implementada no servidor em si