Skip to main content
Glama
felipeassis10

db-legacy-migration-agent

db-legacy-migration-companion

Inhaltsverzeichnis


Related MCP server: db-mcp

Überblick

Veraltete Unternehmenssysteme nutzen häufig herstellerspezifische SQL-Dialekte (Oracle PL/SQL, IBM DB2, Microsoft T-SQL), die ohne erheblichen manuellen Aufwand nicht direkt in moderne Software-Stacks migriert werden können. Dieses Tool automatisiert die strukturelle Übersetzung:

Eingabe

Ausgabe

CREATE TABLE (Oracle, DB2, MySQL, MSSQL)

Modelldefinitionen für schema.prisma

PL/SQL CREATE PROCEDURE / CREATE FUNCTION

Best-Effort-TypeScript-Äquivalent

Beliebige Mischung aus Legacy-DDL

TypeScript-Query-Helfer für den Prisma Client

Vollständige DDL-Datei

Validierungsbericht mit Präzisionsverlust-Analyse


Architektur

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)

Kernmodule

src/transpiler/sql-transpiler.ts

Verantwortlich für die vollständige Transpilierungspipeline:

  1. Tokenization – entfernt Kommentare, normalisiert Leerraum, behandelt Bezeichner in Anführungszeichen.

  2. DDL-ParsingCREATE TABLE mit Spalten, Constraints, Fremdschlüsseln und Indizes.

  3. PL/SQL-ParsingCREATE [OR REPLACE] PROCEDURE/FUNCTION mit Parameterrichtungen.

  4. Typzuordnung – 40+ Legacy-Typzuordnungen auf { prismaType, postgresType }.

  5. Prisma-Schema-Generierung@@map, @db.*-Annotationen, zusammengesetzte Primärschlüssel, FK-Beziehungen.

  6. TypeScript-Query-Generierung – CRUD-Helfer mit PrismaClient.

  7. PL/SQL-StrukturübersetzungBEGIN/END, IF/THEN/ELSIF, FOR/WHILE LOOP, :=, DBMS_OUTPUT.

src/engine/schema-validator.ts

Führt eine Regel-Engine über die transpilierten Tabellendefinitionen aus und erzeugt strukturierte ValidationIssue-Datensätze:

  • Kritisch – Datenverlust garantiert (z. B. BIGINT_OVERFLOW, NULLABLE_PK).

  • Warnung – semantische Abweichung, die eine Überprüfung erfordert (z. B. ORACLE_DATE_HAS_TIME, XMLTYPE_NO_NATIVE).

  • Info – Informationen zur Nachvollziehbarkeit (z. B. LOB_TO_TEXT, DB2_GRAPHIC_TYPE).

src/mcp/server.ts

MCP-Server, der drei Tools über stdio-Transport anbietet:

Tool

Beschreibung

parse_legacy_ddl

Vollständiges Parsen + Generieren: gibt AST, Prisma-Schema und TS-Queries zurück

generate_prisma_schema

Gibt nur den Inhalt von schema.prisma zurück

validate_type_mapping

Gibt einen strukturierten oder als Text verfassten Validierungsbericht zurück


Erste Schritte

Voraussetzungen

  • Node.js ≥ 18

  • npm ≥ 9

Installation

npm install

Ausführen des Builds

npm run build

CLI global verfügbar machen (optional)

npm link
db-migrate --help

CLI-Befehle

transpile <file>

Analysiert eine DDL-Datei und erzeugt schema.prisma, queries.ts und ast.json im Ausgabeverzeichnis.

npx ts-node src/cli.ts transpile ./examples/oracle_hr.sql \
  --dialect oracle \
  --out ./output

Optionen:

Flag

Default

Beschreibung

-d, --dialect

oracle

Quelldialekt: db2 | oracle | mysql | mssql

-o, --out

./output

Ausgabeverzeichnis

--no-ts

TypeScript-Query-Generierung überspringen

--no-validate

Validierung nach der Transpilierung überspringen


validate <file>

Validiert die Typzuordnungen und erstellt einen strukturierten Bericht.

npx ts-node src/cli.ts validate ./examples/oracle_hr.sql \
  --dialect oracle \
  --format text

Optionen:

Flag

Standard

Beschreibung

-d, --dialect

oracle

Quelldialekt

-f, --format

text

text oder json

--fail-on-warnings

Exit-Code 1, wenn Warnungen gefunden werden (für CI-Pipelines)

Exit-Codes:

Code

Bedeutung

0

Keine Probleme oder nur Informationen

1

Warnungen gefunden (nur mit --fail-on-warnings)

2

Kritische Probleme gefunden


parse-inline <ddl>

Schnelltest – eine DDL-Zeichenfolge direkt aus der Befehlszeile parsen.

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

Startet den MCP-Server über stdio (für KI-Assistenten-Integration).

npx ts-node src/cli.ts mcp

MCP-Server

Der MCP-Server kann mit jedem MCP-kompatiblen KI-Assistenten (z. B. Claude Desktop, IBM watsonx Assistant) registriert werden.

Tool: Daemon

{
  "tool": "parse_legacy_ddl",
  "input": {
    "ddl": "CREATE TABLE EMPLOYEES (...);",
    "dialect": "oracle",
    "include_typescript": true
  }
}

Rückgabe: vollständiger AST, Prisma-Schema, TypeScript-Query, Warnungen.

Tool: generate_prisma_schema

{
  "tool": "generate_prisma_schema",
  "input": {
    "ddl": "CREATE TABLE EMPLOYEES (...);",
    "dialect": "oracle"
  }
}

Rückgabe: Inhalt von schema.prisma als einfacher String.

Tool: validate_type_mapping

{
  "tool": "validate_type_mapping",
  "input": {
    "ddl": "CREATE TABLE EMPLOYEES (...);",
    "dialect": "oracle",
    "format": "json"
  }
}

Rückgabe: strukturiertes ValidationReport-JSON oder Menschenlesbarer Text.

Typzuordnungsreferenz

Legacy-Typ

Prisma-Typ

PostgreSQL-Typ

Anmerkungen

NUMBER(p) / NUMERIC

Decimal

DECIMAL(p)

Genauigkeit bleiben erhalten

NUMBER(p,s)

Decimal

DECIMAL(p,s)

Skalierung bleibt erhalten

NUMBER(p) p≤9

Int

INTEGER

Passt in 32 Bit

NUMBER(p) 10≤p≤18

BigInt

BIGINT

Passt in 64 Bit

NUMBER(p) p>18

Decimal

DECIMAL(p)

⚠ BigInt würde überlaufen

VARCHAR2(n)

String

VARCHAR(n)

CHAR(n)

String

CHAR(n)

Array-Fester Länge (Padding)

CLOB / NCLOB / LONG

String

TEXT

ℹ Kein separates LOB-Segment

BLOB / RAW

Bytes

BYTEA

ℹ Inline-Speicherung

DATE (Oracle)

DateTime

DATE

⚠ Oracle DATE enthält Uhrzeit

TIMESTAMP

DateTime

TIMESTAMP

TIMESTAMP WITH TIME ZONE

DateTime

TIMESTAMPTZ

BINARY_FLOAT

Float

REAL

⚠ Einfache Präzision

BINARY_DOUBLE

Float

DOUBLE PRECISION

XMLTYPE

String

XML

⚠ Kein natives Prisma-XML

BIGINT

BigInt

BIGINT

DECIMAL(p,s)

Decimal

DECIMAL(p,s)

BOOLEAN

Boolean

BOOLEAN

JSON / JSONB

Json

JSON / JSONB


Validierungsregeln

Code

Schweregrad

Auslöser

Empfehlung

ORACLE_NUMBER_NO_SCALE

warning

NUMBER(p) ohne Skalierung; kann Ganzzahl oder Gleitkommazahl sein

Explizite Skalierung angeben

BIGINT_OVERFLOW

critical

NUMBER(p) bei p>18 auf BigInt abgebildet

Decimal / NUMERIC verwenden

FLOAT_SINGLE_PRECISION

warning

BINARY_FLOAT oder FLOAT(≤24) → REAL

DOUBLE verwenden

LOB_TO_TEXT

info

CLOB/LONG → TEXT

LOB-Streaming-APIs aktualisieren

BLOB_TO_BYTEA

info

BLOB/RAW → BYTEA

Für Werte > 1 GB die lo-API verwenden

ORACLE_DATE_HAS_TIME

warning

Oracle DATE → PostgreSQL DATE

TIMESTAMP verwenden, falls Uhrzeit benötigt wird

LOCAL_TZ_SEMANTICS

warning

TIMESTAMP WITH LOCAL TIME ZONE

Zeitzonen-Konvertierungslogik prüfen

CHAR_LARGE_LENGTH

warning

CHAR(n) n>255

Durch VARCHAR(n) ersetzen

VARCHAR2_EXCEEDS_ORACLE_LIMIT

info

VARCHAR2(n) n>4000

Für unbegrenzte Länge TEXT verwenden

XMLTYPE_NO_NATIVE_XML

warning

XMLTYPE

Für XML-Operationen $queryRaw verwenden

DB2_GRAPHIC_TYPE

info

DB2 GRAPHIC/VARGRAPHIC

UTF-8-/Unicode-Kodierung prüfen

NO_PRIMARY_KEY

warning

Tabelle hat keinen Primärschlüssel

id oder @@id hinzufügen

NULLABLE_PK

critical

Primärschlüsselspalte als nullable analysiert

Quell-DDL korrigieren


Projektstruktur

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

Tests ausführen

# Run all tests
npm test

# With coverage
npm test -- --coverage

# Watch mode
npm test -- --watch

Erwartete Ausgabe: 40+ Aussagen zu Transpiler-Parsing, Typzuordnung, PL/SQL-Übersetzung und Validatorregeln.


Mitwirken

  1. Repository öffnen und lokal klonen.

  2. npm install ausführen, um Abhängigkeiten zu installieren.

  3. Feature or Bugfix in src/ hinzufügen.

  4. Tests in tests/ ergänzen oder aktualisieren.

  5. Vor dem PR npm test und npm run typecheck ausführen.


Lizenz

MIT

F
license - not found
Not graded
quality - not tested
Not graded
maintenance - not tested

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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.
    22
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A lightweight MCP server for relational databases, enabling dynamic connections to PostgreSQL and MySQL, SQL execution, and transaction control.
    7
    51
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that analyzes TypeScript/Prisma projects, builds dependency graphs, and protects against dangerous modifications and silent regressions.
    14
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP 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.
    5
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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