Diff Anything について
Diff Anything MCPは、MCPクライアントからインストール済みのDiff Anything CLIを使い、ローカルのファイル、フォルダー、APIスキーマを比較します。設定したローカルディレクトリー内で差分を確認する開発者向けで、CLIのレポートを返します。
主な機能
- 01CLIの機能、バージョン、許可ルートの確認
- 02テキストとJSONファイルの比較
- 03フォルダー比較(Proが必要)
- 04API互換性チェック(Proが必要)
- 05比較対象を設定済みルートに制限
活用シーン
- 01ローカルファイルの版間差分の確認
- 02ディレクトリーツリー内の変更比較
- 03APIスキーマ変更による互換性破壊の評価
MCP 対応
stdio経由で、機能の検出、ファイル・フォルダー比較、API互換性チェックのツールをMCPクライアントに提供します。許可する絶対パスのディレクトリーを設定する必要があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @grunersoftware/diff-anything-mcpDIFF_ANYTHING_ROOTSJSON array of absolute existing directories this server may compare.DIFF_ANYTHING_CLIOptional absolute path to the installed Diff Anything executable.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Diff Anything MCP
MCP クライアントからインストール済みの Diff Anything コマンドラインを使用して、ローカルファイル、フォルダー、API スキーマを比較できます。オプションの npm パッケージは、クライアントの子プロセスとして stdio 経由で実行されます。
要件とセットアップ
- macOS または Windows 上の Node.js 22 以降。
- コマンドラインを備えた Diff Anything アプリがインストールされていること。製品ページからアプリをインストールしてください。Windows では、Microsoft Store 版が
diff-anything.exeアプリ実行エイリアスを通じてコマンドラインを提供します。Mac App Store 版はサンドボックス化されており、コマンドラインで指定されたファイルを読み取れません。そのため、無料のDiff Anything コマンドラインヘルパーをインストールしてください。ヘルパーは/usr/local/bin/diff-anythingにインストールされます。 - フォルダーと API スキーマの比較には Diff Anything Pro が必要です。CLI はアプリにローカルキャッシュされた利用資格を確認します。Pro を購入または復元するには、デスクトップアプリを開いてください。Free CLI では、1 日あたりの制限とファイルサイズの制限の範囲内で、プレーンテキストと JSON の比較が可能です。
check_api_compatibilityには、ヘルプに--fail-on breakingが含まれる CLI が必要です。検出時にインストール済みのバイナリを確認します。古いアプリでは、このツールに対してupdate_requiredが返されます。
MCP クライアントは npx を使ってサーバーを起動します。初回使用時に固定バージョンがダウンロードされるため、ほかにインストールするものはありません。Claude Code では、次のようにします。
claude mcp add diff-anything -e DIFF_ANYTHING_ROOTS='["/Users/you/Comparisons"]' -- npx -y @grunersoftware/[email protected]
JSON で設定するクライアントでは、サーバーエントリは次のとおりです。
{
"mcpServers": {
"diff-anything": {
"command": "npx",
"args": ["-y", "@grunersoftware/[email protected]"],
"env": { "DIFF_ANYTHING_ROOTS": "[\"/Users/you/Comparisons\"]" }
}
}
}
起動時に npm から取得せずに実行するには、固定バージョンをグローバルにインストールし、代わりに diff-anything-mcp コマンドを使用してください。
npm install --global @grunersoftware/[email protected]
クライアントのサーバー設定で DIFF_ANYTHING_ROOTS を、サーバーが比較できる既存の絶対パスのディレクトリを格納した JSON 配列に設定してください。この設定が完了するまでは、検出のみが動作します。まず、クライアントと共有する予定のファイルを含む専用ディレクトリを用意してください。
macOS での検出では、まず /usr/local/bin/diff-anything にあるコマンドラインヘルパーを確認し、次に /Applications/Diff Anything.app/Contents/MacOS/diff-anything、~/Applications 内の同じアプリバンドル、PATH 上の絶対パスのエントリを確認します。Mac App Store 版アプリは、アプリ自体の実行ファイルがファイルを読み取れないため、スキップされます。ヘルパーがない場合、ツールはヘルパーのダウンロードページとともに helper_required を返します。Windows での検出では、%LOCALAPPDATA%\Microsoft\WindowsApps\diff-anything.exe と PATH を確認します。Microsoft Store パッケージは、このアプリ実行エイリアスを宣言しています。無効になっている場合は、Windows の設定で有効にしてください。直接インストールした場合や別の場所にある場合は、DIFF_ANYTHING_CLI に実行ファイルの絶対パスを設定してください。この変数にシェルコマンドや引数を指定しないでください。
VS Code
ワークスペース設定の場合は、.vscode/mcp.json を作成します。
{
"servers": {
"diff-anything": {
"type": "stdio",
"command": "diff-anything-mcp",
"env": {
"DIFF_ANYTHING_ROOTS": "[\"/Users/you/Comparisons\"]"
}
}
}
}
クライアントがグローバルコマンドを見つけられない場合は、command に Node の絶対パスを指定し、args の唯一のエントリとしてインストール済みパッケージの src/index.mjs の絶対パスを指定してください。これにより、npm の .cmd シムを直接起動できない Windows クライアントにも対応できます。npm root --global でグローバルパッケージのディレクトリを確認できます。
mcpServers を使用するクライアント
プロジェクトの .mcp.json を受け付ける Claude Code などのクライアントでは、同じサーバーエントリを mcpServers の下に記述してください。次の Windows の例では、Node を直接起動します。
{
"mcpServers": {
"diff-anything": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["C:\\Users\\you\\AppData\\Roaming\\npm\\node_modules\\@grunersoftware\\diff-anything-mcp\\src\\index.mjs"],
"env": {
"DIFF_ANYTHING_ROOTS": "[\"C:\\\\Users\\\\you\\\\Comparisons\"]"
}
}
}
}
例のパスを実際のインストール先と比較対象のディレクトリに置き換えてください。クライアントでサーバーを再起動または再読み込みし、最初に discover_capabilities を呼び出してください。セットアップの参考情報:VS Code MCP の設定およびMCP SDK ホストのセットアップ。
ツール
| ツール | 入力 | 結果 |
|---|---|---|
discover_capabilities | {} | インストール済みの CLI バージョン、フラグのサポート状況、設定済みのルート、ラッパーの制限です。Pro の所有権は確認しません。 |
compare_files | 絶対パスの left と right | CLI が自動検出した比較レポートです。 |
compare_folders | 絶対パスのディレクトリ left と right | CLI のデフォルトのフォルダー比較レポートです(Pro)。 |
check_api_compatibility | 絶対パスのスキーマ left と right | --fail-on breaking による API 比較です(Pro と対応する CLI が必要です)。 |
入力例:
{"left":"/Users/you/Comparisons/before.json","right":"/Users/you/Comparisons/after.json"}
終了コード 1 は比較が完了した結果であり、サーバーの障害ではありません。ファイルおよびフォルダーの比較では countedDifferences が設定され、API チェックでは compatibilityCheckPassed が false になります。CLI のレポートと警告を確認してください。互換性チェックに失敗した場合、破壊的変更または分類不能な変更がある可能性があります。比較を行っても、バックアップが完全であることや、あらゆる点で API に互換性があることの証明にはなりません。
ラッパーは、値を書き換えたりマスキングを解除したりせずに CLI のレポートを返します。生の CLI フラグ、マスキングの無効化、Pro の上書き、マージ、一括マニフェスト、レポートファイルへの書き込みを指定するツール引数はありません。エラーは isError と、missing_app、helper_required、pro_required、update_required、outside_roots、timeout、output_limit などのコード、および可能な場合は CLI の説明を使用します。
ローカル処理と権限
Diff Anything は比較をローカルで実行し、データを AI モデルに送信しません。npm ラッパーはホスト型のランタイム、アカウント、API キー、HTTP リスナーを持たず、実行時にネットワーク接続も必要ありません。パッケージのインストールにはレジストリへのアクセスが必要です。インストール済みのパッケージを直接起動すれば、起動時の npm 取得を回避できます。
返されたツール出力の取り扱いは、MCP クライアントが制御します。 比較結果には、ファイル名、パス、ドキュメントの内容、変更された値が含まれる場合があります。クライアントはその出力をモデルプロバイダーに送信したり、保存したりする可能性があります。機密ファイルを比較する前に、クライアントのデータ取り扱いとツールの承認を設定してください。既存の CLI のマスキングは、万能なシークレットスキャナーではありません。
ツールは比較対象のファイルを変更しません。CLI は、ローカルの無料比較使用状況台帳を更新し、キャッシュされた Pro の利用資格情報を読み取る場合があります。サーバーは、プロセスの権限と環境を引き継ぎます。許可されたルートは、シンボリックリンクを含め、解決後の入力パスを検証します。フォルダー入力は比較前にスキャンされ、CLI がリンクをたどる可能性があるため、入れ子になったシンボリックリンク、ジャンクション、特殊ファイルは拒否されます。この検証には、ツリーごとに 100,000 件および 60 秒の上限があります。これらはアプリケーションレベルのガードであり、OS のサンドボックスでも、比較中に別のプロセスがファイルを変更することへの保護でもありません。ローカルで安定したディレクトリを使用してください。ネットワークマウントやクラウドのプレースホルダーは、OS を介して I/O を実行する場合があります。
各 CLI 呼び出しには 60 秒のタイムアウトと、stdout/stderr 合計 1 MiB の上限があります。上限を超えた出力は破棄され、プロセスは停止されます。不完全なレポートが完了したものとして提示されることはありません。一度に実行できるツールリクエストは 1 つです。重複するリクエストは busy を返します。クライアントがキャンセルすると、実行中の CLI 子プロセスが停止します。大規模な比較は、より小さなペアに分割してください。
開発
npm ci
npm test
npm pack
テストでは、フィクスチャ CLI を使用した実際の MCP stdio トランスポート、引数の検証、プラットフォーム検出パス、許可されたルート、シンボリックリンクによるルート外へのアクセスの拒否、Pro エラー、キャンセル、出力上限を確認します。プラットフォームごとのパッケージングと利用資格情報の動作をエンドツーエンドで検証するには、実際にインストールされたアプリが必要です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。