mcpField
S
Semamerge

Semamerge

ローカル
github.com/vineethwilson15バージョン管理027 週間前に更新

Semamerge について

Semamerge は AST 解析を使い、通常のテキストマージでは見つからない Git ブランチ間の意味的な競合を検出する MCP サーバーです。マージ前にブランチの互換性を確認する開発者向けで、TypeScript と JavaScript に対応します。

主な機能

  1. 01AST によるブランチ変更分析
  2. 02シグネチャ・エクスポート・インターフェースの競合検出
  3. 03マージリスクのスコア表示
  4. 04ファイル別の意味的競合分析
  5. 05TypeScript と JavaScript に対応

活用シーン

  1. 01マージ前のブランチ安全性確認
  2. 02ブランチ間の API やエクスポートの不整合調査
  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

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 は対応予定です

仕組み

  1. Git レイヤー — git show を使用し、チェックアウトせずにブランチからファイルの内容を読み取ります
  2. AST 解析 — tree-sitter(WASM)を使用してソースコードを構文木に解析します
  3. セマンティック情報の抽出 — AST を走査して、関数シグネチャ、型、エクスポート、インポート、列挙型を抽出します
  4. 3 ウェイ比較 — 共通の祖先から各ブランチへのセマンティックな差分を計算します
  5. コンフリクト検出 — 変更を相互に照合して、互換性のない変更を見つけます

開発

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

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。