MCP 서버

Dataset Aggregate & Pivot

io.github.Nero-Engine/dataset-aggregate-pivot
데이터 및 분석 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Aggregates JSON rows using grouping, pivot tables, date buckets, totals, and top-N calculations.

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.
입력 스키마
{'type': 'object', 'required': ['rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object'}, 'description': 'The records to aggregate, up to 500. Each row is a JSON object; keys may differ between rows.'}, 'topN': {'type': 'integer', 'minimum': 1, 'description': 'After sorting, keep only the first N groups. The totals row still covers every input row.'}, 'sortBy': {'type': 'string', 'description': 'An output column to sort by: a group field, an aggregation alias such as "total_amount", or a pivot column. Omitted sorts by the group fields.'}, 'pivotField': {'type': 'string', 'description': 'Turns this field\'s distinct values into columns, pivot-table style: group by "region" and pivot on "product" for one row per region with a column per product. Must not also be a group-by field. At most 50 distinct values.'}, 'aggregations': {'type': 'array', 'items': {'type': 'object', 'required': ['function'], 'properties': {'alias': {'type': 'string', 'description': 'Output column name.'}, 'field': {'type': 'string', 'description': 'The field to aggregate. Optional for count, which then counts rows.'}, 'function': {'enum': ['count', 'countDistinct', 'sum', 'avg', 'min', 'max', 'median', 'first', 'last', 'list', 'listDistinct'], 'type': 'string'}}}, 'description': 'What to compute per group, for example [{"function":"count","alias":"orders"}, {"field":"amount","function":"sum","alias":"total_amount"}]. Every function except count needs a field. alias is the output column name (defaults to function_field, or "count"). Omitted gives a plain row count per group. Up to 20.'}, 'groupByFields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'One output row per distinct combination of these field values, like SQL GROUP BY, for example ["region"] or ["city", "category"]. Dot paths like "address.city" work. Empty or omitted aggregates every row into a single row.'}, 'groupMatching': {'enum': ['normalized', 'exact'], 'type': 'string', 'description': 'normalized (default) ignores letter case and extra whitespace when grouping, so "South" and "south " are one group. exact requires identical values.'}, 'pivotFunction': {'enum': ['count', 'countDistinct', 'sum', 'avg', 'min', 'max', 'median', 'first', 'last', 'list', 'listDistinct'], 'type': 'string', 'description': 'How pivot cell values are combined. Defaults to sum when pivotValueField is set; ignored (row count) without one.'}, 'sortDirection': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'asc (default) or desc. Use desc with topN for "top N by" questions.'}, 'lenientNumbers': {'type': 'boolean', 'description': 'On by default: "$1,234.50", "49 USD", "12%" and "(300)" count as numbers for sum, avg, min, max and median. Set false to accept only real numbers and plain numeric strings.'}, 'dateBucketField': {'type': 'string', 'description': 'A date or timestamp field to group by time period, for example "orderedAt". Adds a group column named like "orderedAt_month". Unreadable dates land in an "(invalid date)" group.'}, 'pivotValueField': {'type': 'string', 'description': 'The field whose values fill the pivot cells, for example "amount". Omitted fills each cell with a row count.'}, 'includeTotalsRow': {'type': 'boolean', 'description': 'Appends a grand-total row labelled "(total)" and adds a _rowType column ("group" or "total").'}, 'dateBucketGranularity': {'enum': ['day', 'week', 'month', 'quarter', 'year'], 'type': 'string', 'description': 'Bucket size for dateBucketField: day (2026-08-19), week (2026-W34), month (2026-08, default), quarter (2026-Q3) or year.'}}, 'additionalProperties': False}
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.
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
추가됨
aggregate_rows
2026년 9월 17일 12:45 PM
추가됨
list_capabilities
2026년 9월 17일 12:45 PM