vineethwilson15/semamerge
file dependency conflicts.
Ask AI about vineethwilson15/semamerge
Powered by Claude Β· Grounded in docs
I know everything about vineethwilson15/semamerge. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
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 getUser() return type, Branch B calls getUser().address |
| Removed/renamed export | Branch A removes export function validate(), Branch B adds import { validate } |
| 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 Status.PENDING, Branch B uses Status.PENDING |
| Import path change | Branch A moves file, Branch B imports from old path |
Installation
npx semamerge
Or install globally:
npm install -g semamerge
Or clone and build from source:
git clone https://github.com/vineethwilson15/semamerge.git
cd semamerge
npm install
npm run build
MCP 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 show - AST 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 tests
License
MIT
