Dataset Cleaner & Exporter

io.github.Nero-Engine由 GitHub 账号 Nero-Engine 发布v0.1.0更新于 Oct 25, 2026

Dedupe, flatten and clean messy JSON rows (emails, phones, URLs, HTML) in one call, as JSON or CSV.

已验证Streamable HTTP可网页运行文件与存储数据与分析

概览

AI 生成的概览

一个远程 MCP 服务器,一次调用即可对杂乱 JSON 行去重、展平并清洗,输出可直接用于表格的 JSON 或 CSV。

可以做什么
在处理任何数据前查看确切的清洗规则、去重模式、保留策略、步骤顺序和行数上限,且不处理数据。
适用场景
当助手拿到来自爬虫、CRM 导出或 API 的一小批杂乱数据行,需要在保存或分析前去重、展平并规范化时使用。适合每次调用最多 150 行的快速、确定性清洗,而非大规模数据集或基于文件的导入。
运行要求
通过 URL 连接的远程 MCP 端点;未声明需要安装、API 密钥或注册。数据行以 JSON 内联传入,需要能访问该托管端点的网络。
安装前请注意
数据行会发送到第三方托管服务;README 称数据仅在内存中处理且不存储,但每次调用会记录工具名、行数、是否成功、客户端名称、国家及哈希化的调用方 ID。清洗会改写邮箱、电话和网址等值,使用前请核对输出。仅在早期访问期间免费。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Dataset Cleaner & Exporter,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.Nero-Engine%2Fdataset-cleaner-exporter/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "dataset-cleaner-exporter": {
      "type": "http",
      "url": "https://dataset-cleaner-exporter.nerolabs.workers.dev/mcp"
    }
  }
}

README

Dataset Cleaner & Exporter (Remote MCP Server)

Deduplicate, flatten and clean messy JSON rows in a single tool call. Hand it a list of rows from a scraper, a CRM export or an API, and it hands back clean, spreadsheet-ready rows (or CSV text) plus an exact account of what was merged and why.

Built for AI agents. No install, no API key, no signup. Connect by URL and call it.

https://dataset-cleaner-exporter.nerolabs.workers.dev/mcp

Free to use while in early access.

What it does

One call runs a fixed pipeline, in this order:

  1. Expand (optional) one array field, such as offers or variants, into one row per entry, repeating the other fields.
  2. Flatten nested objects into columns: address.city becomes address_city. Arrays stay as one JSON-text cell.
  3. Clean every value: trim text, lowercase valid emails, reduce phone numbers to digits (keeping a leading +), lowercase URL hosts and drop the trailing slash, and optionally strip HTML and turn "42" and "true" into real numbers and booleans. Blank text becomes null.
  4. Keep, remove or rename columns.
  5. Deduplicate on the fields you name, or the whole row: exact, normalized (ignores case and whitespace, the default) or fuzzy (near-duplicates). The most complete row survives.

Deterministic, no AI in the loop, nothing guessed. A value it cannot confidently read, such as "not-an-email" in an email column, is left exactly as it was. The summary tells you how many rows came in, how many duplicates were removed, how many rows went out, how full every column is, and warns you when something needs a look, for example rows with an empty dedup key, which are kept as they are rather than merged with each other.

Tools

ToolWhat it does
list_capabilitiesLists the exact cleaning rules, dedup modes, keep strategies, step order and limits. Processes no data.
clean_rowsRuns the pipeline on the rows you pass and returns the clean rows (or CSV text) plus a summary.

Connect

Claude Code

bash
claude mcp add --transport http dataset-cleaner-exporter https://dataset-cleaner-exporter.nerolabs.workers.dev/mcp

Claude Desktop / claude.ai: Settings, Connectors, Add custom connector, paste the URL above.

Cursor, Windsurf, VS Code and other MCP clients

json
{  "mcpServers": {    "dataset-cleaner-exporter": {      "url": "https://dataset-cleaner-exporter.nerolabs.workers.dev/mcp"    }  }}

Example

Five messy lead rows go in, two of them duplicates with different casing and whitespace:

json
{  "rows": [    {"company": "  Acme Corp  ", "email": "[email protected]", "phone": "+1 (555) 123-4567", "website": "HTTPS://Acme.com/", "address": {"city": "Austin", "state": "TX"}},    {"company": "Acme Corp", "email": "[email protected] ", "phone": "555.123.4567", "website": "https://acme.com", "address": {"city": "Austin", "state": ""}},    {"company": "Globex Inc", "email": " [email protected]", "phone": "+1 555 987 6543", "website": "https://globex.io/", "address": {"city": "Denver", "state": "CO"}, "notes": "<b>Hot</b> lead &amp; ready"},    {"company": "globex inc", "email": "[email protected]", "phone": "", "website": "", "address": {"city": "Denver", "state": "CO"}},    {"company": "Initech", "email": "[email protected]", "phone": "(555) 010-0199", "website": "http://www.INITECH.com/about/", "address": {"city": "Dallas", "state": "TX"}}  ],  "dedupKeys": ["email"],  "stripHtml": true}

Three clean rows come out. Each duplicate pair kept its more complete row:

json
{  "rows": [    {"company": "Acme Corp", "email": "[email protected]", "phone": "+15551234567", "website": "https://acme.com", "address_city": "Austin", "address_state": "TX"},    {"company": "Globex Inc", "email": "[email protected]", "phone": "+15559876543", "website": "https://globex.io", "address_city": "Denver", "address_state": "CO", "notes": "Hot lead & ready"},    {"company": "Initech", "email": "[email protected]", "phone": "5550100199", "website": "http://www.initech.com/about", "address_city": "Dallas", "address_state": "TX"}  ],  "summary": {    "inputRowCount": 5,    "rowsAddedByExpansion": 0,    "duplicatesRemoved": 2,    "droppedByMaxItems": 0,    "outputRowCount": 3,    "dedupModeUsed": "normalized",    "columns": ["company", "email", "phone", "website", "address_city", "address_state", "notes"],    "fillRates": {"company": 1, "email": 1, "phone": 1, "website": 1, "address_city": 1, "address_state": 1, "notes": 0.333},    "warnings": []  }}

Add "outputFormat": "csv" to get the same result back as CSV text, ready to save as a file.

Limits

  • Up to 150 rows per call, counted after any array expansion. For bigger lists, split them across several calls. Anything larger returns a clear message rather than failing silently.
  • Fuzzy deduplication compares every pair of rows, so it runs on up to 100 rows with at most 1,000 characters of key text in total. Name a short field in dedupKeys, such as a company name. Beyond that it falls back to normalized matching and says so in the warnings.
  • Rows are passed inline as JSON. Output is JSON rows or CSV text; there is no Excel file.

Privacy

Your rows are processed in memory and never stored. To see which tools get used, each call records the tool name, row counts, whether it succeeded, the client name your app reports, the country and a one-way hashed caller ID. Your data, your arguments and your IP address are never kept in that log.

Also available

The same engine runs on the Apify Store as Dataset Cleaner & Exporter, which also reads Apify datasets, CSV, Excel and JSON files by URL and Google Sheets, handles up to 100,000 records per run, exports real downloadable CSV and Excel files, appends to a named dataset that accumulates across scheduled runs, and pushes the result to a webhook when a run finishes.

Built by Nero Labs.

来源:README.md,提交 91cfd85

工具

2

list_capabilities

Returns the exact cleaning rules (how emails, phone numbers and URLs are detected and normalized), the dedup modes and keep strategies, the order the steps run in, and the maximum rows per call. Call this first if you are unsure how a field will be treated. Free, processes no data.

无需输入参数。

clean_rows

Deduplicates, flattens and cleans a list of JSON rows in one call and returns spreadsheet-ready rows (or CSV text) plus a summary with exact counts: rows in, rows added by expansion, duplicates removed, rows dropped by maxItems, rows out, the final column list, per-column fill rates and warnings. Steps, in order: optionally explode one array field into one row per entry; flatten nested objects into columns (address.city becomes address_city); trim text; lowercase valid emails; reduce phone numbers to digits with any leading +; lowercase URL hosts and drop the trailing slash; optionally strip HTML and turn numeric or true/false text into numbers and booleans; blank text becomes null; keep, remove or rename columns; then remove duplicates (normalized by default, comparing the whole row unless dedupKeys is set) keeping the most complete row. Deterministic, no AI, nothing guessed. Use it on scraped leads, CRM exports or API results before loading them anywhere. There is a row limit per call (see list_capabilities); split bigger lists across several calls.

输入参数rows必填flattenmaxItemsdedupKeysdedupModestripHtmlcleanFieldscoerceTypesemptyToNullkeepStrategyoutputFormatcolumnsToKeep另有 6 个

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。