MCP Migration Advisor

Análise de risco de migração de banco de dados para Flyway e Liquibase. Detecta alterações perigosas de esquema — riscos de bloqueio, perda de dados, operações destrutivas — antes de chegarem à produção.

Documentação

npm version License: MIT

MCP Migration Advisor

Servidor MCP para análise de risco em migrações de banco de dados. Detecta alterações de schema perigosas antes que cheguem à produção.

Por que esta ferramenta?

Falhas em migrações de banco de dados causam indisponibilidades. Esta ferramenta analisa suas migrações Flyway e Liquibase antes de serem executadas — detectando operações destrutivas, riscos de lock e padrões de perda de dados.

Diferente do MigrationPilot (apenas PG, análise de SQL bruto), esta ferramenta analisa changelogs Liquibase XML e YAML nativamente — extraindo changeSets, detectando conflitos entre IDs de changeSet e validando a completude de rollbacks. Funciona em vários tipos de banco de dados, não apenas PostgreSQL.

Recursos

  • Análise de Risco de Lock: Detecta operações DDL que adquirem locks pesados de tabela (locks ACCESS EXCLUSIVE, SHARE)
  • Detecção de Perda de Dados: Encontra remoções de colunas, alterações de tipo que truncam, TRUNCATE/DELETE sem WHERE
  • Pontuação de Risco: Calcula pontuação de risco de 0 a 100 com base na gravidade dos problemas detectados
  • Suporte a Flyway: Analisa nomes de arquivos de migração V__.sql e R__.sql
  • Suporte a Liquibase: Analisa changelogs XML e YAML com extração de changeSets
  • Detecção de Conflitos: Identifica IDs de changeSet duplicados e problemas de ordenação
  • Validação de Rollback: Verifica a completude do rollback para cada changeSet
  • Recomendações Acionáveis: Cada risco inclui uma alternativa segura específica

Nível Pro

Gere relatórios de diagnóstico exportáveis (HTML + PDF) com uma chave de licença Pro.

  • Relatório completo de análise de thread dump da JVM com recomendações acionáveis
  • Exportação em PDF para compartilhar com sua equipe
  • Suporte prioritário

US$ 9,00/mês — Obter Licença Pro

A chave de licença Pro ativa a ferramenta MCP generate_report no mcp-jvm-diagnostics.

Instalação

npx mcp-migration-advisor

Ou instale globalmente:

npm install -g mcp-migration-advisor

Configuração do Claude Desktop

Adicione ao ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "migration-advisor": {
      "command": "npx",
      "args": ["-y", "mcp-migration-advisor"]
    }
  }
}

Demonstração Rápida

Experimente estes prompts no Claude:

  1. "Analise esta migração para riscos: ALTER TABLE users DROP COLUMN email;" — Retorna pontuação de risco (0-100), riscos de lock, avisos de perda de dados e alternativas seguras
  2. "Gere um rollback para esta migração: CREATE TABLE orders (...); CREATE INDEX idx_orders_user ON orders(user_id);" — Produz DDL reverso na ordem correta
  3. "Pontue este changelog Liquibase: [cole o XML]" — Analisa changeSets e calcula o risco geral

Ferramentas

analyze_migration

Análise completa de um arquivo de migração SQL. Retorna riscos de lock, análise de perda de dados e recomendações.

Parâmetros:

  • filename — Nome do arquivo de migração (ex.: V2__add_user_email.sql)
  • sql — O conteúdo SQL

analyze_liquibase

Análise completa de um changelog Liquibase XML. Analisa changeSets e aplica a mesma análise de risco de lock e perda de dados.

Parâmetros:

  • xml — O conteúdo do changelog Liquibase XML

analyze_liquibase_yaml

Análise completa de um changelog Liquibase YAML. Analisa changeSets do formato YAML e aplica a mesma análise de risco de lock e perda de dados. Suporta todos os tipos de alteração padrão: createTable, dropTable, addColumn, dropColumn, modifyDataType, createIndex, renameTable, renameColumn e outros.

Parâmetros:

  • yaml — O conteúdo do changelog Liquibase YAML

score_risk

Pontuação de risco rápida (0-100) com veredito (RISCO BAIXO/MODERADO/ALTO).

Parâmetros:

  • filename — Nome do arquivo de migração
  • sql — O conteúdo SQL

generate_rollback

Gera DDL reverso para desfazer uma migração SQL. Produz SQL de rollback com avisos para operações irreversíveis.

Parâmetros:

  • filename — Nome do arquivo de migração
  • sql — O conteúdo SQL

Reverte automaticamente:

  • CREATE TABLE → DROP TABLE
  • ADD COLUMN → ALTER TABLE ... DROP COLUMN
  • CREATE INDEX → DROP INDEX (preserva CONCURRENTLY)
  • ADD CONSTRAINT → DROP CONSTRAINT
  • SET NOT NULL → DROP NOT NULL
  • RENAME → RENAME reverso

Avisa sobre operações irreversíveis:

  • DROP TABLE, DROP COLUMN (perda de dados)
  • Alterações de tipo de coluna (tipo original desconhecido)
  • DROP INDEX, DROP CONSTRAINT (definição original desconhecida)

Inclui instrução de limpeza schema_history do Flyway.

detect_conflicts

Detecta conflitos entre dois arquivos de migração SQL. Identifica modificações na mesma tabela, alterações na mesma coluna, riscos de contenção de lock e dependências de drop que podem causar falhas se aplicadas simultaneamente ou na ordem errada.

Parâmetros:

  • filename_a — Nome do primeiro arquivo de migração (ex.: V3__add_email.sql)
  • sql_a — Conteúdo SQL da primeira migração
  • filename_b — Nome do segundo arquivo de migração (ex.: V4__modify_users.sql)
  • sql_b — Conteúdo SQL da segunda migração

Detecta:

  • Conflitos na mesma coluna (CRÍTICO) — ambas as migrações modificam a mesma coluna na mesma tabela
  • Dependências de drop (CRÍTICO) — uma migração remove uma tabela que a outra modifica, causando falhas dependentes da ordem
  • Contenção de lock (AVISO) — ambas as migrações exigem locks exclusivos na mesma tabela, arriscando timeouts de espera de lock

Retorna um relatório de conflitos com níveis de gravidade, tabelas/colunas afetadas e se as migrações podem ser executadas com segurança simultaneamente.

O Que Ele Detecta

PadrãoGravidadePor Que É Perigoso
NOT NULL sem DEFAULTCRÍTICOReescrita completa da tabela com lock ACCESS EXCLUSIVE
Alteração de tipo de colunaCRÍTICOReescrita da tabela, risco de truncamento de dados
CREATE INDEX (sem CONCURRENTLY)ALTOLock SHARE bloqueia todas as escritas
DROP TABLE CASCADECRÍTICORemove todos os objetos dependentes
DROP COLUMNALTOPerda de dados irreversível
SET NOT NULLALTOVarredura completa da tabela com lock
Restrição FOREIGN KEYMÉDIOBloqueia ambas as tabelas para validação
TRUNCATE / DELETE sem WHEREPerda de dados CERTATodas as linhas excluídas permanentemente

Limitações e Problemas Conhecidos

  • Apenas análise estática: Analisa o texto SQL sem conectividade com o banco de dados. Não pode verificar tamanhos reais de tabelas, contagens de linhas ou schema existente para calibrar o risco.
  • Focado em PostgreSQL: As recomendações de risco de lock são principalmente para PostgreSQL. Os comportamentos de lock do MySQL e SQLite diferem e podem não ser totalmente cobertos.
  • DDL complexo: Procedimentos armazenados, triggers e SQL dinâmico dentro de migrações são classificados como "OUTROS" e recebem avaliação de risco genérica.
  • Suporte a Liquibase: Lida com changesets XML e YAML padrão. O formato JSON do Liquibase e tipos de alteração personalizados não são suportados.
  • Limitações de rollback: Rollbacks gerados automaticamente não podem reverter DROP TABLE, DROP COLUMN ou alterações de tipo (os dados são perdidos). Isso gera avisos em vez de SQL de rollback.
  • Transações multi-instruções: O analisador divide por ponto e vírgula. Instruções contendo ponto e vírgula dentro de strings ou blocos com aspas podem ser divididas incorretamente.
  • Sem execução: O advisor analisa, mas nunca executa migrações. Todas as recomendações são consultivas.
  • DDL específico de banco: O analisador tem como alvo a sintaxe DDL de PostgreSQL/MySQL. PL/SQL do Oracle ou T-SQL do SQL Server podem não ser totalmente reconhecidos.

Parte do MCP Java Backend Suite

Licença

MIT


Fim da vida útil: 2026-05-10.

Este servidor MCP não é mais mantido ou distribuído. A Corporation mudou para atores do marketplace Apify. Consulte irrationalways no Apify e irrcorp/bzp-poland-tenders para o trabalho atual da Corporation.

O pacote npm foi despublicado. O repositório está arquivado apenas para referência histórica.