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
访问服务器

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.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选