Data Profiler Mcp

io.github.haiiibin由 GitHub 账号 haiiibin 发布v0.4.0更新于 Oct 24, 2026

Profiles CSV/Parquet/Excel/JSON files: schema, stats, quality flags and dtype tips for LLM agents.

已验证STDIO仅桌面文件与存储数据与分析

概览

AI 生成的概览

本地 MCP 服务器,让助手对 CSV、Parquet、Excel 或 JSON 文件做剖析,并以 JSON 返回结构、统计和数据质量标记。

可以做什么
  • 一次调用完成整份文件剖析:形状、内存占用、缺失值、重复行与逐列摘要
  • 预览数据集的首行、末行或随机若干行
  • 深入分析单列:百分位、偏度、离群值、直方图或高频取值
  • 数据质量审计:重复、高缺失与常量列、以文本存储的数字、混合类型、空白填充
  • 给出节省内存的类型转换建议及预估收益
  • 比较两个文件的差异,并计算数值列之间的相关矩阵
适用场景
适合在编写分析代码前让助手先了解本地表格文件的内容,检查数据集的质量问题,或对比同一数据的两个快照,而无需把 dataframe 输出粘贴到对话中。
运行要求
以本地 stdio 进程在用户机器上运行(仅桌面端)。需要 Python 3.10+ 与 MCP Python SDK 2.x,可用 uv 或 pip 安装,也可直接从源码运行。未声明任何账号、API 密钥或环境变量。
安装前请注意
助手会读取被指定的任意文件路径,请只指向愿意交给模型的数据。README 称不写入磁盘、数据不离开本机,但文件内容会作为工具输出返回给模型。大文件会按行数上限读取并标记为抽样。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Data Profiler Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

data-profiler-mcp

[CI] [PyPI] [PyPI Downloads] [Python] [Glama] [MCP Registry] [Listed in awesome-mcp-servers] [License: MIT]

An MCP server that lets an LLM understand any tabular data file: point it at a CSV, Parquet, Excel or JSON file and get schema, distributions, data-quality flags and dtype suggestions back as structured JSON.

Stop pasting df.head() and df.info() into chat. Ask your assistant "profile sales.csv" and it reads the file itself, then tells you what is in it, what is wrong with it, and how to load it more efficiently.

[data-profiler-mcp demo: one prompt returns severity-ranked data-quality flags and a memory-saving dtype plan]

Works with Claude Desktop, Claude Code, Cursor, or any MCP-compatible client.


Features

Seven focused tools, all returning clean JSON:

ToolWhat it does
profile_datasetOne-call overview: shape, memory, missing-value summary, duplicate rows, a per-column summary, and plain-language quality flags.
preview_dataThe first / last / a random sample of n rows as real records.
column_statsDeep dive on one column: full percentiles, skew/kurtosis, outliers (IQR), a histogram, or top values + string lengths for text.
detect_quality_issuesA data-quality audit: duplicates, high-missing and constant columns, numbers stored as text, mixed-type columns, whitespace padding, likely IDs, grouped by severity.
suggest_dtypesMemory-saving / type-fixing recommendations (text to numeric, low-cardinality to category, integer/float downcasting) with estimated savings.
compare_datasetsDiff two files: added/removed columns, dtype changes, row-count delta, and per-column null-rate and mean side by side.
correlation_matrixCorrelations between numeric columns (Pearson / Spearman / Kendall): pairs ranked by strength, multicollinearity flags at |r| >= 0.9, and target-vs-rest ranking via column.

Supported formats: CSV, TSV, Parquet, Excel (.xlsx/.xls), JSON and JSON Lines. Large files are read up to a row cap and clearly flagged as sampled.

No dataset at hand? examples/sample.csv is a small sales export with deliberate quality issues (missing regions, a duplicate row, a constant column, whitespace padding) -- ask your assistant to "profile examples/sample.csv" and see what it flags.


Install

No install needed to try it: open the Glama server page and use Try in Browser to call the tools against a sandbox (the repo ships examples/sample.csv at /app/examples/sample.csv to profile).

Requires Python 3.10+.

Requires MCP Python SDK 2.x (mcp>=2,<3). SDK 1.x is feature-frozen upstream and no longer supported here; 0.3.0 is the last release that ran on it.

bash
# with uv (recommended)uv tool install data-profiler-mcp
# or with pippip install data-profiler-mcp

Or run it straight from source without installing:

bash
git clone https://github.com/haiiibin/data-profiler-mcpcd data-profiler-mcpuv run data-profiler-mcp

Configure your client

Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) and add:

json
{  "mcpServers": {    "data-profiler": {      "command": "data-profiler-mcp"    }  }}

Running from source instead of installing? Point it at the checkout:

json
{  "mcpServers": {    "data-profiler": {      "command": "uv",      "args": ["--directory", "/absolute/path/to/data-profiler-mcp", "run", "data-profiler-mcp"]    }  }}

Restart Claude Desktop and the tools appear under the plug icon.

Claude Code

bash
claude mcp add data-profiler -- data-profiler-mcp

Usage

Once connected, just talk to your assistant:

  • "Profile ~/data/sales_2025.csv and tell me what's in it."
  • "Are there any data-quality problems in customers.parquet?"
  • "Show me 20 random rows from events.jsonl."
  • "Give me full stats for the revenue column, including outliers."
  • "How can I shrink this DataFrame's memory usage?"
  • "What changed between snapshot_jan.csv and snapshot_feb.csv?"

Example: profile_dataset

jsonc
{  "file": { "name": "sample.csv", "format": "csv", "size_human": "14.2 KB" },  "shape": { "rows": 201, "columns": 13, "sampled": false },  "memory_usage_human": "78.4 KB",  "missing_summary": { "total_missing_cells": 561, "pct_missing": 21.5, "columns_with_missing": 3 },  "duplicate_rows": { "count": 1, "pct": 0.5 },  "columns": [    {      "name": "price", "dtype": "float64", "inferred_type": "float",      "non_null": 201, "null": 0, "unique": 51,      "stats": { "min": 0.0, "max": 100000.0, "mean": 521.3, "median": 24.0 }    }  ],  "quality_flags": [    "[high] empty_col: Column is entirely empty (all values missing).",    "[warning] const: Column holds a single constant value; it carries no information.",    "[warning] numeric_text: Every value parses as a number but the column is stored as text."  ]}

Example: detect_quality_issues

jsonc
{  "issue_count": 8,  "severity_counts": { "high": 2, "warning": 4, "info": 2 },  "issues": [    { "column": "empty_col", "issue": "all_missing", "severity": "high",      "detail": "Column is entirely empty (all values missing)." },    { "column": "numeric_text", "issue": "numeric_stored_as_text", "severity": "warning",      "detail": "Every value parses as a number but the column is stored as text." }  ]}

How it works

The server is built on the MCP Python SDK's MCPServer and reads files with pandas (plus pyarrow for Parquet and openpyxl for Excel). Every tool returns a plain, JSON-serializable dict, with NumPy scalars, NaN/inf and timestamps normalized so the output is safe to hand straight back to a model. Nothing is written to disk and no data leaves your machine.


Development

bash
uv venvuv pip install -e ".[dev]"uv run pytest

License

MIT. See LICENSE.

来源:README.md,提交 901c557

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v0.4.0最新Oct 9, 2026
  2. v0.3.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分