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.py3. 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一体管理 |
______________________________________________________________________
