Dataset Aggregate & Pivot

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

GROUP BY and pivot tables for JSON rows: 11 functions, date buckets, top N, totals, messy numbers.

发布方自己的服务:Aggregate

已验证Streamable HTTP可网页运行数据库数据与分析

概览

AI 生成的概览

一个远程 MCP 服务器,对 JSON 行数据执行类似 SQL GROUP BY 或电子表格透视表的分组、聚合与透视,每组返回一行汇总结果。

可以做什么
在一次调用中对 JSON 行进行分组、聚合、透视、排序和总计,支持按日、周、月、季度或年做日期分桶,以及 top N 和总计行。列出 11 种聚合函数、日期分桶格式、空白与无效日期标签,以及每次调用的限制。识别货币字符串、大小写不一致等杂乱数值,并报告被跳过的非数值和拼错的字段,而不是自行猜测。
适用场景
当助手拿到来自爬虫、API 或电子表格的一批行数据,需要快速得到分组汇总、透视表或 top N 结果,而不想写代码或建数据库时适用。
运行要求
远程 streamable HTTP 端点;无需安装、API 密钥或注册。行数据以 JSON 内联传入,每次调用上限为 500 行、50 个透视列、5,000 个透视单元格和 20 个聚合。
安装前请注意
行数据会发送到第三方托管服务。README 称数据仅在内存中处理且不存储,但每次调用会记录工具名、行数、是否成功、客户端名称、国家及哈希后的调用方 ID。避免发送敏感数据;中位数和去重计数无法跨批次合并。

安装

在 SourceWeft 中

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

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

交给智能体安装

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

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

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

其他 MCP 客户端

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

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

README

Dataset Aggregate & Pivot (Remote MCP Server)

SQL GROUP BY and spreadsheet pivot tables for messy JSON rows, in a single tool call. Hand it a list of rows from a scraper, an API or a spreadsheet, say what to group by and what to compute, and it hands back one clean summary row per group plus an exact account of anything it skipped.

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

https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp

Free to use while in early access.

What it does

One call runs the whole summary, in this order:

  1. Group the rows by one or several fields (dot paths like address.city work), or leave the group fields empty to summarise every row into one. Add a date bucket to group a date or timestamp by day, ISO week, month, quarter or year (orderedAt becomes orderedAt_month = 2026-08).
  2. Aggregate each group with any of 11 functions: count, countDistinct, sum, avg, min, max, median, first, last, list and listDistinct, each with its own output column name.
  3. Pivot one field's distinct values into columns: group by region, pivot on product, fill the cells with the sum of amount, and get one row per region with a column per product, zero-filled where a combination has no rows.
  4. Sort by any output column, keep the top N groups, and add a grand-total row that still covers every input row.

Messy data is the normal case. South, south and SOUTH land in one group with one label. "$1,234.50", "49 USD", "1.234,50" and "(300)" are read as numbers. Values that genuinely are not numbers, like "n/a", are never guessed at: they are left out and counted in the summary, and a misspelled field name comes back as a warning instead of a silently empty result.

Tools

ToolWhat it does
list_capabilitiesLists the 11 aggregation functions, the date bucket formats, the labels used for blank, invalid-date and total rows, and the limits per call. Processes no data.
aggregate_rowsGroups, aggregates, pivots, sorts and totals the rows you pass, and returns the summary rows plus a report of groups found, groups dropped by top N, skipped values and warnings.

Connect

Claude Code

bash
claude mcp add --transport http dataset-aggregate-pivot https://dataset-aggregate-pivot.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-aggregate-pivot": {      "url": "https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp"    }  }}

Example

Eight messy order rows go in, with orders per region and each product's revenue pivoted into its own column:

json
{  "rows": [    {"orderId": 1001, "region": "North", "product": "Widget", "amount": "$1,200.00", "orderedAt": "2026-07-03"},    {"orderId": 1002, "region": "North", "product": "Gadget", "amount": 350, "orderedAt": "2026-07-18"},    {"orderId": 1003, "region": "South", "product": "Widget", "amount": "890.50", "orderedAt": "2026-07-22"},    {"orderId": 1004, "region": "south", "product": "Gizmo", "amount": 120, "orderedAt": "2026-08-02"},    {"orderId": 1005, "region": "East", "product": "Widget", "amount": 2400, "orderedAt": "2026-08-05"},    {"orderId": 1006, "region": "East", "product": "Gadget", "amount": "n/a", "orderedAt": "2026-08-09"},    {"orderId": 1007, "region": "North", "product": "Gizmo", "amount": 75, "orderedAt": "2026-08-11"},    {"orderId": 1008, "region": "", "product": "Widget", "amount": 410, "orderedAt": "2026-08-14"}  ],  "groupByFields": ["region"],  "aggregations": [{"function": "count", "alias": "orders"}],  "pivotField": "product",  "pivotValueField": "amount",  "pivotFunction": "sum"}

Four summary rows come out. South and south became one group, "$1,200.00" summed as 1200, the row with no region is kept visibly as (blank), and the "n/a" amount was skipped and reported rather than treated as a number:

json
{  "rows": [    {"region": "(blank)", "orders": 1, "Gadget": 0, "Gizmo": 0, "Widget": 410},    {"region": "East", "orders": 2, "Gadget": 0, "Gizmo": 0, "Widget": 2400},    {"region": "North", "orders": 3, "Gadget": 350, "Gizmo": 75, "Widget": 1200},    {"region": "South", "orders": 2, "Gadget": 0, "Gizmo": 120, "Widget": 890.5}  ],  "summary": {    "inputRowCount": 8,    "groupCount": 4,    "outputRowCount": 4,    "pivot": {"field": "product", "valueField": "amount", "function": "sum", "distinctValues": 3},    "columns": ["region", "orders", "Gadget", "Gizmo", "Widget"],    "skippedValues": {"pivot:Gadget": 1}  }}

Add "sortBy": "orders", "sortDirection": "desc", "topN": 10, "includeTotalsRow": true to the same call for a top 10 with a grand total, or "dateBucketField": "orderedAt" for one row per region per month.

Limits

  • Up to 500 rows per call. Anything larger returns a clear message rather than failing silently. Batches can be summarised separately for sum, count, min and max, and an average rebuilt as total sum divided by total count, but a median or a distinct count cannot be combined across batches.
  • Up to 50 pivot columns and 5,000 pivot cells (groups multiplied by pivot columns) per call, so a pivot on a near-unique field such as an ID is refused with advice instead of returning hundreds of columns.
  • Up to 20 aggregations per call.
  • Rows are passed inline as JSON.

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 Aggregate, Group By & Pivot, which also reads Apify datasets, CSV, TSV, Excel, JSON and JSON Lines files and Google Sheets by URL, handles up to 200,000 rows per run, exports the summary as a CSV or Excel file, appends it to a named dataset that accumulates across scheduled runs, and posts it to a webhook.

Built by Nero Labs.

来源:README.md,提交 3b22ee2

工具

2

list_capabilities

Returns the 11 aggregation functions and what each one does, the date bucket formats, the labels used for blank, invalid-date and total rows, and the limits per call (rows, pivot columns, pivot cells, aggregations). Call this first if you are unsure what is available. Free, processes no data.

无需输入参数。

aggregate_rows

SQL GROUP BY and a spreadsheet pivot table for a list of JSON rows, in one call. Returns one output row per group with the aggregated columns, plus a summary: groups found, groups dropped by topN, values skipped because they were blank or not numeric (never guessed), and warnings such as a misspelled field name. Use it to turn scraped or API records into totals: orders and revenue per region, average price per brand, listings per city per month, top 10 products by revenue. Messy data is expected: "South" and "south " group together, and "$1,234.50" sums as 1234.5. Leave groupByFields empty to summarise all rows into one row. At most 500 rows per call.

输入参数rows必填topNsortBypivotFieldaggregationsgroupByFieldsgroupMatchingpivotFunctionsortDirectionlenientNumbersdateBucketFieldpivotValueField另有 2 个

版本历史

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

评分

已满足适用检查项的 90%

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

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

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

其他 Aggregate 集成