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 |
| Modelldefinitionen für |
PL/SQL | 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:
Tokenization – entfernt Kommentare, normalisiert Leerraum, behandelt Bezeichner in Anführungszeichen.
DDL-Parsing –
CREATE TABLEmit Spalten, Constraints, Fremdschlüsseln und Indizes.PL/SQL-Parsing –
CREATE [OR REPLACE] PROCEDURE/FUNCTIONmit Parameterrichtungen.Typzuordnung – 40+ Legacy-Typzuordnungen auf
{ prismaType, postgresType }.Prisma-Schema-Generierung –
@@map,@db.*-Annotationen, zusammengesetzte Primärschlüssel, FK-Beziehungen.TypeScript-Query-Generierung – CRUD-Helfer mit
PrismaClient.PL/SQL-Strukturübersetzung –
BEGIN/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 |
| Vollständiges Parsen + Generieren: gibt AST, Prisma-Schema und TS-Queries zurück |
| Gibt nur den Inhalt von |
| Gibt einen strukturierten oder als Text verfassten Validierungsbericht zurück |
Erste Schritte
Voraussetzungen
Node.js ≥ 18
npm ≥ 9
Installation
npm installAusführen des Builds
npm run buildCLI global verfügbar machen (optional)
npm link
db-migrate --helpCLI-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 ./outputOptionen:
Flag | Default | Beschreibung |
|
| Quelldialekt: |
|
| Ausgabeverzeichnis |
| — | TypeScript-Query-Generierung überspringen |
| — | 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 textOptionen:
Flag | Standard | Beschreibung |
|
| Quelldialekt |
|
|
|
| — | Exit-Code 1, wenn Warnungen gefunden werden (für CI-Pipelines) |
Exit-Codes:
Code | Bedeutung |
| Keine Probleme oder nur Informationen |
| Warnungen gefunden (nur mit |
| 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 mcpMCP-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 |
|
|
| Genauigkeit bleiben erhalten |
|
|
| Skalierung bleibt erhalten |
|
|
| Passt in 32 Bit |
|
|
| Passt in 64 Bit |
|
|
| ⚠ BigInt würde überlaufen |
|
|
| |
|
|
| Array-Fester Länge (Padding) |
|
|
| ℹ Kein separates LOB-Segment |
|
|
| ℹ Inline-Speicherung |
|
|
| ⚠ Oracle DATE enthält Uhrzeit |
|
|
| |
|
|
| |
|
|
| ⚠ Einfache Präzision |
|
|
| |
|
|
| ⚠ Kein natives Prisma-XML |
|
|
| |
|
|
| |
|
|
| |
|
|
|
Validierungsregeln
Code | Schweregrad | Auslöser | Empfehlung |
| warning |
| Explizite Skalierung angeben |
| critical |
|
|
| warning |
|
|
| info |
| LOB-Streaming-APIs aktualisieren |
| info |
| Für Werte > 1 GB die |
| warning | Oracle |
|
| warning |
| Zeitzonen-Konvertierungslogik prüfen |
| warning |
| Durch |
| info |
| Für unbegrenzte Länge |
| warning |
| Für XML-Operationen |
| info | DB2 | UTF-8-/Unicode-Kodierung prüfen |
| warning | Tabelle hat keinen Primärschlüssel |
|
| 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.mdTests ausführen
# Run all tests
npm test
# With coverage
npm test -- --coverage
# Watch mode
npm test -- --watchErwartete Ausgabe: 40+ Aussagen zu Transpiler-Parsing, Typzuordnung, PL/SQL-Übersetzung und Validatorregeln.
Mitwirken
Repository öffnen und lokal klonen.
npm installausführen, um Abhängigkeiten zu installieren.Feature or Bugfix in
src/hinzufügen.Tests in
tests/ergänzen oder aktualisieren.Vor dem PR
npm testundnpm run typecheckausführen.
Lizenz
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