mcpField
D
Dataset Diff & Change Detector

Dataset Diff & Change Detector

远程服务
github.com数据与分析07 周前更新

关于 Dataset Diff & Change Detector

Dataset Diff & Change Detector 是用于比较两份 JSON 行数据快照的远程 MCP 服务。它按指定键字段匹配记录,逐字段识别新增、删除和变更,并汇总比较结果及输入警告。

主要功能

  1. 01按一个或多个键字段匹配行
  2. 02比较指定字段或所有字段
  3. 03列出新增、删除和变更的行
  4. 04按需包含未变更的行
  5. 05报告重复键和缺失字段

适用场景

  1. 01跟踪商品价格和库存变化
  2. 02比较连续的 CRM 导出数据
  3. 03检查不同数据源快照之间的变化
  4. 04查看匹配记录中哪些字段发生变化

MCP 相关

通过远程 URL 向 MCP 客户端提供 list_capabilities 和 diff_rows。客户端提交 oldRows 和 newRows,获取差异及摘要。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://dataset-diff-detector.nerolabs.workers.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

2

此工具无需参数。

详细介绍

数据集差异与变更检测器(远程 MCP 服务)

比较同一组 JSON 行的两个版本,准确获取所有变更。 将昨天和今天的价格列表、上周和本周的商品数据源,或同一 CRM 的两份导出文件交给它,指定用于标识行的字段,它就会告诉你哪些行被添加、移除或更改,并列出每行具体变更的字段。

专为 AI Agent 打造。无需安装、API 密钥或注册。通过 URL 连接并调用即可。

https://dataset-diff-detector.nerolabs.workers.dev/mcp

早期访问期间可免费使用。

功能

一次调用即可比较变更前的快照(oldRows)和变更后的快照(newRows):

  1. 匹配两边的行,根据 keyFields 匹配,例如 sku、id 或 email(一个或多个字段)。如果没有键,则根据完整行内容进行匹配,因此编辑过的行会显示为一行被移除,另有一行被添加。
  2. 比较每对匹配行中的所有字段,排除任何 ignoreFields(总是不同的时间戳),或仅比较你指定的 compareFields。
  3. 返回每项差异对应的一行,包含其 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 构建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。