mcpField
P
peerconflict

peerconflict

ローカル
github.com/CloudCorpRecords開発ツール01 週間前に更新

peerconflict について

peerconflictは、解決済みのパッケージツリーとpeer要件を、充足・未充足の辺を持つグラフに整理します。依存関係のインストール失敗を調べる開発者向けで、列挙された範囲全体に合う、変更を抑えた解決案を提示します。

主な機能

  1. 01peer要件を充足・未充足の辺で表示
  2. 02未導入と範囲外の競合を説明
  3. 03要件全体に沿った最小変更案
  4. 04バージョンと範囲の入力検証
  5. 05指定されたパッケージ情報のみでローカル計算

活用シーン

  1. 01パッケージのインストール失敗の原因調査
  2. 02不足または不適合なpeer依存関係の特定
  3. 03すべてのpeer範囲を満たすバージョンの選定

MCP 対応

MCPサーバーとして動作し、`explain_peer_conflict`ツールを公開します。パッケージのバージョンとpeer要件を受け取り、辺、競合、解決案を返します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
packagesarrayはい解決済みツリー内のパッケージ(1つ以上)

詳細

peerconflict

インストールがピア依存関係エラーで失敗し、出力が入れ子になった要件で埋め尽くされてしまうことがあります。peerconflict は解決済みのツリー、つまりインストール済みパッケージすべての名前とバージョン、および各パッケージが宣言するピア要件を受け取り、問題を読みやすいグラフとして示します。

  • エッジ — ピア要件ごとに 1 つのエントリがあり、充足しているかどうかが示されます。ピアが実際にインストールされており、そのインストール済みバージョンが必須範囲に収まっている場合にのみ、エッジは充足しています。
  • 競合 — 充足していないエッジです。ピアがまったくインストールされていない場合は missing、インストールされているものの範囲外の場合は version として分類されます。また、app requires peer react (^18.0.0) but 17.0.2 is installed のような 1 行の詳細が示されます。
  • 解決策 — 競合しているピアごとに 1 つのエントリがあり、競合の原因となる要件、各範囲を満たす最低バージョン、変更を最小限に抑える提案が示されます。ピアが存在しない場合はインストールし、存在する場合はバージョンを変更します。提案は常に列挙されたすべての範囲に照らして説明されるため、そのピアを必要とするすべてのパッケージに一度に対応できます。

バージョンは MAJOR.MINOR.PATCH 形式で、それ以外は認められません。範囲はツールが定義する文法に従います。* はすべてのバージョンを許可し、完全一致のバージョンはそのバージョンのみを許可します。^x.y.z は、基準バージョンから次の破壊的変更境界(ただし、その境界は含みません)までを許可します。通常の 0.x 系の制約も適用されるため、^0.2.3 は 0.3.0 より前まで、^0.0.3 は 0.0.3 のみを許可します。~x.y.z は同じマイナーバージョン内のパッチレベルの変更を許可し、>=x.y.z は基準バージョン以上を許可します。この文法に含まれないものはすべて検証エラーです。また、パッケージ名の欠落や重複、不正な形式のバージョン、同じピアを重複して列挙するパッケージ、自身をピアとして宣言するパッケージもエラーになります。エラーには問題のあるパスが示され(例:packages[0].peers[1].range is not a supported range: "=>1.0.0")、部分的な説明は生成されません。単にツリーに存在しないピアはエラーではなく、missing の競合として扱われます。処理は純粋かつローカルで行われ、ネットワークや設定は使用せず、渡された入力以外のファイルも読み込みません。

CLI

npx @reneturcios/peerconflict explain --input args.json
npx @reneturcios/peerconflict --version

args.json には、引数オブジェクト全体を格納します。

{
  "packages": [
    { "name": "react", "version": "17.0.2" },
    {
      "name": "app",
      "version": "1.0.0",
      "peers": [{ "name": "react", "range": "^18.0.0" }]
    }
  ]
}

各パッケージの peers は、デフォルトで [] です。説明は JSON として出力されます。

{
  "ok": false,
  "conflicts": [
    {
      "from": "app",
      "peer": "react",
      "range": "^18.0.0",
      "installed": "17.0.2",
      "type": "version",
      "detail": "app requires peer react (^18.0.0) but 17.0.2 is installed"
    }
  ],
  "edges": [
    { "from": "app", "to": "react", "range": "^18.0.0", "satisfied": false }
  ],
  "resolutions": [
    {
      "peer": "react",
      "installed": "17.0.2",
      "required_by": [{ "from": "app", "range": "^18.0.0", "lowest": "18.0.0" }],
      "suggestion": "change react from 17.0.2 to a version satisfying every listed range"
    }
  ]
}

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

MCP server

npx -y @reneturcios/peerconflict mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "peerconflict": {
      "command": "npx",
      "args": ["-y", "@reneturcios/peerconflict", "mcp"]
    }
  }
}
Tools
  • explain_peer_conflict — インストール済みツリーにおけるピア依存関係の競合を説明します。
    • packages(配列、必須、1 件以上)— {name, version, peers?} オブジェクトとしてのパッケージです。name はセット内で一意で、version はインストール済みの MAJOR.MINOR.PATCH 形式のバージョンです。各 peers エントリは {name, range} 要件です。

{ok, conflicts, edges, resolutions} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/peerconflict
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/peerconflict explain --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 つのサーバーを複数のクライアントで再利用できます。