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
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:
- "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
- "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
- "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çãosql— 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çãosql— 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çãofilename_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ão | Gravidade | Por Que É Perigoso |
|---|---|---|
| NOT NULL sem DEFAULT | CRÍTICO | Reescrita completa da tabela com lock ACCESS EXCLUSIVE |
| Alteração de tipo de coluna | CRÍTICO | Reescrita da tabela, risco de truncamento de dados |
| CREATE INDEX (sem CONCURRENTLY) | ALTO | Lock SHARE bloqueia todas as escritas |
| DROP TABLE CASCADE | CRÍTICO | Remove todos os objetos dependentes |
| DROP COLUMN | ALTO | Perda de dados irreversível |
| SET NOT NULL | ALTO | Varredura completa da tabela com lock |
| Restrição FOREIGN KEY | MÉDIO | Bloqueia ambas as tabelas para validação |
| TRUNCATE / DELETE sem WHERE | Perda de dados CERTA | Todas 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
- mcp-db-analyzer — Análise de schema PostgreSQL/MySQL/SQLite
- mcp-spring-boot-actuator — Saúde, métricas e análise de beans do Spring Boot
- mcp-jvm-diagnostics — Análise de thread dump e logs de GC
- mcp-redis-diagnostics — Diagnósticos de memória, slowlog e clientes do Redis
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.