关于 Semamerge
Semamerge 是用于比较 Git 分支语义冲突的 MCP 服务,通过 AST 分析发现文本合并成功但可能造成运行问题的代码变更。它面向需要在合并前检查分支兼容性的开发者,支持 TypeScript 和 JavaScript。
主要功能
- 01AST 级分支变更分析
- 02检测签名、导出和接口冲突
- 03合并风险评分
- 04按文件列出语义冲突
- 05支持 TypeScript 和 JavaScript
适用场景
- 01合并前检查分支安全性
- 02排查跨分支接口或导出不兼容
- 03查看特定文件的语义差异
MCP 相关
该 MCP 服务提供合并安全检查、分支深度分析、语义变更列表和文件对分析等工具,供 MCP 客户端调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| repoPath | string | 是 | Git 仓库的绝对路径 |
| sourceBranch | string | 是 | 正在合并的分支(源分支) |
| targetBranch | string | 是 | 要合并到的目标分支 |
详细介绍
SemaMerge
一个 MCP(Model Context Protocol)服务,可通过 AST 级分析检测 Git 分支之间的语义合并冲突。
当两个分支更改代码的方式导致 Git 可以顺利合并、但功能上却不兼容时,SemaMerge 会在合并破坏应用之前捕获问题。
可检测的冲突
| 冲突类型 | 示例 |
|---|---|
| 类型签名变更 | 分支 A 更改 getUser() 的返回类型,分支 B 调用 getUser().address |
| 导出项被移除或重命名 | 分支 A 移除 export function validate(),分支 B 添加 import { validate } |
| 参数变更 | 分支 A 为函数添加必需参数,分支 B 使用旧签名调用该函数 |
| 接口/契约破坏 | 分支 A 为接口添加必需字段,分支 B 实现该接口时未包含此字段 |
| 枚举/常量变更 | 分支 A 移除 Status.PENDING,分支 B 使用 Status.PENDING |
| 导入路径变更 | 分支 A 移动文件,分支 B 从旧路径导入 |
安装
npx semamerge
或全局安装:
npm install -g semamerge
或克隆并从源代码构建:
git clone https://github.com/vineethwilson15/semamerge.git
cd semamerge
npm install
npm run build
MCP 工具
check_merge_safety
快速检查合并前的安全性。返回风险评分(安全/警告/危险)。
{
"repoPath": "/path/to/repo",
"sourceBranch": "feature-x",
"targetBranch": "main"
}
analyze_branches
深入分析,并按文件列出所有语义冲突。
{
"repoPath": "/path/to/repo",
"branchA": "feature-x",
"branchB": "feature-y",
"baseBranch": "main"
}
list_semantic_changes
列出分支上的所有语义变更(函数、导出项、类型等)。
{
"repoPath": "/path/to/repo",
"branch": "feature-x",
"baseBranch": "main"
}
analyze_file_pair
深入分析两个分支之间特定文件的语义差异。
{
"repoPath": "/path/to/repo",
"filePath": "src/utils.ts",
"branchA": "feature-x",
"branchB": "main"
}
配置
VS Code(Copilot)
在 VS Code 的 settings.json 中添加:
{
"mcp": {
"servers": {
"semamerge": {
"command": "node",
"args": ["/path/to/semamerge/dist/index.js"]
}
}
}
}
Claude Desktop
在 claude_desktop_config.json 中添加:
{
"mcpServers": {
"semamerge": {
"command": "node",
"args": ["/path/to/semamerge/dist/index.js"]
}
}
}
支持的语言
- TypeScript / JavaScript(
.ts、.tsx、.js、.jsx、.mjs、.cjs) - 计划支持 Python
工作原理
- Git 层——使用
git show读取分支中的文件内容,无需检出分支 - AST 解析——使用 tree-sitter(WASM)将源代码解析为语法树
- 语义提取——遍历 AST,提取函数签名、类型、导出项、导入项和枚举
- 三方比较——计算从共同祖先到各分支的语义差异
- 冲突检测——交叉比对变更,找出不兼容之处
开发
npm run build # Compile TypeScript
npm run dev # Watch mode
npm test # Run tests
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。