Semamerge について
Semamerge は AST 解析を使い、通常のテキストマージでは見つからない Git ブランチ間の意味的な競合を検出する MCP サーバーです。マージ前にブランチの互換性を確認する開発者向けで、TypeScript と JavaScript に対応します。
主な機能
- 01AST によるブランチ変更分析
- 02シグネチャ・エクスポート・インターフェースの競合検出
- 03マージリスクのスコア表示
- 04ファイル別の意味的競合分析
- 05TypeScript と JavaScript に対応
活用シーン
- 01マージ前のブランチ安全性確認
- 02ブランチ間の API やエクスポートの不整合調査
- 03特定ファイルの意味的差分の確認
MCP 対応
MCP サーバーはマージ安全性チェック、ブランチの詳細分析、意味的変更一覧、ファイルペア分析のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repoPath | string | はい | Git リポジトリの絶対パス |
| sourceBranch | string | はい | マージするブランチ(ソース) |
| targetBranch | string | はい | マージ先のブランチ(ターゲット) |
詳細
SemaMerge
AST レベルの解析を使用して、Git ブランチ間のセマンティックなマージコンフリクトを検出する MCP(Model Context Protocol)サーバーです。
2 つのブランチが、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
マージ前の簡易チェックです。リスクスコア(safe/warning/danger)を返します。
{
"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
2 つのブランチ間における特定ファイルのセマンティックな差分を詳しく分析します。
{
"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 を走査して、関数シグネチャ、型、エクスポート、インポート、列挙型を抽出します
- 3 ウェイ比較 — 共通の祖先から各ブランチへのセマンティックな差分を計算します
- コンフリクト検出 — 変更を相互に照合して、互換性のない変更を見つけます
開発
npm run build # Compile TypeScript
npm run dev # Watch mode
npm test # Run tests
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。