Skip to main content
Glama
paul-92

data-engineering-mcp

by paul-92

data-engineering-mcp

로컬에서 동작하는 범용 오프라인 MCP 서버로, XLSX 파일의 헤더를 검색 가능한 카탈로그로 변환하고 후보 관계를 추론하며 Oracle SQL SELECT/WITH만 생성합니다. 데이터베이스에 접속하지 않고, SQL을 실행하지 않으며, Power BI에 대한 통합이나 의존성이 없습니다.

요구 사항 및 설치

  • Python 3.12

  • MCP Python SDK 2.x (MCPServer, 설치된 버전의 현재 공개 API)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"

런타임 의존성은 mcp, pandas, openpyxl, pydantic이며, 테스트는 pytest를 사용합니다. 카탈로그는 openpyxl을 직접 사용하여 통합 문서를 읽기 전용 모드로 열고 필요한 첫 번째 행만 읽습니다.

Related MCP server: DataPilot MCP Server

데이터 및 아키텍처

데이터셋은 사용자가 로컬로 제공하며 저장소에 포함되지 않습니다. .xlsx 파일을 data/에 넣으세요. 파일은 MCP에서 계속 사용할 수 있지만 Git에서는 무시됩니다. 각 파일은 하나의 테이블입니다. 논리 이름은 .xlsx, rawzn. 접두사 및 _SINTETICO 접미사를 제거하며, 대소문자를 구분하지 않고 비교합니다. SQL이라는 이름이 아니면서 헤더가 있는 첫 번째 시트가 사용됩니다. 레코드는 발견 과정에 참여하지 않습니다.

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

새 파일은 코드 변경 없이 atualizar_catalogo에서 발견됩니다. 업데이트는 정렬된 헤더 목록의 삭제 및 변경도 감지하고, 타임스탬프를 갱신하며, 후보를 다시 계산합니다. 로컬 스키마/데이터셋 디렉터리는 DATA_ENGINEERING_MCP_DATA_DIR 변수로 설정할 수 있으며 기본값은 data/입니다.

실행 및 테스트

.\.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

기본 전송 방식은 stdio입니다. 로그는 프로토콜을 손상시키지 않도록 stderr로 전달됩니다. 다른 로컬 폴더를 사용하려면 DATA_ENGINEERING_MCP_DATA_DIR을 설정하세요.

도구

  • 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는 tabelas, colunas 및 타입이 지정된 필터 {table?, column, operator, value}를 받습니다. 연산자: =, <>, >, >=, <, <=, IN, IS NULL, IS NOT NULL, LIKE. 값은 연결된 텍스트가 아니라 바인드 변수(:p1)가 됩니다. 모호한 열에는 TABELA.COLUNA를 사용하세요. 기본 JOIN은 LEFT JOIN이며, 첫 번째 테이블의 행을 보존하는 보수적인 선택입니다. 도구는 MEDIUM 후보를 보고하고 기본적으로 LOW를 거부합니다.

인자 예시:

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

관계 신뢰도

모든 결과는 명목상 후보이며 확정된 PK/FK가 아닙니다. 점수는 동일한 이름일 때 20점에서 시작합니다. CD_, ID_ 또는 NU_ 접두어에는 30점을 추가합니다. 열의 엔티티가 한 테이블 이름에 나타나면 20점, 두 테이블 모두에 나타나면 10점을 더합니다. 둘 이상의 테이블에 나타나는 경우 초과 횟수당 5점을 차감합니다(최대 25점). 일반 필드나 식별자 접두어가 없는 필드는 25점을 차감합니다. HIGH >= 75, MEDIUM >= 50, LOW < 50. 값을 읽거나 카디널리티를 계산하지 않으며, 이 버전에는 명시적 PK/FK 메타데이터가 없습니다.

보안 및 제한 사항

구조화된 Oracle SQL SELECT/WITH만 생성됩니다. DDL/DML, 필터의 임의 SQL, 자격 증명, 네트워크, 데이터베이스 또는 외부 API에 대한 노출 영역이 없습니다.

알려진 제한 사항:

  • 관계는 명목상 추론되므로 의미적으로 위양성 또는 위음성이 발생할 수 있습니다.

  • 이 버전에는 명시적 PK/FK 메타데이터가 없습니다.

  • 공용 또는 공유 필드는 부적절한 경로를 생성할 수 있습니다.

  • LOW 후보는 자동으로 사용해서는 안 됩니다.

  • MEDIUM 후보는 추론이지 확인이 아닙니다.

  • explicar_sql는 보수적인 구문 분석을 수행하며 Oracle에서 쿼리를 의미적으로 검증하지 않습니다.

  • 악센트가 있는 일부 로그는 CP1252로 설정된 Windows 콘솔에서 표시상의 오류가 발생할 수 있습니다.

XLSX는 항상 읽기 전용으로 취급됩니다. 로컬 데이터셋(data/*, *.xlsx, *.xls, *.csv, *.parquet)은 무시되며 저장소에 포함되지 않습니다.

Available Tools

12 tools
buscar_colunaA

Busca uma coluna exata, sem diferenciar maiúsculas/minúsculas.

NameRequiredDescriptionDefault
colunaYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral disclosure burden. It usefully reveals that matching is exact and case-insensitive, but it does not state whether the search is read-only, what happens with no or multiple matches, or how results are scoped. The output schema covers return structure, but other behavioral traits remain unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler: the action is front-loaded and the only qualifier included ('sem diferenciar maiúsculas/minúsculas') is directly relevant to how the tool should be invoked. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool, the description plus the input/output schemas cover the essential contract. It omits usage guidance and edge-case behavior, but those are less critical given the tool's simplicity and the existence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the 'coluna' property has only a type/title, so the description carries the semantic weight. It clarifies that the parameter is the target column for an exact, case-insensitive search. An example or note about whether wildcards are accepted would strengthen it, but the core meaning is conveyed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Busca') and a clear resource ('uma coluna'), with an 'exata' qualifier that defines exact-match behavior. It is easy to distinguish from the table-level siblings (listar_tabelas, buscar_tabelas, descrever_tabela) even though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use this tool versus alternatives. The exact/case-insensitive wording implies a lookup use case, but there are no explicit when-to-use conditions, exclusions, or references to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buscar_tabelasA

Busca parcial case-insensitive no nome das tabelas.

NameRequiredDescriptionDefault
termoYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose key behavioral traits: search is partial and case-insensitive on table names. It does not mention whether the operation is read-only or how results are returned, but the output schema is present and the behavior is meaningfully specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, focused sentence that clearly expresses the tool's behavior without unnecessary words or repetition. It is front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter search tool with an output schema, the description covers the core behavior. However, it lacks any sibling differentiation or usage context, which an agent would need to decide between this and listar_tabelas/buscar_coluna.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no parameter descriptions (0% coverage), and the description implies that 'termo' is the partial search string used against table names. It adds some meaning beyond the schema but does not explicitly define termo or its expected format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Busca') and resource ('nome das tabelas'), plus matching semantics (partial, case-insensitive). This makes the tool's purpose clear, though it does not explicitly contrast it with sibling tools like listar_tabelas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool instead of alternatives such as listar_tabelas or buscar_coluna. The intended usage is only indirectly inferred from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

descrever_tabelaC

Descreve arquivo, aba e cabeçalhos de uma tabela.

NameRequiredDescriptionDefault
tabelaYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for disclosing behavior. It only says 'describes' which implies a read operation, but it does not explicitly state that it performs no modifications, nor does it describe the output format or any side effects. This leaves the agent guessing about safety and return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately states the core purpose. It is front-loaded and efficient, containing no redundant wording. However, it is so brief that it barely covers the essentials, but conciseness itself is handled well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, no output schema, no annotations), the description is still incomplete. It does not say what the agent will receive as output, whether it returns the table's metadata, or anything about the file and sheet handling. An agent could not fully understand the tool's behavior from this description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single required string parameter 'tabela' with zero description coverage. The tool description adds no meaning about what values are valid, what format the table name should have, or how it relates to the file/sheet context. With a 0% schema coverage, the description was expected to compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('descreve' – describes) and a clear resource ('tabela' – table), plus the scope of description: file, sheet, and headers. This is distinct from siblings like listar_tabelas (list tables) and buscar_coluna (search column). However, it does not explicitly differentiate itself from those siblings, so it earns a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or exclusions. No context is provided about when this should be preferred over listar_tabelas or buscar_tabelas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

encontrar_caminhoC

Encontra os melhores caminhos de relacionamentos candidatos com confiança MEDIUM ou HIGH.

NameRequiredDescriptionDefault
tabela_origemYes
tabela_destinoYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must convey behavioral traits. It only states the tool finds paths with a confidence filter, but it does not disclose whether the operation is read-only, what the output structure represents, whether it mutates data, or any side effects. The presence of an output schema does not surface in the description, leaving behavior largely undefined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is not structured to maximize informativeness. It front-loads the core action but omits essential context. While brevity is valued, the sentence does not earn its place by conveying all necessary details; it could be expanded with usage guidance or parameter hints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 2 required parameters and an output schema, but the description does not explain how the output relates to the input, what the confidence levels imply, or how the tool integrates with the catalog system. The description leaves out crucial details that an agent would need to call the tool correctly, such as whether the path is directed, what 'best' means in terms of ranking, or if there are any constraints on the tables.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning the schema provides no descriptions for 'tabela_origem' and 'tabela_destino'. The description does not clarify the expected format, constraints, or semantics of these parameters beyond their names. It merely implies they are tables, but does not explain how they should be specified (e.g., exact table names, case sensitivity) or what 'path' means in their context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action (finds best candidate relationship paths) and a specific filtering criterion (confidence MEDIUM or HIGH). The verb 'encontra' and resource 'caminhos de relacionamentos candidatos' are explicit, and the confidence filter adds precision. However, it does not distinguish itself from sibling tools like 'inferir_relacionamentos', which may also identify relationships, so it is not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives such as 'inferir_relacionamentos' or 'gerar_join'. It does not mention prerequisites, scope, or any conditions that would lead an agent to prefer this tool. This is a significant omission given the overlapping sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explicar_sqlA

Explica conservadoramente uma consulta SELECT/WITH sem executá-la.

NameRequiredDescriptionDefault
sqlYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It usefully discloses that the tool does not execute the SQL, which signals a safe, read-only behavior, and 'conservadoramente' suggests cautious, non-overreaching explanations. However, it does not describe what kind of explanation is returned or how unsupported queries are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word adds meaning: the verb, the scope ('SELECT/WITH'), the cautious behavior ('conservadoramente'), and the safety constraint ('sem executá-la').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter, so the input side is adequately covered. However, there is no output schema, and the description does not explain what the explanation looks like or what information it will contain, leaving the return value somewhat underspecified for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only shows a single 'sql' string parameter with no description. The tool description adds meaning by restricting valid input to SELECT/WITH queries, which is valuable. Still, it does not explain expected format, dialect, or whether multiple statements are allowed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Explica') and a specific resource ('consulta SELECT/WITH'), and adds a key constraint: 'sem executá-la'. This clearly distinguishes it from SQL-generating siblings like gerar_sql and gerar_select, though it does not explicitly contrast itself with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Explica conservadoramente uma consulta SELECT/WITH' implies the tool is for understanding a read-only query without running it, but it does not explicitly say when to prefer this tool over alternatives or when not to use it. Usage context is present but only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gerar_joinB

Propõe JOIN candidato direto entre duas tabelas, sem afirmar chave estrangeira.

NameRequiredDescriptionDefault
tabela_origemYes
tabela_destinoYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose all behavioral traits. It does mention one negative behavior ('sem afirmar chave estrangeira'), which is useful, but it omits other critical aspects: whether the operation is read-only, what the output format is, or any side effects. The burden of transparency is not met.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core purpose and adds a key caveat. Every word earns its place—there is no fluff or redundancy. It is appropriately sized for a tool with only two scalar parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description explains what the tool does but fails to state what it returns (e.g., the structure or form of the proposed JOIN). It also does not mention whether the join is based on a fuzzy match, naming convention, or something else. The lack of output schema makes the return format a significant omission, though the purpose is established.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It confirms that the tool works with two tables, matching the two parameters, but it does not explain the roles of origem and destino beyond their self-explanatory names. The names 'tabela_origem' and 'tabela_destino' are semantically clear on their own, so the added value is minimal but not absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Propõe' (proposes) and identifies the resource as a direct candidate JOIN between two tables. The phrase 'sem afirmar chave estrangeira' explicitly distinguishes it from a tool that asserts foreign keys, which sets it apart from sibling tools like inferir_relacionamentos. This is clear and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It neither names sibling tools nor states any conditions, prerequisites, or exclusions. The only implied context is that it suggests a join without foreign key confirmation, but this is not framed as actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gerar_selectB

Gera SELECT Oracle simples de uma tabela, sem executar SQL.

NameRequiredDescriptionDefault
tabelaYes
colunasNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a key behavioral trait: the tool does not execute SQL, which prevents an agent from assuming side effects. However, it says nothing about whether it validates the table exists in the catalog, what it returns (a string?), or error behavior. It's a bare minimum disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core purpose and a key caveat. There is no redundancy or preamble. However, its extreme brevity borders on under-specification, costing some points for structure, but it remains highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has two parameters, zero schema descriptions, and no output schema, the description is incomplete. It doesn't clarify what the generated SELECT looks like, whether it includes a WHERE clause, or how colunas is used. An agent would likely need to inspect the schema or guess, which is risky.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides no explanation of the two parameters. 'tabela' is required but its meaning is only implied by the tool name; 'colunas' is optional but the description never explains what it does (e.g., specify columns to select, default to *). The description fails to compensate for the schema's lack of property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Gera' / generates), a specific resource ('SELECT Oracle simples de uma tabela'), and crucially adds that it does not execute SQL. This distinguishes it from siblings like gerar_sql or explicar_sql. An agent can immediately understand what this tool does and what it doesn't.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. It doesn't mention conditions like 'use when you need a basic SELECT without running it' or exclude cases like joins or complex queries. The existence of siblings such as gerar_join and gerar_sql implies some selection criteria, but none are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gerar_sqlC

Gera SELECT Oracle estrutural, parametrizado e sem executar SQL.

NameRequiredDescriptionDefault
colunasNo
filtrosNo
tabelasYes
permitir_baixa_confiancaNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It does state that it does not execute SQL, which is a useful behavioral trait, but it omits other important details such as required schema context, potential errors, or limitations. The covered behavior is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but severely under-specified. It lacks necessary elaboration and structure, making it closer to under-specification than effective conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no output schema, and no annotations, the description is grossly incomplete. It does not explain generated SQL structure, parameter usage, or any nuances, making it impossible for an agent to use it correctly based on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides no information about the parameters (tabelas, colunas, filtros, permitir_baixa_confianca), their purpose, or how they map to the SQL generation. This leaves the agent without any guidance beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it generates a structural, parameterized Oracle SELECT without executing SQL, which is a specific verb+resource. However, it does not differentiate from the sibling tool 'gerar_select', which likely has overlapping functionality, so it lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. There is no indication of when to prefer this tool over gerar_select, gerar_join, or others, nor any exclusions or alternative suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inferir_relacionamentosA

Retorna relacionamentos candidatos inferidos somente por metadados.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a key behavioral trait: the inference is based 'somente por metadados', not on data contents. However, it does not explicitly confirm that the operation has no side effects, nor does it mention any permissions or rate limits, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It states the action and the key qualifier ('somente por metadados') in the minimum necessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description is largely complete: it identifies the result and the inference basis. It could be slightly more complete by saying whether the tool also persists/publishes these relationships, but the verb 'Retorna' and the existing output schema cover the core invocation needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter semantics burden. The phrase 'somente por metadados' adds meaning by explaining why no user input is needed: the operation works on metadata already available in the catalog. This satisfies the baseline for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retorna') and a specific resource ('relacionamentos candidatos inferidos somente por metadados'), making it clear what is returned. It does not explicitly contrast with sibling tools like encontrar_caminho or gerar_join, but the 'candidate relationships from metadata only' scope distinguishes it from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when the agent needs candidate relationships derived from metadata. However, it gives no explicit context, no exclusions, and does not mention alternative sibling tools, so an agent must infer usage from the purpose statement alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_tabelasB

Lista deterministicamente as tabelas lógicas do catálogo local.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It adds a useful behavioral trait by stating the listing is 'deterministicamente' and scoped to 'tabelas lógicas', but it does not explicitly state side effects, permissions, or whether the operation is read-only, though 'Lista' implies non-mutating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. The core action, resource, and determinism guarantee are all front-loaded, making it efficient and easy to process.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers return values and the zero-parameter schema keeps invocation simple, so those are not gaps. However, the lack of annotations and the presence of several sibling tools mean the description does not fully establish when to choose this tool or what 'tabelas lógicas' means relative to other catalog views.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties and 100% schema description coverage, so there are no parameter semantics for the description to clarify. This matches the baseline for no-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Lista', and a clear resource, 'tabelas lógicas do catálogo local', so an agent knows what the tool does. It does not explicitly differentiate this tool from the sibling 'buscar_tabelas', so it falls short of full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the alternatives like buscar_tabelas, status_catalogo, or inferir_relacionamentos. The intended usage must be inferred solely from the tool name and the one-line description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedatualizar_catalogo
    • First observedbuscar_coluna
    • First observedbuscar_tabelas
    • First observeddescrever_tabela
    • First observedencontrar_caminho
    • First observedexplicar_sql
    • First observedgerar_join
    • First observedgerar_select
    • First observedgerar_sql
    • First observedinferir_relacionamentos
    • First observedlistar_tabelas
    • First observedstatus_catalogo

TDQS

B3.3/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target clearly distinct actions: catalog listing, table description, schema search, relationship inference, path finding, and SQL generation. The only mild overlap is between gerar_sql and gerar_select, both generating SELECT statements, though their descriptions differentiate structural vs. simple generation.

Naming Consistency4/5

Tool names consistently use snake_case Portuguese with a mostly verb-first pattern like listar_tabelas, buscar_coluna, and gerar_join. The exception is status_catalogo, which uses a noun instead of a verb, but the overall pattern remains predictable.

Tool Count5/5

Twelve tools is well-scoped for a data engineering catalog server covering metadata browsing, search, relationship inference, and SQL generation. Each tool serves a meaningful purpose without redundancy or bloat.

Completeness5/5

The tool set covers the apparent domain comprehensively: listing, describing, updating, searching, relationship inference, path discovery, status reporting, and SQL generation/explanation. No obvious dead ends exist for the catalog-focused purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers