Skip to main content
Glama
diyaluo

data-report-mcp

by diyaluo

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chartsNo
api_keyNo
file_urlNo
filenameNoupload.csv
file_base64No
return_xlsxNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it discloses meaningful behavior: processing happens locally, the report is Chinese Markdown, the xlsx includes native interactive bar charts, and there is an anonymous monthly quota with a paid-key bypass. Gaps remain around size limits for base64 payloads, failure/error behavior for malformed files, and whether output is truncated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the capability and output before the argument list, and the Args block is scannable with aligned labels. The opening sentence is dense with metric enumerations that could be trimmed, but every element is informative rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must supply both behavior and returns — and it largely does: it names the output format (Chinese Markdown insights), the optional xlsx artifact, the metrics computed, and the quota/auth model. Only edge-case handling (bad input, size limits, quota-exceeded responses) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the Args block documents all six parameters with semantics beyond the names — file_base64 as raw content, file_url as a direct HTTPS link, filename used 'only to decide csv vs xlsx', charts as max category columns to chart, return_xlsx as an opt-in base64 workbook, and api_key as a quota bypass. This fully compensates for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource (analyze a CSV/XLSX table) with explicit scope: 'fully locally', and an enumerated set of computed metrics (shape, missing rate, duplicates, min/max/mean/median/sum/stddev, correlations, top frequencies). The `health` sibling offers no overlap, so no differentiation is needed. An agent knows exactly what this returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection guidance between the two input paths ('file_base64: preferred' vs 'file_url: alternative') and explains the quota model with the bypass (api_key for the anonymous monthly quota). It does not state when NOT to use this tool or alternative tools for the same job, but the input-path precedence and quota note are genuine, actionable context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

healthA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does add one genuinely useful behavioral fact — no authentication is needed — and implies a read-only diagnostic that reports free-tier limits. It says nothing about rate limits, caching, latency, or what a degraded result looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses, no filler, and the primary purpose (service health) is front-loaded ahead of the scope detail. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-annotation tool with no output schema, the definition covers what is needed to decide to call it: it is a health probe with free-tier limit data and no auth. It does not describe the shape of the returned status, which is a minor gap given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there are no parameter semantics to document. A baseline of 4 is appropriate; this dimension is effectively non-applicable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource and scope: service health status plus free-tier limit information. It is immediately distinguishable from the only sibling, extract_pdf, which is unrelated. It stops short of a 5 only because it is telegraphic rather than a full verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'No auth required' hints at the calling context and removes a prerequisite, but the description never says when to invoke this versus anything else, nor what state or errors it signals. Usage is implied by the name and the health-check convention rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 2 tool updatesv0.1.0
    • First observedanalyze_table
    • First observedhealth

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 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
    B
    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
  • F
    license
    Not graded
    quality
    A
    maintenance
    Provides tools to analyze local PDFs and CSVs (page count, text search, scoring, column stats) with strict refusal to guess ambiguous data. Requires a paid license.
    -