mcpField
S
Semamerge

Semamerge

本地服务
github.com/vineethwilson15版本控制027 周前更新

关于 Semamerge

Semamerge 是用于比较 Git 分支语义冲突的 MCP 服务,通过 AST 分析发现文本合并成功但可能造成运行问题的代码变更。它面向需要在合并前检查分支兼容性的开发者,支持 TypeScript 和 JavaScript。

主要功能

  1. 01AST 级分支变更分析
  2. 02检测签名、导出和接口冲突
  3. 03合并风险评分
  4. 04按文件列出语义冲突
  5. 05支持 TypeScript 和 JavaScript

适用场景

  1. 01合并前检查分支安全性
  2. 02排查跨分支接口或导出不兼容
  3. 03查看特定文件的语义差异

MCP 相关

该 MCP 服务提供合并安全检查、分支深度分析、语义变更列表和文件对分析等工具,供 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"semamerge": {
"command": "npx",
"args": [
"-y",
"semamerge"
]
}
}
}
启动命令npx -y semamerge

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsemamerge0.1.2

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
repoPathstring是Git 仓库的绝对路径
sourceBranchstring是正在合并的分支(源分支)
targetBranchstring是要合并到的目标分支

详细介绍

SemaMerge

npm version License: MIT semamerge MCP server

一个 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

工作原理

  1. Git 层——使用 git show 读取分支中的文件内容,无需检出分支
  2. AST 解析——使用 tree-sitter(WASM)将源代码解析为语法树
  3. 语义提取——遍历 AST,提取函数签名、类型、导出项、导入项和枚举
  4. 三方比较——计算从共同祖先到各分支的语义差异
  5. 冲突检测——交叉比对变更,找出不兼容之处

开发

npm run build    # Compile TypeScript
npm run dev      # Watch mode
npm test         # Run tests

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。