data-engineering-mcp

data-engineering-mcp

Enables local and offline XLSX header cataloging, candidate relationship inference, and Oracle SELECT/WITH SQL generation without accessing databases or executing SQL.

Category
Visit Server

README

data-engineering-mcp

Servidor MCP genérico, local e offline que transforma cabeçalhos de arquivos XLSX em um catálogo consultável, infere relacionamentos candidatos e gera somente SQL Oracle SELECT/WITH. Não acessa bancos de dados, não executa SQL e não possui integração ou dependência de Power BI.

Requisitos e instalação

  • Python 3.12
  • MCP Python SDK 2.x (MCPServer, a API pública atual da versão instalada)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"

Dependências de runtime: mcp, pandas, openpyxl e pydantic; testes usam pytest. O catálogo usa openpyxl diretamente para abrir os workbooks em modo read-only e ler somente a primeira linha necessária.

Dados e arquitetura

Os datasets são fornecidos localmente pelo usuário e não fazem parte do repositório. Coloque arquivos .xlsx em data/; eles permanecem disponíveis ao MCP, mas são ignorados pelo Git. Cada arquivo é uma tabela. O nome lógico remove .xlsx, o prefixo rawzn. e o sufixo _SINTETICO, com comparação case-insensitive. A primeira aba não chamada SQL que tenha cabeçalhos é usada; registros não participam da descoberta.

data/*.xlsx -> Catalog -> RelationshipEngine -> SQLGenerator
                                      \-> explicação conservadora de SQL

Novos arquivos são descobertos por atualizar_catalogo, sem alteração de código. A atualização também detecta remoções e mudanças na lista ordenada de cabeçalhos, atualiza o timestamp e recalcula candidatos. O diretório local de schemas/datasets é configurável pela variável DATA_ENGINEERING_MCP_DATA_DIR; o padrão é data/.

Execução e testes

.\.venv\Scripts\data-engineering-mcp.exe
# ou
.\.venv\Scripts\python.exe -m data_engineering_mcp.server

.\.venv\Scripts\python.exe -m pytest
.\.venv\Scripts\python.exe scripts\smoke_test.py

O transporte padrão é stdio. Logs vão para stderr para não corromper o protocolo. Defina DATA_ENGINEERING_MCP_DATA_DIR para usar outra pasta local.

Tools

  • listar_tabelas, descrever_tabela, buscar_coluna, buscar_tabelas
  • inferir_relacionamentos, encontrar_caminho, gerar_join
  • atualizar_catalogo, status_catalogo
  • gerar_sql, gerar_select, explicar_sql

gerar_sql recebe tabelas, colunas e filtros tipados {table?, column, operator, value}. Operadores: =, <>, >, >=, <, <=, IN, IS NULL, IS NOT NULL, LIKE. Valores viram bind variables (:p1), nunca texto concatenado. Colunas ambíguas exigem TABELA.COLUNA. O JOIN padrão é LEFT JOIN, escolha conservadora para preservar linhas da primeira tabela; a ferramenta informa candidatos MEDIUM e rejeita LOW por padrão.

Exemplo de argumentos:

{
  "tabelas": ["RAW_HAP_TB_USUARIO", "RAW_HAP_TB_PESSOA"],
  "colunas": ["CD_USUARIO", "NM_PESSOA_RAZAO_SOCIAL"],
  "filtros": [{"column": "FL_STATUS_USUARIO", "operator": "=", "value": 2}]
}

Confiança de relacionamentos

Todo resultado é candidato nominal, nunca PK/FK confirmada. O score começa em 20 por nome idêntico; soma 30 para prefixos CD_, ID_ ou NU_; soma 20 quando a entidade da coluna aparece no nome de uma tabela e mais 10 se aparece em ambas. Ocorrência em mais de duas tabelas reduz 5 por ocorrência excedente (máximo 25); campo genérico ou sem prefixo identificador reduz 25. HIGH >= 75, MEDIUM >= 50, LOW < 50. Não há leitura de valores nem cálculo de cardinalidade, e esta versão não possui metadados explícitos de PK/FK.

Segurança e limitações

Somente SQL Oracle SELECT/WITH estruturado é gerado. Não há superfície para DDL/DML, SQL arbitrário em filtros, credenciais, rede, banco ou APIs externas.

Limitações conhecidas:

  • relacionamentos são inferidos nominalmente e podem produzir falsos positivos ou negativos semânticos;
  • esta versão não possui metadados explícitos de PK/FK;
  • campos genéricos ou compartilhados podem produzir caminhos inadequados;
  • candidatos LOW não devem ser utilizados automaticamente;
  • candidatos MEDIUM são inferências, não confirmações;
  • explicar_sql faz análise sintática conservadora e não valida semanticamente a consulta no Oracle;
  • alguns logs com acentos podem ter exibição cosmética incorreta no console Windows configurado como CP1252.

Os XLSX são sempre tratados como read-only. Datasets locais (data/*, *.xlsx, *.xls, *.csv e *.parquet) são ignorados e não fazem parte do repositório.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured