semamerge
SemaMerge
An MCP (Model Context Protocol) server that detects semantic merge conflicts between Git branches using AST-level analysis.
When two branches change code in ways that Git merges cleanly but are functionally incompatible, SemaMerge catches it before the merge breaks your app.
What It Detects
Conflict Type | Example |
Type signature change | Branch A changes |
Removed/renamed export | Branch A removes |
Parameter change | Branch A adds required param to function, Branch B calls with old signature |
Interface/contract break | Branch A adds required field to interface, Branch B implements without it |
Enum/constant change | Branch A removes |
Import path change | Branch A moves file, Branch B imports from old path |
Installation
npx semamergeOr install globally:
npm install -g semamergeOr clone and build from source:
git clone https://github.com/vineethwilson15/semamerge.git
cd semamerge
npm install
npm run buildMCP Tools
check_merge_safety
Quick pre-merge check. Returns a risk score (safe/warning/danger).
{
"repoPath": "/path/to/repo",
"sourceBranch": "feature-x",
"targetBranch": "main"
}analyze_branches
Deep analysis with per-file breakdown of all semantic conflicts.
{
"repoPath": "/path/to/repo",
"branchA": "feature-x",
"branchB": "feature-y",
"baseBranch": "main"
}list_semantic_changes
Lists all semantic changes on a branch (functions, exports, types, etc.).
{
"repoPath": "/path/to/repo",
"branch": "feature-x",
"baseBranch": "main"
}analyze_file_pair
Deep-dive into a specific file's semantic diff between two branches.
{
"repoPath": "/path/to/repo",
"filePath": "src/utils.ts",
"branchA": "feature-x",
"branchB": "main"
}Configuration
VS Code (Copilot)
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"semamerge": {
"command": "node",
"args": ["/path/to/semamerge/dist/index.js"]
}
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"semamerge": {
"command": "node",
"args": ["/path/to/semamerge/dist/index.js"]
}
}
}Supported Languages
TypeScript / JavaScript (
.ts,.tsx,.js,.jsx,.mjs,.cjs)Python support planned
How It Works
Git layer — Reads file content from branches without checkout using
git showAST parsing — Parses source code with tree-sitter (WASM) into syntax trees
Semantic extraction — Walks ASTs to extract function signatures, types, exports, imports, enums
Three-way comparison — Computes semantic diffs from common ancestor to each branch
Conflict detection — Cross-references changes to find incompatibilities
Development
npm run build # Compile TypeScript
npm run dev # Watch mode
npm test # Run testsLicense
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vineethwilson15/semamerge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server