mcpField
D
Dataset Join & Merge

Dataset Join & Merge

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

关于 Dataset Join & Merge

Dataset Join & Merge 是用于按共享键合并 JSON 行列表的远程 MCP 服务。它提供七种连接模式、可配置的键匹配与字段冲突处理,并汇总匹配和未匹配行。

主要功能

  1. 01七种连接类型,包括并集
  2. 02不区分大小写或精确匹配键
  3. 03支持不同名称及复合键
  4. 04选择要复制的右侧字段
  5. 05可配置重复键处理方式
  6. 06匹配状态与摘要报告

适用场景

  1. 01用账单记录补充潜在客户数据
  2. 02找出 CRM 中尚无记录的潜在客户
  3. 03合并键字段名称不同的列表

MCP 相关

通过远程 HTTP 端点向 MCP 客户端提供 `list_capabilities` 和 `join_rows`。客户端提交两个 JSON 行列表、键字段和连接模式,获取合并结果及匹配摘要。

配置

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

服务地址https://dataset-join-merge.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 行列表,类似 SQL 联接或电子表格中的 VLOOKUP。 提供一个主列表和一个查找列表,指定键并选择联接类型,即可获得合并后的列表,以及精确的统计结果,说明两侧各有多少行匹配,以及其余行未匹配的原因。

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

https://dataset-join-merge.nerolabs.workers.dev/mcp

抢先体验期间可免费使用。

功能介绍

  • 七种联接类型。 left 保留所有左侧行,并添加匹配的右侧字段(适用于 VLOOKUP 和数据补全场景,也是默认类型)。inner 仅保留重叠部分。right 保留所有右侧行。full 保留两侧的所有内容。leftAnti 返回右侧没有匹配项的左侧行(“这些潜在客户中,哪些还不在 CRM 里?”)。rightAnti 则相反。union 将两个列表堆叠在一起,无需键。
  • 按真实数据的样子匹配键。 默认情况下,键匹配不区分大小写,并忽略首尾空格和重复空格;123 也会匹配 "123"。因此,抓取器中的 " [email protected]" 可以匹配账单导出中的 "[email protected]"。如需严格匹配,可将 keyMatching 设为 exact。
  • 两侧的键名可以不同。 左侧使用 email,右侧使用 contact_email。也支持复合键:["firstName", "lastName"]。
  • 控制哪些内容会被带过来。 只复制指定的右侧字段,并选择两侧字段同名时的处理方式:保留两者(右侧字段改名为 right_status)、保留左侧值,或用右侧值覆盖。
  • 重复键的 SQL 或 VLOOKUP 行为。 multipleMatches: "all" 会为每一对匹配项返回一行;"first" 只使用第一个匹配的右侧行,因此每个左侧行只会出现一次。

工具会如实说明未能匹配的内容。每行都会带有 _joinStatus(matched、left_only、right_only)和 _matchCount 标记;摘要会报告匹配率,并对缺少键的行、右侧的重复键,以及完全没有出现在任何行中的键字段(通常是拼写错误)发出警告。

工具

工具功能
list_capabilities列出所有联接类型、匹配模式、冲突策略和重复键模式、每行新增的字段以及行数限制。不处理任何数据。
join_rows根据指定的键字段联接 leftRows 和 rightRows,并返回联接后的行和摘要。

连接

Claude Code

claude mcp add --transport http dataset-join-merge https://dataset-join-merge.nerolabs.workers.dev/mcp

Claude Desktop / claude.ai: 依次选择 Settings、Connectors、Add custom connector,然后粘贴上方的 URL。

Cursor、Windsurf、VS Code 及其他 MCP 客户端

{
  "mcpServers": {
    "dataset-join-merge": {
      "url": "https://dataset-join-merge.nerolabs.workers.dev/mcp"
    }
  }
}

示例

左侧有四条抓取到的潜在客户记录,右侧有三条账单记录。电子邮件地址的大小写和空格不同,且两侧的键名不同:

{
  "leftRows": [
    {"email": "[email protected] ", "name": "Ana Silva", "status": "lead"},
    {"email": "[email protected]", "name": "Ben Okafor", "status": "lead"},
    {"email": "[email protected]", "name": "Cara Lind", "status": "lead"},
    {"email": "[email protected]", "name": "Dev Patel", "status": "lead"}
  ],
  "rightRows": [
    {"contact_email": "[email protected]", "plan": "Pro", "mrr": 49, "status": "active"},
    {"contact_email": "[email protected]  ", "plan": "Starter", "mrr": 19, "status": "trial"},
    {"contact_email": "[email protected]", "plan": "Enterprise", "mrr": 499, "status": "active"}
  ],
  "leftKeyFields": ["email"],
  "rightKeyFields": ["contact_email"],
  "joinType": "left"
}

所有潜在客户都会出现在结果中,两位客户的记录会补充其套餐信息,且两个 status 字段都会保留:

{
  "rows": [
    {"email": "[email protected] ", "name": "Ana Silva", "status": "lead", "plan": "Pro", "mrr": 49, "right_status": "active", "_joinStatus": "matched", "_matchCount": 1},
    {"email": "[email protected]", "name": "Ben Okafor", "status": "lead", "plan": "Starter", "mrr": 19, "right_status": "trial", "_joinStatus": "matched", "_matchCount": 1},
    {"email": "[email protected]", "name": "Cara Lind", "status": "lead", "_joinStatus": "left_only", "_matchCount": 0},
    {"email": "[email protected]", "name": "Dev Patel", "status": "lead", "_joinStatus": "left_only", "_matchCount": 0}
  ],
  "summary": {
    "leftRecordCount": 4,
    "rightRecordCount": 3,
    "joinType": "left",
    "keyMatching": "normalized",
    "multipleMatches": "all",
    "leftKeyFields": ["email"],
    "rightKeyFields": ["contact_email"],
    "counts": {"matchedRows": 2, "passthroughRows": 2, "leftRowsMatched": 2, "rightRowsMatched": 2, "leftRowsUnmatched": 2, "rightRowsUnmatched": 1},
    "leftMatchRate": 0.5,
    "rightMatchRate": 0.667,
    "outputRowCount": 4,
    "warnings": []
  }
}

将 joinType 改为 leftAnti,同一次调用就只会返回 Cara 和 Dev,也就是没有账单记录的潜在客户。

限制

  • 每次调用最多 500 行,leftRows 和 rightRows 的总行数均计入限制。对于较大的列表,如果使用左联接、内联接或 leftAnti 联接,可将 leftRows 拆分为多次调用,并在每次调用中发送相同的 rightRows。
  • 每次调用最多 500 条输出行。只有多对多联接(两侧都包含重复键,且 multipleMatches 设为 all)才可能产生比输入更多的行。如果输出超出限制,调用会被拒绝,并告知预测的行数和可调整的选项,不会截断结果:multipleMatches: "first" 始终不会超出限制。

超出任何限制时,都会返回清晰的提示,而不会静默失败。

隐私

你的行数据只会在内存中处理,绝不会存储。为了了解使用了哪些工具,每次调用都会记录工具名称、行数、调用是否成功、应用报告的客户端名称、国家/地区,以及调用者 ID 的单向哈希值。你的数据、调用参数和 IP 地址绝不会保存在该日志中。

另外也可使用

同一引擎也在 Apify Store 上以 Dataset Join & Merge 的形式提供。它同样可以读取 Apify 数据集、CSV、Excel 和 JSON 文件,以及通过 URL 访问的 Google Sheets,并支持两侧各最多 100,000 行;可将结果导出为 CSV 或 Excel,追加到一个在多次运行中逐渐累积数据的命名数据集中,也可以通过 POST 将结果发送到 Webhook。

由 Nero Labs 构建。

评论

支持 Markdown

第一次接触 MCP?

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

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