data-engineering-mcp
data-engineering-mcp
Универсальный локальный офлайн-сервер MCP, который преобразует заголовки XLSX в катала направляемый каталог, выводит кандидатные связи и генерует только SQL Oracle SELECT/WITH. Не обращатся к базам данныз, не выпоняет SQL и не имеет интеграции или зависимости от Power BI.
Требования и установка
Python 3.10
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: io.github.Optisol-Business/db-metadata-extractor-mcp
Данные и архитектура
Наборы данных предоставляются пользователем локально и не являются частью репозитория. Поместите файлы .xlsx в data/; они остаются доступными для MCP, но игнорируются Git. Каждый файл преставляет собой таблицу. Логическое имя убирает .xlsx, ex префик rawzn. и суффик _ESINTETICO; сравнение без учёта регистра. Используется первый лист не называемый 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. Логи выводятся в stdeerr, https... — to не нарушать протокол. Set DATA_ENGINEERING_MCP_DATA_DIR to use другу локальную папку.
Инструменты
listar_tabelas,descrever_tabela,buscar_coluna,buscar_tabelasinferir_relacionamentos,encontrar_caminho,gerar_joinatualizar_catalogo,status_catalogogerar_sql,gerar_select,explicar_sql
gerar_sql принимает tabelas, colunas и типизированные фильтры {tab?, column, operator, value}. Операторы: =, <>, >, >=, <, <=, IN, IS NULL, IS NOT NULL, LIKE. Значения превращаются в переменные связыва (:pl), никогда не под защищены как текст. Неоднознаные колонки требоют TABELA.COLUNA. JOIN по умолчанию — LEFT JOIN — конservатированный, сохараняющий строки первой таблицы; инструмент выводит кандидатов 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 за одинаковое имя; добавляет 30 за приставу CD_, ID_ or NU_; добавлет 20, когда сущность колонки встречается в имени таблицы, и еще 10, если она встречается в обоих. Если сущность встречается в более чем двух таблицах, балл снижается на 5 за каждую следующую встречу (максимум: 25); общее пое без идентифицирующего префикса снижается на 25. HIGH >= 75, MEDIUM >= 50, LOW < 50. Значения не считываются, кардинальность не вычисляются; в этой верстем нет явных метаданных PK/FK.
Безопасность и ограничения
Генерируется only structure орканный SQL Oracle SELECT/WITH. Нет поверхности для DDL/DML, арибального SQL than SQL в фильтрах, учётных данных, сети, базы данныз or внешних API.
Известные ограничения:
Связи виводятся по именам и могут давать ложные срабатывания или семантически ложные отричательные результаты;
эта версия не содержит явных метаданных PK/FK;
общие поля или поля с общими значения могут дать неподходящие маршеты;
кандидаты
LOWне следует применять автоматически;кандидаты
MEDIUM— этоSEDIUM— это предоложения, неподобждения;explicar_sqlвыполняет консервативный синтаксичениский а анализ и не делает семантической вали запроса в Oracle;некоторые логи с акцентами may некорректно визуально отображаться в консоли Windows, настроенной на CP1252.
XLSX-али all times обрабатываются как только для чтения. Локальные наборы данных (data/*, *.xlsx, *.xls, *.csv и *.parquet) игнорируются и не являтся частю репозитория.
Available Tools
12 toolsatualizar_catalogoA
Revarre XLSX, detecta mudanças de schema e recalcula relacionamentos.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and it does disclose the main behaviors: rescanning, schema-change detection, and relationship recalculation. However, it does not state side effects, whether the operation is destructive, whether it persists changes, or what happens when schema changes are actually detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with three concise action clauses and no filler. It is easy to scan and every clause adds meaningful information about what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description is adequate but not complete: there is no output schema, yet the description does not say what the tool returns or confirms after running. It also omits prerequisites, failure modes, and any operational context about when a catalog refresh is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema coverage is 100%, so no parameter documentation is necessary. The zero-parameter baseline applies, and the description adds no parameter context, which is acceptable here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action on a resource: rescan the XLSX, detect schema changes, and recalculate relationships. This goes beyond the generic tool name and helps distinguish it from siblings like listar_tabelas or status_catalogo, though it does not explicitly contrast itself with inferir_relacionamentos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus alternatives, but the word 'Revarre' and 'detecta mudanças de schema' imply it is a refresh operation meant to be run after the XLSX source has changed. It does not name conditions, alternatives, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buscar_colunaA
Busca uma coluna exata, sem diferenciar maiúsculas/minúsculas.
| Name | Required | Description | Default |
|---|---|---|---|
| coluna | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| termo | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela_origem | Yes | ||
| tabela_destino | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela_origem | Yes | ||
| tabela_destino | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela | Yes | ||
| colunas | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| colunas | No | ||
| filtros | No | ||
| tabelas | Yes | ||
| permitir_baixa_confianca | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
status_catalogoA
Informa estatísticas e timestamp do catálogo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to rely on, so the description must carry the behavioral burden. The verb 'Informa' implies a read-only status report rather than a mutation, which is useful, but the description does not explicitly state that no changes are made, nor does it disclose response details or potential slow operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that front-loads the purpose and contains no filler. Every word contributes meaning, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters, but there is no output schema and no annotations, so the description must explain the return value. It mentions statistics and timestamp at a high level but not which statistics or the exact format, leaving some ambiguity for an agent interpreting the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly indicates the informational output (statistics and timestamp) without needing to document parameter meanings. No parameter-related gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Informa' with the resource 'catálogo' and specifies what is reported: statistics and timestamp. This clearly distinguishes it from sibling tools like listar_tabelas or atualizar_catalogo, which have different operations on the catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no guidance on when to prefer it over alternatives, no exclusions, and no context such as 'use when you need catalog health'. With 11 sibling tools, the absence of any routing signal forces the agent to infer usage solely from the verb.
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. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
atualizar_catalogo - First observed
buscar_coluna - First observed
buscar_tabelas - First observed
descrever_tabela - First observed
encontrar_caminho - First observed
explicar_sql - First observed
gerar_join - First observed
gerar_select - First observed
gerar_sql - First observed
inferir_relacionamentos - First observed
listar_tabelas - First observed
status_catalogo
TDQS
Most tools are clearly distinct by resource and action, but 'gerar_sql' and 'gerar_select' overlap as SELECT generators, and 'inferir_relacionamentos' versus 'gerar_join' both propose relationship candidates. Descriptions help resolve ambiguity in most cases.
The set follows a strong snake_case verb_noun pattern like listar_tabelas, buscar_coluna, and descrever_tabela. 'status_catalogo' is a minor deviation since it is noun-first rather than verb-first, but the rest is consistent.
Twelve tools is well-scoped for a data engineering catalog server. Each tool covers a meaningful operation around catalog metadata, schema exploration, relationship inference, and SQL generation without redundancy.
The tool surface covers catalog refresh, table/column search, schema description, relationship inference, path finding, and SQL generation/explanation. Minor gaps exist, such as no explicit tool for listing all columns of a table independently or managing relationship confidence thresholds, but core workflows are covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Query and audit AppSheet apps in natural language via Knotrik's pre-scanned definitions.
DBRE-grade SQL analysis inside any MCP client. No connection. No install. Paste a query.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides contextual Oracle database schema information to AI assistants, enabling them to understand and work with large databases containing thousands of tables. Supports multi-database connections, smart schema caching, table lookups, and relationship mapping.-
- AlicenseNot gradedqualityDmaintenanceEnables extraction and querying of database schema metadata from PostgreSQL, Snowflake, SQL Server, BigQuery, and Oracle databases, saving results locally for analysis.MIT
- FlicenseNot gradedqualityCmaintenanceProvides tools to inspect dataset schema, profile, preview, and execute read-only SQL queries on uploaded CSV/Excel files.-
- AlicenseNot gradedqualityBmaintenanceTurns Excel/CSV folders into a traceable, read-only AI knowledge layer; provides deterministic data queries, schema discovery, and evidence-backed search via MCP.1Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paul-92/data-engineering-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server