关于 Dataset Diff & Change Detector
Dataset Diff & Change Detector 是用于比较两份 JSON 行数据快照的远程 MCP 服务。它按指定键字段匹配记录,逐字段识别新增、删除和变更,并汇总比较结果及输入警告。
主要功能
- 01按一个或多个键字段匹配行
- 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 行的两个版本,准确获取所有变更。 将昨天和今天的价格列表、上周和本周的商品数据源,或同一 CRM 的两份导出文件交给它,指定用于标识行的字段,它就会告诉你哪些行被添加、移除或更改,并列出每行具体变更的字段。
专为 AI Agent 打造。无需安装、API 密钥或注册。通过 URL 连接并调用即可。
https://dataset-diff-detector.nerolabs.workers.dev/mcp
早期访问期间可免费使用。
功能
一次调用即可比较变更前的快照(oldRows)和变更后的快照(newRows):
- 匹配两边的行,根据
keyFields匹配,例如sku、id或email(一个或多个字段)。如果没有键,则根据完整行内容进行匹配,因此编辑过的行会显示为一行被移除,另有一行被添加。 - 比较每对匹配行中的所有字段,排除任何
ignoreFields(总是不同的时间戳),或仅比较你指定的compareFields。 - 返回每项差异对应的一行,包含其
status、key、oldValues、newValues和changedFields,并提供统计新增、移除、更改和未更改行数的摘要。启用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:**依次打开 Settings、Connectors、Add custom connector,然后粘贴上方的 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"]
}
结果包含五项差异。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 中的顺序列出已添加的行。
限制
每次调用最多 500 行,oldRows 和 newRows 的行数合计计算。对于更大的列表,请拆分成多次调用,并确保每次调用两侧使用相同的键范围(例如,一次处理 SKU A 到 M,下一次处理 N 到 Z),否则某次调用中的行会被视为已移除,而另一次调用中的匹配行会被视为已添加。超出限制时会返回明确的提示,而不会静默失败。
隐私
你的行数据仅在内存中处理,不会被存储。为查看使用了哪些工具,每次调用都会记录工具名称、行数、调用是否成功、应用报告的客户端名称、国家/地区以及单向哈希处理后的调用方 ID。你的数据、参数和 IP 地址绝不会保存在该日志中。
另有提供
同一引擎也在 Apify Store 上以 Dataset Diff & Change Detector 的形式提供,增加了“自上次运行以来”的快照模式(指定一次比较后,每次运行只报告自上次运行以来的变更,因此无需再次提供旧数据),支持读取两侧的 Apify 数据集、CSV、Excel 和 JSON 文件以及 Google Sheets,每次运行最多可比较 100,000 行,可导出 CSV 或 Excel 差异报告,在指定数据集中持续记录变更日志,并将每次结果发送到 webhook。
由 Nero Labs 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。