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 分

    請在儲存庫或註冊中心條目中宣告授權條款。