Dataset Diff & Change Detector について
Dataset Diff & Change Detectorは、2つのJSON行データのスナップショットを比較するリモートMCPサーバーです。指定したキー項目でレコードを照合し、追加・削除・変更を項目ごとに特定して、比較結果と入力データの警告をまとめます。
主な機能
- 011つ以上のキー項目で行を照合
- 02指定項目または全項目を比較
- 03追加、削除、変更された行の一覧
- 04指定に応じて未変更行も含める
- 05重複キーと欠落項目の報告
活用シーン
- 01商品価格と在庫の変化を追跡
- 02連続するCRMエクスポートを比較
- 03データフィードのスナップショット間の変化を確認
- 04照合したレコードで変更された項目を確認
MCP 対応
リモートURL経由で、MCPクライアントにlist_capabilitiesとdiff_rowsを提供します。クライアントはoldRowsとnewRowsを送り、差分と概要を受け取ります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://dataset-diff-detector.nerolabs.workers.dev/mcpclaude mcp add --transport http nero-engine-dataset-diff-detector https://dataset-diff-detector.nerolabs.workers.dev/mcp{"mcpServers":{"nero-engine-dataset-diff-detector":{"type":"http","url":"https://dataset-diff-detector.nerolabs.workers.dev/mcp"}}}Cursor で開く{"servers":{"nero-engine-dataset-diff-detector":{"type":"http","url":"https://dataset-diff-detector.nerolabs.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"nero-engine-dataset-diff-detector":{"type":"http","url":"https://dataset-diff-detector.nerolabs.workers.dev/mcp"}}}{"mcpServers":{"nero-engine-dataset-diff-detector":{"serverUrl":"https://dataset-diff-detector.nerolabs.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2このツールにパラメーターはありません。
詳細
データセット差分&変更検出(リモート MCP サーバー)
同じ JSON 行リストの 2 つのバージョンを比較し、変更点を正確に取得できます。 昨日の価格リストと今日の価格リスト、先週の商品フィードと今週の商品フィード、同じ CRM からの 2 つのエクスポートを渡し、行を識別するフィールドを指定すると、どの行が追加、削除、変更されたか、それぞれの行でどのフィールドが変わったかまでわかります。
AI エージェント向けに構築されています。インストールも API キーも登録も不要です。URL で接続して呼び出すだけです。
https://dataset-diff-detector.nerolabs.workers.dev/mcp
早期アクセス期間中は無料で利用できます。
できること
1 回の呼び出しで、変更前のスナップショット(oldRows)と変更後のスナップショット(newRows)を比較します。
sku、id、emailなどのkeyFields(1 つまたは複数のフィールド)に基づいて、両側の行を照合します。キーがない場合は、行全体の内容で照合するため、編集された行は削除された行 1 件と追加された行 1 件として表示されます。- 照合された各ペアのすべてのフィールドを比較します。常に異なるタイムスタンプなどの
ignoreFieldsは除外されます。または、指定したcompareFieldsのみを比較します。 - 差分ごとに、
status、key、oldValues、newValues、changedFieldsを含む 1 行を返し、追加、削除、変更、変更なしの行数を集計したサマリーも返します。includeUnchangedを有効にすると、変更のない行も返されます。
比較は厳密に行われるため、見落としはありません。テキストの "24.99" と数値の 24.99 は変更として扱われます。同様に、"Blue" と "blue "、値への null からの変更も変更として扱われます。ネストされたオブジェクトは、キーの順序にかかわらず値で比較されます。
扱いにくい入力についても、状況を正直に伝えます。サマリーでは、片側に同じキー値が重複している場合(最後の行を保持し、その件数を報告します)、キー フィールドがない行がある場合、指定したフィールドがどの行にも存在しない場合(通常は入力ミスです)に警告します。
ツール
| ツール | 説明 |
|---|---|
list_capabilities | 照合と比較の正確なルール、出力形式、行数上限を一覧表示します。データは処理しません。 |
diff_rows | oldRows と newRows を比較し、差分とサマリーを返します。 |
接続
Claude Code
claude mcp add --transport http dataset-diff-detector https://dataset-diff-detector.nerolabs.workers.dev/mcp
Claude Desktop / claude.ai: 設定、コネクター、カスタムコネクターを追加の順に選択し、上記の URL を貼り付けます。
Cursor、Windsurf、VS Code、その他の MCP クライアント
{
"mcpServers": {
"dataset-diff-detector": {
"url": "https://dataset-diff-detector.nerolabs.workers.dev/mcp"
}
}
}
例
昨日と今日の価格リストを入力し、スクレイピングのタイムスタンプは無視します。
{
"oldRows": [
{"sku": "A100", "title": "Blue Widget", "price": 19.99, "stock": 42, "scrapedAt": "2026-09-11T08:00:00Z"},
{"sku": "A101", "title": "Red Widget", "price": "24.99", "stock": 0, "scrapedAt": "2026-09-11T08:00:00Z"},
{"sku": "A102", "title": "Green Widget", "price": 15.5, "stock": 8, "scrapedAt": "2026-09-11T08:00:00Z"},
{"sku": "A104", "title": "Purple Widget", "price": 9.99, "discount": null, "scrapedAt": "2026-09-11T08:00:00Z"},
{"sku": "A105", "title": "Orange Widget", "price": 30, "stock": 3, "scrapedAt": "2026-09-11T08:00:00Z"}
],
"newRows": [
{"sku": "A100", "title": "Blue Widget", "price": 17.99, "stock": 30, "scrapedAt": "2026-09-12T08:00:00Z"},
{"sku": "A101", "title": "Red Widget", "price": 24.99, "stock": 0, "scrapedAt": "2026-09-12T08:00:00Z"},
{"sku": "A102", "title": "Green Widget", "price": 15.5, "stock": 8, "scrapedAt": "2026-09-12T08:00:00Z"},
{"sku": "A104", "title": "Purple Widget", "price": 9.99, "discount": 0.1, "scrapedAt": "2026-09-12T08:00:00Z"},
{"sku": "A106", "title": "Yellow Widget", "price": 12, "stock": 100, "scrapedAt": "2026-09-12T08:00:00Z"}
],
"keyFields": ["sku"],
"ignoreFields": ["scrapedAt"]
}
5 件の差分が出力されます。A105 は削除され、A106 は追加されました。A100 は価格と在庫が変更され、A101 の価格はテキストから数値になり、A104 には割引が追加されました。A102 は完全に一致し、変更なしとしてカウントされます。
{
"rows": [
{"status":"removed","key":{"sku":"A105"},"oldValues":{"sku":"A105","title":"Orange Widget","price":30,"stock":3,"scrapedAt":"2026-09-11T08:00:00Z"}},
{"status":"changed","key":{"sku":"A100"},"oldValues":{"sku":"A100","title":"Blue Widget","price":19.99,"stock":42,"scrapedAt":"2026-09-11T08:00:00Z"},"newValues":{"sku":"A100","title":"Blue Widget","price":17.99,"stock":30,"scrapedAt":"2026-09-12T08:00:00Z"},"changedFields":["price","stock"]},
{"status":"changed","key":{"sku":"A101"},"oldValues":{"sku":"A101","title":"Red Widget","price":"24.99","stock":0,"scrapedAt":"2026-09-11T08:00:00Z"},"newValues":{"sku":"A101","title":"Red Widget","price":24.99,"stock":0,"scrapedAt":"2026-09-12T08:00:00Z"},"changedFields":["price"]},
{"status":"changed","key":{"sku":"A104"},"oldValues":{"sku":"A104","title":"Purple Widget","price":9.99,"discount":null,"scrapedAt":"2026-09-11T08:00:00Z"},"newValues":{"sku":"A104","title":"Purple Widget","price":9.99,"discount":0.1,"scrapedAt":"2026-09-12T08:00:00Z"},"changedFields":["discount"]},
{"status":"added","key":{"sku":"A106"},"newValues":{"sku":"A106","title":"Yellow Widget","price":12,"stock":100,"scrapedAt":"2026-09-12T08:00:00Z"}}
],
"summary": {
"oldRecordCount": 5,
"newRecordCount": 5,
"counts": {"added": 1, "removed": 1, "changed": 3, "unchanged": 1},
"differenceCount": 5,
"returnedRowCount": 5,
"unchangedRowsIncluded": false,
"keyFieldsUsed": ["sku"],
"ignoreFields": ["scrapedAt"],
"duplicateRowsSkipped": {"old": 0, "new": 0},
"rowsMissingKeyFields": {"old": 0, "new": 0},
"warnings": []
}
}
削除された行が最初に並び、次に oldRows の順で変更された行、最後に newRows の順で追加された行が並びます。
制限
oldRows と newRows を合わせて、1 回の呼び出しにつき最大 500 行です。リストがこれより大きい場合は、複数回の呼び出しに分割し、各呼び出しの両側で同じキー範囲を使用してください(たとえば、1 回目は SKU が A から M、次は N から Z)。そうしないと、ある呼び出しの行が削除されたものとして表示され、別の呼び出しでその一致する行が追加されたものとして表示されます。上限を超えた場合は、何も通知せず失敗するのではなく、明確なメッセージを返します。
プライバシー
行データはメモリ上で処理され、保存されることはありません。使用されたツールを確認できるよう、各呼び出しについて、ツール名、行数、成功したかどうか、アプリが報告するクライアント名、国、一方向ハッシュ化された呼び出し元 ID が記録されます。データ、引数、IP アドレスがこのログに保存されることはありません。
こちらも利用できます
同じエンジンは Apify Store の データセット差分&変更検出 としても動作します。こちらでは、「前回の実行以降」のスナップショットモード(比較対象の名前を指定すると、毎回の実行で前回からの変更点のみを報告するため、変更前のデータを再度渡す必要はありません)が追加され、Apify データセット、CSV、Excel、JSON ファイル、Google Sheets をどちら側からも読み込めます。1 回の実行で最大 100,000 行を比較し、CSV または Excel の差分レポートをエクスポートし、名前を付けたデータセットに変更ログを蓄積し、各結果を Webhook に送信します。
Nero Labs が開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。