Dataset Aggregate & Pivot MCP
A remote MCP server that enables agents to perform SQL GROUP BY operations and generate pivot tables directly on JSON row data. It supports 11 functions including date buckets, top N selections, totals, and handling messy numbers, with a limit of 500 rows per call.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpWhat its tools do
2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Perform SQL GROUP BY aggregations on JSON datasets
- Generate pivot tables from JSON rows
- Calculate totals and top N values
- Handle date bucketing and messy numbers
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- nerolabs-dataset-aggregate-pivot 0.1.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 2 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
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
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
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 290 ms
- 95th percentile latency
- 290 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 290 ms · metadata changed · 2 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http dataset-aggregate-pivot-mcp https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpCodex
codex mcp add dataset-aggregate-pivot-mcp --url https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpCursor
{
"mcpServers": {
"dataset-aggregate-pivot-mcp": {
"url": "https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"dataset-aggregate-pivot-mcp": {
"type": "streamableHttp",
"url": "https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"dataset-aggregate-pivot-mcp": {
"type": "http",
"url": "https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http dataset-aggregate-pivot-mcp https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpClaude Desktop
https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpWindsurf
{
"mcpServers": {
"dataset-aggregate-pivot-mcp": {
"serverUrl": "https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp"
}
}
}Let your agent find its tools
Find servers like Dataset Aggregate & Pivot MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.