数据质量分析与EDA工具

一个本地MCP服务器,允许通过自然语言对本地数据集进行数据质量检查和探索性数据分析(EDA)。

  • by vaibhavparihar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vaibhavparihar/chatgpt-mcp-data-quality-assistant

使用说明

chatgpt-mcp数据质量助手

这个项目是 本地模型上下文协议(MCP)服务器 这使得ChatGPT 跑 数据质量检查和探索性数据分析 在我的本地 数据集通过自然语言。

我通过HTTP公开服务器(使用 ngrok)并将其注册为自定义MCP ChatGPT中的连接。连接后,我可以向ChatGPT询问以下问题:

  • “使用本地数据质量和EDA连接器并列出可用的数据集。”
  • “简介 titanic.csv 数据集,并总结主要发现。”
  • “运行数据质量检查 titanic 并给我问题和质量评分。”
  • “打开分析报告 titanic 并对其进行总结”

然后,ChatGPT调用我的本地MCP工具,这些工具是在Python之上实现的 pandas 并将结果返回到聊天中。


特性

  • MCP服务器 用Python实现,与ChatGPT的MCP连接兼容。
  • 数据集发现:列出本地可用的数据集 data/ 文件夹。
  • 自动EDA:
    • 为生成分析报告 titanic.csv 通过汇总统计, 缺失值和相关性。
    • 将报告保存到 reports/ 作为Markdown。
  • 数据质量检查:
    • 对缺失值、数值范围和简单一致性规则的基本检查。
    • 返回一个 数据质量评分 以及一系列问题。
  • 本地优先:所有数据都保存在我的机器上;ChatGPT只看到结果 MCP服务器返回。

技术栈

  • python
  • 熊猫 用于数据操作
  • 分析/EDA 自动化数据集报告库
  • FastAPI/Starlette + 服务器发送事件(SSE) 实施MCP传输
  • 吸烟 将本地MCP服务器暴露给ChatGPT
  • 模型上下文协议(MCP) 用于工具定义和模式

运作原理

  1. 核心逻辑 (core.py)

    • 从加载数据集 data/ 目录。
    • 对于 titanic.csv,它生成一个分析报告,其中包含:
      • 行/列计数(例如,此Titanic文件为887行,8列)。
      • 数字列的汇总统计信息(Age, Fare等等)。
      • 变量之间的相关性,例如 Survived, Pclass, Fare等等。:content引用[oacite:1]{索引=1}
    • 实现以下功能:
      • list_datasets()
      • profile_dataset(name)
      • run_quality_checks(name) (退货问题+质量评分)
      • get_report(name) (加载Markdown报告供ChatGPT进行总结)
  2. MCP服务器 (server.py)

    • 将核心功能包装为 MCP工具.
    • 使用FastAPI+SSE通过HTTP公开它们(text/event-stream),所以 ChatGPT可以作为MCP客户端连接。
    • 在引擎盖下使用JSON-RPC 2.0以符合MCP的期望。
  3. 将其暴露于ChatGPT

    • 在本地启动MCP服务器:
      python server.py
      
    • 通过以下方式暴露它 ngrok:
      ngrok http 8000
      
    • 使用 https://<your-subdomain>.ngrok.app/mcp ChatGPT MCP中的URL 配置,带 Accept: text/event-stream.
    • 在ChatGPT中创建一个新的MCP连接,并将其指向此URL。
  4. 使用ChatGPT

    • 启用连接器后的示例提示:
      • “使用本地数据质量和EDA连接器并列出可用的数据集。”
      • “分析titanic.csv数据集并总结主要发现。”
      • “对titanic进行数据质量检查,并给我问题和质量评分。”
      • “打开titanic的分析报告并对其进行总结。”

示例:Titanic数据集

作为演示,我使用 泰坦尼克号乘客数据集 储存于 data/titanic.csv.

分析报告包括:

  • 887行 和 8列 与字段类似 Survived, Pclass, Age, Fare以及家庭关系。
  • 描述性统计(平均值、标准差、最小值、最大值、四分位数)。
  • 相关矩阵,看看如何 Pclass, Age, Fare等等与生存有关。:content参考[oacite:2]{索引=2}

生成的Markdown报告位于 reports/titanic_profile.md 并且可以是 由ChatGPT通过MCP连接器打开和总结。


设置和运行

  1. 创建虚拟环境并安装依赖项:

    python -m venv .venv
    source .venv/bin/activate      # On macOS/Linux
    pip install -r requirements.txt