db-legacy-migration-agent
db-legacy-migration-agent
CLI y servidor MCP que analiza esquemas heredados de bases de datos relacionales (DB2, Oracle PL/SQL, MySQL, MSSQL) y los transpila automáticamente a PostgreSQL con un esquema de Prisma ORM generado y utilidades de consulta en TypeScript.
Tabla de contenidos
Related MCP server: db-mcp
Visión general
Los sistemas empresariales heredados suelen depender de dialectos SQL específicos del proveedor (Oracle PL/SQL, IBM DB2, Microsoft T-SQL) que no pueden migrarse directamente a pilas tecnológicas modernas sin un esfuerzo manual significativo. Esta herramienta automatiza la fase de traducción estructural:
Entrada | Salida |
| Definiciones de modelos |
PL/SQL | Equivalente en TypeScript de mejor esfuerzo |
Cualquier combinación de DDL heredado | Utilidades de consulta de Prisma Client en TypeScript |
Archivo DDL completo | Informe de validación con análisis de pérdida de precisión |
Arquitectura
src/
├── parser/
│ └── sql-transpiler.ts # DDL lexer/parser + Prisma/TS code generator
├── engine/
│ └── schema-validator.ts # Precision-loss & semantic mismatch validator
├── mcp/
│ └── server.ts # MCP server (stdio transport)
└── cli.ts # Commander.js interactive CLI
tests/
└── transpiler.test.ts # Jest unit tests (40+ assertions)Módulos principales
src/parser/sql-transpiler.ts
Responsable de todo el proceso de transpilación:
Tokenización — elimina comentarios, normaliza los espacios en blanco y gestiona los identificadores entre comillas.
Análisis de DDL —
CREATE TABLEcon columnas, restricciones, claves externas (FK) e índices.Análisis de PL/SQL —
CREATE [OR REPLACE] PROCEDURE/FUNCTIONcon direcciones de parámetros.Mapeo de tipos — más de 40 mapeos de tipos heredados a
{ prismaType, postgresType }.Generación del esquema Prisma — anotaciones
@@map,@db.*, claves primarias compuestas y relaciones FK.Generación de consultas TypeScript — funciones auxiliares CRUD que usan
PrismaClient.Traducción estructural de PL/SQL —
BEGIN/END,IF/THEN/ELSIF,FOR/WHILE LOOP,:=,DBMS_OUTPUT.
src/engine/schema-validator.ts
Ejecuta un motor de reglas sobre las definiciones de tablas transpiladas y emite registros estructurados ValidationIssue:
Crítico — pérdida de datos garantizada (p. ej.,
BIGINT_OVERFLOW,NULLABLE_PK)Advertencia — discrepancia semántica que requiere revisión (p. ej.,
ORACLE_DATE_HAS_TIME,XMLTYPE_NO_NATIVE)Información — notas informativas (p. ej.,
LOB_TO_TEXT,DB2_GRAPHIC_TYPE)
src/mcp/server.ts
Servidor MCP que expone tres herramientas mediante transporte stdio:
Herramienta | Descripción |
| Análisis completo + generación: devuelve AST, esquema Prisma y consultas TS |
| Devuelve solo el contenido de |
| Devuelve un informe de validación estructurado o en texto |
Primeros pasos
Requisitos previos
Node.js ≥ 18
npm ≥ 9
Instalación
npm installCompilación
npm run buildEnlazar la CLI globalmente (opcional)
npm link
db-migrate --helpComandos CLI
transpile <file>
Analiza un archivo DDL y genera schema.prisma, queries.ts y ast.json en el directorio de salida.
npx ts-node src/cli.ts transpile ./examples/oracle_hr.sql \
--dialect oracle \
--out ./outputOpciones:
Opción | Por defecto | Descripción |
|
| Dialecto de origen: |
|
| Directorio de salida |
| — | Omitir la generación de consultas TypeScript |
| — | Omitir la validación posterior a la transpilación |
validate <file>
Valida los mapeos de tipos y genera un informe estructurado.
npx ts-node src/cli.ts validate ./examples/oracle_hr.sql \
--dialect oracle \
--format textOpciones:
Opción | Por defecto | Descripción |
|
| Dialecto de origen |
|
|
|
| — | Código de salida 1 si se encuentran advertencias (para pipelines de CI) |
Códigos de salida:
Código | Significado |
| Sin problemas o solo información |
| Advertencias encontradas (solo con |
| Problemas críticos encontrados |
parse-inline <ddl>
Prueba rápida — analiza una cadena DDL directamente desde la línea de comandos.
npx ts-node src/cli.ts parse-inline \
"CREATE TABLE T (ID NUMBER(10) NOT NULL, NAME VARCHAR2(100), CONSTRAINT PK_T PRIMARY KEY (ID));"mcp
Inicia el servidor MCP mediante stdio (para la integración con asistentes de IA).
npx ts-node src/cli.ts mcpServidor MCP
El servidor MCP puede registrarse con cualquier asistente de IA compatible con MCP (p. ej., Claude Desktop, IBM Bob).
Herramienta: parse_legacy_ddl
{
"tool": "parse_legacy_ddl",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle",
"include_typescript": true
}
}Devuelve: AST completo, esquema Prisma, consultas TypeScript y advertencias.
Herramienta: generate_prisma_schema
{
"tool": "generate_prisma_schema",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle"
}
}Devuelve: el contenido de schema.prisma como una cadena de texto simple.
Herramienta: validate_type_mapping
{
"tool": "validate_type_mapping",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle",
"format": "json"
}
}Devuelve: un JSON estructurado ValidationReport o texto legible por humanos.
Referencia de mapeo de tipos
Tipo heredado | Tipo Prisma | Tipo PostgreSQL | Notas |
|
|
| Se preserva la precisión |
|
|
| Se preserva la escala |
|
|
| Cabe en 32 bits |
|
|
| Cabe en 64 bits |
|
|
| ⚠ BigInt se desbordaría |
|
|
| |
|
|
| Relleno de longitud fija |
|
|
| ℹ Sin segmento LOB separado |
|
|
| ℹ Almacenamiento en línea |
|
|
| ⚠ La fecha DATE de Oracle incluye hora |
|
|
| |
|
|
| |
|
|
| ⚠ Precisión simple |
|
|
| |
|
|
| ⚠ Sin XML nativo en Prisma |
|
|
| |
|
|
| |
|
|
| |
|
|
|
Reglas de validación
Código | Gravedad | Desencadenante | Recomendación |
| warning |
| Añadir escala explícita |
| critical |
| Usar |
| warning |
| Usar |
| info |
| Actualizar las APIs de streaming LOB |
| info |
| Usar la API lo para valores > 1 GB |
| warning |
| Usar |
| warning |
| Verificar la lógica de conversión de zona horaria |
| warning |
| Reemplazar por |
| info |
| Usar |
| warning |
| Usar |
| info |
| Verificar la transcodificación UTF-8 |
| warning | La tabla no tiene PK | Añadir |
| critical | La columna PK se analizó como anulable | Corregir el DDL de origen |
Estructura del proyecto
db-legacy-migration-agent/
├── src/
│ ├── parser/
│ │ └── sql-transpiler.ts # Type mappings, DDL parser, Prisma & TS generators
│ ├── engine/
│ │ └── schema-validator.ts # Rule engine, ValidationReport, formatter
│ ├── mcp/
│ │ └── server.ts # MCP server with 3 tools
│ └── cli.ts # Commander.js CLI entrypoint
├── tests/
│ └── transpiler.test.ts # Jest unit tests
├── dist/ # Compiled output (after `npm run build`)
├── output/ # Generated files (schema.prisma, queries.ts, ast.json)
├── package.json
├── tsconfig.json
└── README.mdEjecutar las pruebas
# Run all tests
npm test
# With coverage
npm test -- --coverage
# Watch mode
npm test -- --watchResultado esperado: más de 40 aserciones en el análisis del transpilador, el mapeo de tipos, la traducción de PL/SQL y las reglas del validador.
Contribuciones
Haz un fork del repositorio y clónalo
Ejecuta
npm installpara instalar las dependenciasAñade tu funcionalidad o corrección en
src/Añade o actualiza las pruebas en
tests/Ejecuta
npm testynpm run typecheckantes de enviar un PR
Licencia
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn extensible MCP server for database operations that supports PostgreSQL for managing schemas, tables, data, and user permissions. It features automatic migration recording for DDL changes and integrates with various AI-powered editors like Cursor, Zed, and Claude Code.222MIT
- AlicenseAqualityCmaintenanceA lightweight MCP server for relational databases, enabling dynamic connections to PostgreSQL and MySQL, SQL execution, and transaction control.7511MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that analyzes TypeScript/Prisma projects, builds dependency graphs, and protects against dangerous modifications and silent regressions.141MIT
- AlicenseAqualityAmaintenanceMCP server that reads your database schema from SQL DDL, Prisma, Drizzle, TypeORM, or SQLAlchemy, generates a Mermaid ER diagram, and writes it into your documentation, with drift detection to keep diagrams up-to-date.51MIT
Related MCP Connectors
MCP server for managing Prisma Postgres.
MCP server for interacting with the Supabase platform
Butterbase MCP server — manage your backend: schemas, auth, functions, storage, RAG, deploys.
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/felipeassis10/db-legacy-migration-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server