Skip to main content
Glama
data-report-mcp

data-report-mcp

by diyaluo

data-report-mcp

📄 Project landing page (use cases and install guide): https://diyaluo.github.io/data-report-mcp/

A local-first Model Context Protocol (MCP) server that turns a CSV/XLSX table into a real data analysis report — summary statistics, duplicate / missing diagnostics, top category frequencies, pairwise correlations, a Chinese Markdown insights writeup, and an Excel workbook with native interactive charts.

  • 🔒 100% local, no API key, no network. Business / financial spreadsheets never leave the machine. There is no telemetry upload — only an optional local usage counter under ~/.cache/data-report-mcp.

  • 🧮 No pandas. Runs on the standard library + openpyxl, so it bundles small and starts fast inside an MCP host.

  • 🔌 Two transports: stdio (Claude Desktop / Cursor / any MCP client) and streamable-http for a hosted endpoint.

  • 🆓 Anonymous free tier (100 tables / 30 days per client); over-quota returns an in-band QUOTA_EXCEEDED signal, it never silently bills.

Tools

Tool

Purpose

analyze_table(file_base64 | file_url, filename, charts=3, return_xlsx=false)

Analyze a .csv/.xlsx fully locally; returns shape, column profiles, significant correlations, a Markdown report, and optionally a base64 .xlsx workbook with native charts.

health()

Service status + free-tier limits.

analyze_table accepts the raw file as base64 (preferred) or a direct https URL to a .csv/.xlsx. Inputs larger than 30 MB are rejected.

Related MCP server: MCP Tabular Data Analysis Server

Install & run

pip install -e .                 # or: pip install data-report-mcp
# stdio (default MCP transport)
python -m data_report_mcp.server
# streamable-http
REMOTE_TRANSPORT=http MCP_PORT=5070 python -m data_report_mcp.server

Claude Desktop / MCP client config

{
  "mcpServers": {
    "data-report": {
      "command": "python",
      "args": ["-m", "data_report_mcp.server"]
    }
  }
}

Environment variables

Var

Default

Meaning

FREE_TABLES_PER_30D

100

anonymous monthly table limit

DATA_REPORT_API_KEY

(unset)

paid key that bypasses the quota

DATA_REPORT_STATE_DIR

~/.cache/data-report-mcp

local usage-counter directory

REMOTE_TRANSPORT / MCP_HOST / MCP_PORT

stdio / 127.0.0.1 / 5070

http transport options

What the report contains

  • Overall: row/column count, duplicate rows, columns with missing rate ≥ 20%.

  • Numeric columns: min / max / mean / median / sum / stdev / missing rate.

  • Categorical columns: unique count + top-5 value frequencies.

  • Significant pairwise correlations (Pearson |r| ≥ 0.5).

  • An Excel workbook (return_xlsx=true) with sheets 概览 / 数值统计 / 明细 / 分布_* (each with a native bar chart) / 显著相关.

Output is a starting point for analysis, not a conclusion: correlation is not causation — combine it with business judgment.

License

MIT. Core analysis adapted from the open data-report local toolkit.

Available Tools

2 tools
analyze_tableA

Analyze a CSV/XLSX table fully locally: infer numeric/categorical columns, compute shape, missing rate, duplicates, min/max/mean/median/sum/ stddev, top frequencies for text columns and pairwise correlations (|r|>=0.5), and return a Chinese Markdown insights report. Optionally a base64 Excel workbook with native interactive bar charts.

Args: file_base64: raw CSV/XLSX content as base64 (preferred). file_url: direct HTTPS URL to a .csv/.xlsx (alternative). filename: original filename (used only to decide csv vs xlsx). charts: max category columns to chart in the xlsx workbook. return_xlsx: when true, include the generated workbook as base64. api_key: paid key to bypass the anonymous monthly quota.

Inputs: charts, api_key, file_url, filename, +2 more.

healthA

Service health + free-tier limits. No auth required.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 2 tools

    Disambiguation5/5

    health and analyze_table have completely distinct purposes: one checks service status and quota, the other performs local table analysis. There is no overlap or ambiguity in choosing between them.

    Naming Consistency4/5

    Both names use snake_case consistently. However, 'health' is a bare noun while 'analyze_table' follows a verb_noun pattern, creating a minor structural inconsistency.

    Tool Count3/5

    With only 2 tools, and one being a trivial health check, the functional surface is thin for a server named data-report-mcp. The single analyze_table tool is comprehensive, but the overall set feels under-scoped.

    Completeness3/5

    The core single-table analysis and reporting workflow is well covered, including stats, correlations, and optional charts. However, notable gaps exist: no support for multi-table comparison, time-series analysis, data cleaning, or saved report retrieval, limiting real-world reporting use cases.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables analysis of datasets from CSV/Excel files, Google Sheets, and Google Drive with comprehensive data profiling tools including schema inference, missing value reports, correlation analysis, and outlier detection. Supports exporting analytical reports in multiple formats to local storage or Google Drive.
      -
    • F
      license
      A
      quality
      D
      maintenance
      Enables comprehensive analysis of CSV files and SQLite databases through tools for statistics, correlations, anomaly detection, pivot tables, time series analysis, visualization, and automated insights discovery.
      16
      -
    • A
      license
      A
      quality
      C
      maintenance
      Answers "sales dropped since last week — where?" by comparing a target period against a weekday-adjusted baseline and localizing which attribute combinations (e.g. channel=web, or Tuesday nights) explain the shift. Runs fully offline on your own CSV — no API key, no ML training, read-only.
      2
      MIT