](https://www.npmjs.com/package/mcp-migration-advisor) 
MCP迁移顾问
用于数据库迁移风险分析的MCP服务器。在危险的架构更改投入生产之前检测它们。
为什么是这个工具?
数据库迁移失败会导致中断。此工具分析您的Flyway和Liquibase迁移 之前 它们运行——检测破坏性操作、锁定风险和数据丢失模式。
与MigrationPilot(仅PG,原始SQL分析)不同,此工具 本机解析Liquibase XML和YAML变更日志 --提取changeSet,检测changeSet ID之间的冲突,并验证回滚的完整性。它跨数据库类型工作,而不仅仅是PostgreSQL。
特性
- 锁风险分析:检测获取重表锁(ACCESS EXCLUSIVE、SHARE锁)的DDL操作
- 数据丢失检测:查找列删除、截断的类型更改、不带WHERE的truncate/DELETE
- 风险评分:根据检测到的问题的严重程度计算0-100的风险评分
- Flyway支持:解析V\_\_*.sql和R\_\_*.sql迁移文件名
- Liquibase支持:使用changeSet提取解析XML和YAML变更日志
- 冲突检测:识别重复的changeSet ID和订购问题
- 回滚验证:检查每个changeSet的回滚完整性
- 可操作建议:每种风险都包括一种特定的安全替代方案
专业级别
生成可导出的诊断报告(HTML+PDF) 使用Pro许可证密钥。
- 完整的JVM线程转储分析报告,其中包含可操作的建议
- PDF导出以与您的团队共享
- 优先支持
9.00美元/月 — 获取专业版许可证
Pro许可证密钥激活 generate_report MCP-jvm诊断中的MCP工具。
安装
npx mcp-migration-advisor或全局安装:
npm install -g mcp-migration-advisorClaude桌面配置
添加 ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"migration-advisor": {
"command": "npx",
"args": ["-y", "mcp-migration-advisor"]
}
}
}快速演示
在Claude中尝试以下提示:
- “分析此迁移的风险:ALTER TABLE用户删除COLUMN电子邮件;” --返回风险评分(0-100)、锁定风险、数据丢失警告和安全替代方案
- “为此迁移生成回滚:创建TABLE订单(…);创建索引idx_orders_user ON订单(user_id);” --按正确顺序生成反向DDL
- “对Liquibase更改日志进行评分:\[粘贴XML\]” --分析变更集并计算总体风险
工具
analyze_migration
SQL迁移文件的完整分析。返回锁定风险、数据丢失分析和建议。
参数:
filename--迁移文件名(例如。,V2__add_user_email.sql)sql--SQL内容
analyze_liquibase
Liquibase XML变更日志的完整分析。解析changeSet并应用相同的锁风险和数据丢失分析。
参数:
xml--Liquibase XML更改日志内容
analyze_liquibase_yaml
Liquibase YAML变更日志的完整分析。从YAML格式解析changeSet,并应用相同的锁风险和数据丢失分析。支持所有标准更改类型:createTable、dropTable、addColumn、dropColumn、modifyDataType、createIndex、renameTable、renameColumn等。
参数:
yaml--Liquibase YAML更改日志内容
score_risk
快速风险评分(0-100),并附有判断(低/中/高风险)。
参数:
filename--迁移文件名sql--SQL内容
generate_rollback
生成反向DDL以撤消SQL迁移。生成回滚SQL,并对不可逆操作发出警告。
参数:
filename--迁移文件名sql--SQL内容
自动反转:
- 创建表→ 删除表
- 添加列→ 改变桌子。..落柱
- 创建索引→ DROP索引(同时保留)
- 添加约束→ 跌落约束
- 设置为非空→ 不为空
- 重命名→ 反向重命名
警告不可逆转:
- DROP TABLE,DROP COLUMN(数据丢失)
- 列类型更改(原始类型未知)
- DROP索引、DROP约束(原始定义未知)
包括Flyway schema_history 清理声明。
detect_conflicts
检测两个SQL迁移文件之间的冲突。识别相同的表修改、相同的列更改、锁争用风险和删除依赖关系,如果同时应用或以错误的顺序应用,这些依赖关系可能会导致失败。
参数:
filename_a--第一迁移文件名(例如。,V3__add_email.sql)sql_a--第一次迁移的SQL内容filename_b--第二迁移文件名(例如。,V4__modify_users.sql)sql_b--第二次迁移的SQL内容
检测:
- 同一列冲突 (关键)--两次迁移都会修改同一表上的同一列
- 删除依赖关系 (关键)--一次迁移会删除另一次迁移所修改的表,从而导致顺序相关的失败
- 锁争用 (警告)--两次迁移都需要在同一个表上使用独占锁,这可能会导致锁等待超时
返回一个冲突报告,其中包含严重性级别、受影响的表/列以及迁移是否可以安全地并发运行。
它检测到什么
| 模式 | 严重性 | 为什么它是危险的 |
|---|---|---|
| 不带DEFAULT的NOT NULL | 关键 | 使用ACCESS独占锁重写全表 |
| 列类型更改 | 关键 | 表重写,数据截断风险 |
| CREATE INDEX(非并发) | 高 | 共享锁阻止所有写入 |
| DROP TABLE CASCADE | CRITICAL | 删除所有依赖对象 |
| DROP COLUMN | HIGH | 不可逆的数据丢失 |
| 设置NOT NULL | HIGH | 带锁的全表扫描 |
| 外键约束 | MEDIUM | 锁定两个表以进行验证 |
| TRUNCATE/DELETE without WHERE | 某些数据丢失 | 所有行永久删除 |
限制和已知问题
- 仅进行静态分析:在没有数据库连接的情况下分析SQL文本。无法检查实际表大小、行数或现有架构以校准风险。
- 以PostgreSQL为中心:锁定风险建议主要针对PostgreSQL。MySQL和SQLite的锁行为不同,可能没有完全涵盖。
- 复杂DDL:迁移中的存储过程、触发器和动态SQL被归类为“其他”,并接受通用风险评估。
- Liquibase支持:处理标准XML和YAML变更集。JSON Liquibase格式和自定义更改类型不受支持。
- 回滚限制:自动生成的回滚无法反转DROP TABLE、DROP COLUMN或类型更改(数据丢失)。这些会产生警告,而不是回滚SQL。
- 多对账单交易:解析器按分号拆分。字符串或美元引号内包含分号的语句可能会被错误拆分。
- 不执行:顾问分析但从不执行迁移。所有建议都是咨询性的。
- 特定于数据库的DDL:解析器针对PostgreSQL/MySQL DDL语法。Oracle PL/SQL或SQL Server T-SQL可能无法完全识别。
MCP Java后端套件的一部分
- mcp-db分析仪 --PostgreSQL/MySQL/SQLite模式分析
- mcp弹簧防尘套执行器 --Spring Boot运行状况、指标和bean分析
- mcp-jvm诊断 --线程转储和GC日志分析
- mcp-redis诊断 --Redis内存、慢日志和客户端诊断
许可证
麻省理工学院
______________________________________________________________________
生命终结:2026-05-10。
此MCP服务器不再维护或分发。公司 已经转向Apify市场参与者。看 irrationalways 关于Apify 和 irrcorp/bzp-poland-tenders 对于当前的公司工作。
npm包尚未发布。存储库已存档 仅供历史参考。
