数据分析预处理工具

MCP-sklearn是一个基于scikit-learn的数据分析和预处理工具,提供EDA分析和数据质量分析功能,支持通过自然语言操作Streamlit UI。

  • by KRFH
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KRFH/mcp-sklearn

使用说明

MCP-sklearn: 用于数据分析和预处理MCP 服务器+Streamlit UI

这个存储库Model Context Protocol (MCP) 来修改标记元素的显示属性 scikit-learn 用于基本数据分析和预处理MCP 服务器和 OpenAI(GPT-4o)可以用自然语言操作Streamlit UI 的明细栏样式中定义的设置。

提供2个专门服务器(EDA分析、数据质量分析)Docker 排除依赖 在同一环境中MCP 直接启动服务器使用。


全体構成

.
├── server/                 # MCP サーバー群(FastMCP)
│   ├── eda.py             # EDA(探索的データ分析)サーバー
│   ├── preprocess.py      # データ品質・前処理サーバー
│   ├── pyproject.toml     # サーバー側依存関係
│   └── modules/           # 共通モジュール
│       ├── __init__.py
│       ├── dataclass.py   # 型定義
│       ├── eda_analyzer.py # EDA分析ロジック
│       └── data_quality.py # データ品質分析ロジック
├── src/                   # Streamlit クライアント(OpenAI + MCP)
│   └── main.py
├── data/                  # 分析用CSVを置く場所
│   ├── sample.csv
│   ├── titanic.csv
├── README.md
└── pyproject.toml         # クライアント側依存関係

概念

MCP(Model Context Protocol)是“AI模型安全调用外部工具的通用协议”。

在本项目中

  • EDA服务器 -探索性数据分析(统计量、相关性、可视化等)
  • 预处理服务器 -数据质量分析、缺损值处理、偏离值检测
  • Streamlit客户机 -使用自然语言调用服务器功能
OpenAI (GPT)  ⇄  Streamlit Client  ⇄  MCP Servers (EDA + Preprocessing)
                                      ├── eda.py (port 8080)
                                      └── preprocess.py (port 8081)

scikit-learn + pandas 在基础上可以用自然语言进行面向机器学习的数据分析。


主要构成要素

组件/角色 | ---------------------- | ---------------------------------------------------------------------------- | | server/eda.py | EDA用MCP服务器。提供数据预览、统计量、相关分析等 | server/preprocess.py 用于预处理MCP服务器。提供数据质量分析、缺损值处理、偏离值检测 | src/main.py |流线型UIMultiServerMCPClient并行启动和控制两台服务器 | data/ | CSV放置分析对象文件。保存处理结果的共享目录|


安装和启动过程

1.安装依赖项

主项目方:

poetry install

服务器端:

cd server
poetry install

主要依赖包

客户端(pyproject.toml):

  • openai、langchain、langchain openai、langchain mcp适配器
  • streamlitd、mcp、pandas、pyarrow

服务器端(server/pyproject.toml):

  • mcp、pandas、pyarrow、scikit-learn、scipy

2.单体动作确认(可选)

MCP单独测试服务器:

cd server
# EDA サーバー単体確認
poetry run python eda.py

# データ品質サーバー単体確認
poetry run python preprocess.py

3. Streamlit启动集成应用程序

export OPENAI_API_KEY=sk-xxxx
poetry run streamlit run src/main.py

在浏览器中打开“OpenAI chat with MCP tools”,两个MCP服务器启动。


Streamlit 一侧(src/main.py)的结构

Streamlit在旁边 MultiServerMCPClient 使用多个MCP并行启动服务器。

SERVER_ENTRY_EDA = (PROJECT_ROOT / "server" / "eda.py").as_posix()
SERVER_ENTRY_PREPROCESS = (PROJECT_ROOT / "server" / "preprocess.py").as_posix()

client = MultiServerMCPClient({
    "eda": {
        "command": "poetry",
        "args": ["run", "python", SERVER_ENTRY_EDA, "--transport", "stdio"],
        "transport": "stdio",
        "cwd": (PROJECT_ROOT / "server").as_posix(),
        "env": {"PYTHONUNBUFFERED": "1"},
    },
    "preprocess": {
        "command": "poetry",
        "args": ["run", "python", SERVER_ENTRY_PREPROCESS, "--transport", "stdio"],
        "transport": "stdio",
        "cwd": (PROJECT_ROOT / "server").as_posix(),
        "env": {"PYTHONUNBUFFERED": "1"},
    }
})

每个服务器的依赖关系 server/ 在动态输入提示中单击Poetry 自动从环境中解决。


使用例

您可以在聊天屏幕上提出以下问题:

「titanic.csvのデータを確認して、欠損値の状況を教えて」
「Survived列とPclass列の相関を調べて」

总结

要素 构成
|通信方式|STDIO(Python进程直接启动)
客户机Streamlit + LangChain + OpenAI
服务器FastMCP ×2台(EDA+预处理)|
|功能|EDA用于分析、数据质量、预处理、机器学习的数据准备|
安全性 data/ 只允许属下访问
利点 Docker不要・軽量・scikit-learn統合・Poetry一体管理