mcpField
C
conflictfix

conflictfix

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

conflictfix について

conflictfixは、三者間マージの競合箇所を機械的に解決できるか、リスクがあるか分類するローカルツールです。安全な場合のみ解決行を返し、それ以外は人による確認に残します。

主な機能

  1. 01競合箇所を5種類に分類
  2. 02一致・片側変更・空白差分を解決
  3. 03リスクのある箇所は未解決のまま保持
  4. 04箇所ごとと全体の安全性を集計
  5. 05リポジトリのファイルを読まずに入力を検証

活用シーン

  1. 01人による確認前の競合箇所の分類
  2. 02機械的に解決できる変更の特定
  3. 03すべての競合箇所が解決可能かの確認

MCP 対応

MCP サーバーは `triage_conflicts` ツールを公開します。パスと呼び出し側が指定する base、ours、theirs の行を受け取り、分類と安全な解決結果を返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-conflictfix": {
"command": "npx",
"args": [
"-y",
"@reneturcios/conflictfix"
]
}
}
}
起動コマンドnpx -y @reneturcios/conflictfix

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/conflictfix0.1.0
ocighcr.io/cloudcorprecords/conflictfix:0.1.0

ツール

1

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
pathstringはい競合ハンクが属するファイルパス
hunksarrayはいトリアージする競合ハンク。各項目には base、ours、theirs の行リストが含まれます

詳細

conflictfix

マージコンフリクトがすでに発生しており、各ハンクについて判断する内容は明確です。このハンクを機械的に解決できるのか、それとも人間が確認する必要があるのか、という点です。conflictfix はハンクごとに判定します。ファイルパスと、各ハンクについて3ウェイマージで使用する3つの行リスト、つまり共通の祖先の行(base)、自分側の行(ours)、相手側の行(theirs)を渡すと、各ハンクを分類し、安全なものについては解決後の行を返し、リスクのあるものはそのまま残します。

安全なクラスは4つあります。ours と theirs が完全に同じ場合、ハンクは identical となり、base との差にかかわらず、その行に解決されます。片方の側だけが変更された場合、ours が base と同じならハンクは theirs_only となり、theirs に解決されます。または、theirs が base と同じならハンクは ours_only となり、ours に解決されます。この場合は、すべての行が削除されていても、変更された側がそのまま採用されます。両側の違いが空白文字だけの場合、ハンクは whitespace_only となり、空白も含めてそのまま ours の行が解決結果として返されます。正規化によってクラスは判定されますが、行が書き換えられることはありません。それ以外はすべて conflict となり、安全ではないため、解決結果は null で、このツールによって自動マージされることはありません。

チェックは定められた順序で実行され、最初に一致したものが採用されます。そのため、3つのリストすべてが一致するハンクは ours_only ではなく identical となり、片側だけの変更が空白文字を除けば同じ場合も、空白文字だけの変更ではなく、片側だけの変更として報告されます。空白文字の正規化では各行をトリミングし、トリミング後に空になる先頭と末尾の項目を取り除いたうえで、残りを改行で連結します。この処理では途中の空行は保持されるため、片側の途中にのみ空行がある場合は実際の差異となり、ハンクは空白文字の違いではなく conflict となります。

結果には path がそのまま含まれ、入力した各ハンクに対応するエントリが1つずつ含まれます。各エントリには0始まりの index、class、safe フラグ、resolution が含まれ、さらに結果の合計として safe_count、risky_count、fully_resolvable も含まれます。fully_resolvable は、リスクのあるハンクがない場合に限り true になります。不正な入力、つまり path がない、空、または文字列ではない場合、hunks リストがない、配列ではない、または空の場合、ハンクがオブジェクトではない場合、base、ours、theirs がない、または配列ではない場合、あるいは文字列ではない行が含まれる場合は、hunks[2].ours[0] must be a string のように、問題のあるパスを示す検証エラーとなり、部分的な結果は返されません。ハンク項目内も含め、未知の追加フィールドは無視されます。この計算は純粋かつローカルに行われます。リポジトリの読み取り、マージ、ファイルの変更は行いません。

CLI

npx @reneturcios/conflictfix triage --input args.json
npx @reneturcios/conflictfix --version

args.json には引数オブジェクト全体が含まれます。

{
  "path": "src/app.ts",
  "hunks": [
    {
      "base": ["const x = 1;"],
      "ours": ["const x = 1;"],
      "theirs": ["const x = 2;"]
    },
    {
      "base": ["return a;"],
      "ours": ["return b;"],
      "theirs": ["return c;"]
    }
  ]
}

結果は JSON として出力されます。

{
  "path": "src/app.ts",
  "hunks": [
    {
      "index": 0,
      "class": "theirs_only",
      "safe": true,
      "resolution": ["const x = 2;"]
    },
    {
      "index": 1,
      "class": "conflict",
      "safe": false,
      "resolution": null
    }
  ],
  "safe_count": 1,
  "risky_count": 1,
  "fully_resolvable": false
}

終了コード:成功時は 0、ランタイムエラー時(読み取れない、または無効な入力ファイル、無効な入力を含む)は 1、使用方法のエラー時は 2 です。

MCP サーバー

npx -y @reneturcios/conflictfix mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "conflictfix": {
      "command": "npx",
      "args": ["-y", "@reneturcios/conflictfix", "mcp"]
    }
  }
}
ツール
  • triage_conflicts — 3ウェイマージのコンフリクトを判定します。呼び出し側から渡された base、ours、theirs の行に基づいて、各ハンクを安全な機械的解決またはリスクありに分類します。安全なハンクについては解決後の行を返し、リスクのあるハンクは自動マージしません。

    • path(文字列、必須、空でない) — コンフリクトのハンクが属するファイルパス
    • hunks(配列、必須、1項目以上) — 判定するコンフリクトのハンク。各項目には次の内容が含まれます。
      • base(文字列の配列、必須、空でも可) — 共通の祖先の行
      • ours(文字列の配列、必須、空でも可) — 自分側の行
      • theirs(文字列の配列、必須、空でも可) — 相手側の行

    {path, hunks, safe_count, risky_count, fully_resolvable} を返します。hunks 内の各エントリは {index, class, safe, resolution} で、class は identical、theirs_only、ours_only、whitespace_only、conflict のいずれかです。

Docker

docker run -i ghcr.io/cloudcorprecords/conflictfix
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/conflictfix triage --input /w/args.json

開発

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

ライセンス

MIT — Copyright (c) 2026 Rene Turcios

コメント

MCP は初めてですか?

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

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