Dataset Aggregate & Pivot

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

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
65%
命名质量
100%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,098token 数(工具定义)
~5.3 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 0.86%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

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

远程端点

https://dataset-aggregate-pivot.nerolabs.workers.dev/mcpstreamable-http

它能做什么

工具清单

工具(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.

输入模式

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢aggregate_rows(rows, groupByFields, aggregations, groupMatching, dateBucketField, ...)

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",
  "properties": {
    "rows": {
      "type": "array",
      "description": "The records to aggregate, up to 500. Each row is a JSON object; keys may differ between rows.",
      "items": {
        "type": "object"
      }
    },
    "groupByFields": {
      "type": "array",
      "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.",
      "items": {
        "type": "string"
      }
    },
    "aggregations": {
      "type": "array",
      "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.",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The field to aggregate. Optional for count, which then counts rows."
          },
          "function": {
            "type": "string",
            "enum": [
              "count",
              "countDistinct",
              "sum",
              "avg",
              "min",
              "max",
              "median",
              "first",
              "last",
              "list",
              "listDistinct"
            ]
          },
          "alias": {
            "type": "string",
            "description": "Output column name."
          }
        },
        "required": [
          "function"
        ]
      }
    },
    "groupMatching": {
      "type": "string",
      "enum": [
        "normalized",
        "exact"
      ],
      "description": "normalized (default) ignores letter case and extra whitespace when grouping, so \"South\" and \"south \" are one group. exact requires identical values."
    },
    "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."
    },
    "dateBucketGranularity": {
      "type": "string",
      "enum": [
        "day",
        "week",
        "month",
        "quarter",
        "year"
      ],
      "description": "Bucket size for dateBucketField: day (2026-08-19), week (2026-W34), month (2026-08, default), quarter (2026-Q3) or year."
    },
    "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."
    },
    "pivotValueField": {
      "type": "string",
      "description": "The field whose values fill the pivot cells, for example \"amount\". Omitted fills each cell with a row count."
    },
    "pivotFunction": {
      "type": "string",
      "enum": [
        "count",
        "countDistinct",
        "sum",
        "avg",
        "min",
        "max",
        "median",
        "first",
        "last",
        "list",
        "listDistinct"
      ],
      "description": "How pivot cell values are combined. Defaults to sum when pivotValueField is set; ignored (row count) without one."
    },
    "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."
    },
    "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."
    },
    "sortDirection": {
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ],
      "description": "asc (default) or desc. Use desc with topN for \"top N by\" questions."
    },
    "topN": {
      "type": "integer",
      "minimum": 1,
      "description": "After sorting, keep only the first N groups. The totals row still covers every input row."
    },
    "includeTotalsRow": {
      "type": "boolean",
      "description": "Appends a grand-total row labelled \"(total)\" and adds a _rowType column (\"group\" or \"total\")."
    }
  },
  "required": [
    "rows"
  ],
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本2 个工具
已验证未记录版本2 个工具
已验证未记录版本2 个工具