EDA MCP服务器📊🤖
全面 模型上下文协议(MCP)服务器 这提供了 探索性数据分析(EDA) CSV和结构化TXT文件的工具,由Python的数据科学堆栈和智能TypeScript AI代理提供支持。
🎯 这个项目做什么
该项目展示了一个完整的 人工智能驱动的数据分析工作流程 使用现代网络技术:
- 🔧 MCP服务器:TypeScript/Next.js服务器,承载智能工具
- 🐍 Python集成:从TypeScript无缝执行pandas/matplotlib/seaborn
- 🤖 AI代理:基于OpenAI的代理,负责规划和执行复杂的数据工作流程
- 📊 高级EDA:6种不同的分析类型,具有综合统计功能
- 🌐 web界面:具有漂亮UI的现代Next.js web应用程序
🏗️ 当前技术栈
后端和MCP服务器
- TypeScript -类型安全服务器逻辑
- Next.js 15 -用于服务器端渲染的现代React框架
- @vercel/mcp适配器 -Vercel MCP官方集成
- @模型上下文协议/sdk -MCP协议实现
- 萨德 -运行时类型验证
数据分析引擎
- Python 3 -数据处理运行时
- 熊猫 -数据操作和分析
- matplotlib -统计绘图和可视化
- 海生 -高级统计可视化
- 数值Python -数值计算基础
人工智能与代理系统
- OpenAI API -GPT-4o-mini用于智能规划
- TypeScript代理 -自主工作流执行
- 动态工具发现 -运行时MCP工具检测
开发与测试
- 多伦多证券交易所 -快速执行TypeScript
- pnpm -高效的包管理
- dotenv -环境变量管理
- Node.js流 -子流程沟通
部署就绪
- 维塞尔 -无服务器部署平台
- Redis(可选) -仅支持SSE传输
- Docker支持 -可容器化架构
📋 目录
🛠️ 安装和先决条件
所需软件
- Node.js 18+ -JavaScript运行时
- Python 3.8+ -数据分析引擎
- pnpm -包管理器(
npm install -g pnpm)
Python数据科学堆栈
# Install required Python packages
pip3 install pandas matplotlib seaborn numpy
# Verify installation
python3 -c "import pandas, matplotlib, seaborn, numpy; print('✅ All packages installed')"环境设置
创建 .env.local 文件:
# Required for AI agent
OPENAI_API_KEY=your_openai_api_key_here
# Optional: Redis for SSE transport (communication only, not data storage)
REDIS_URL=redis://localhost:6379设置和启动
# 1. Clone and install dependencies
git clone https://github.com/plijtmaer/eda-mcp-server.git
cd eda-mcp-server
pnpm install
# 2. Start the MCP server (localhost:3000 for local testing)
pnpm dev
# 3. Test EDA capabilities - Available analysis types:
# • basic_info - Dataset overview and structure
# • statistical_summary - Descriptive statistics
# • correlation_analysis - Correlation matrix and relationships
# • distribution_plots - Distribution analysis and outliers
# • missing_data_analysis - Missing value patterns
# • custom_analysis - Execute custom Python code
# Quick test shortcuts (use predefined file/analysis combinations):
pnpm test:eda # → sample_data.csv + basic_info
pnpm test:eda statistical_summary # → sample_data.csv + statistical_summary
pnpm test:eda correlation_analysis # → sample_data.csv + correlation_analysis
# Or use full command for custom file/analysis combinations (localhost for local testing):
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "data/sample_data.csv", "analysis_type": "basic_info"}'
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "data/sales_data.csv", "analysis_type": "statistical_summary"}'
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "data/financial_data.csv", "analysis_type": "correlation_analysis"}'
# Or test with the deployed Vercel server:
node test-mcp.mjs https://eda-mcp-server.vercel.app exploratory-data-analysis '{"file_path": "https://eda-mcp-server.vercel.app/data/sample_data.csv", "analysis_type": "basic_info"}'
node test-mcp.mjs https://eda-mcp-server.vercel.app exploratory-data-analysis '{"file_path": "https://eda-mcp-server.vercel.app/data/sales_data.csv", "analysis_type": "statistical_summary"}'
# 4. Run the simple AI agent (basic implementation for testing and demos)
pnpm agent🔬 EDA工具深度学习
这 探索性数据分析 工具是该系统的核心,提供 6种综合分析类型:
📋 1.基本情况(basic_info)
分析内容:
- 数据集形状(行×列)
- 列名和数据类型
- 内存使用优化
- 前5行预览
- 数据加载诊断
非常适合: 初步数据探索和质量评估
📈 2.统计摘要(statistical_summary)
数字列:
- 描述性统计(平均值、中位数、标准差、最小值、最大值、四分位数)
- 非空值计数
- 分销洞察
分类栏:
- 唯一值计数
- 最常见值(前3)
- 类别分布分析
非常适合: 了解数据分布和中心趋势
🔗 3.相关性分析(correlation_analysis)
高级相关性检测:
- 数值变量的完整相关矩阵
- 自动高相关性识别(|r|>0.7)
- 关系强度解释
- 多重共线性检测
非常适合: 特征选择和关系发现
📊 4.分布分析(distribution_plots)
每列统计分析:
- 集中趋势(平均值、中位数)
- 可变性(标准偏差、范围)
- 形状分析(偏斜度)
- 使用IQR方法进行异常检测
- 分布正态性评价
非常适合: 数据质量评估和异常检测
❓ 5.缺失数据分析(missing_data_analysis)
全面缺失数据审计:
- 每列缺少值(计数和百分比)
- 数据集完整性总计
- 缺少数据模式
- 数据质量评分
非常适合: 数据清理策略制定
🔧 6.自定义分析(custom_analysis)
灵活的Python执行:
- 自定义pandas操作
- 高级统计测试
- 专业数据转换
- 特定领域的计算
可用变量:
df-您加载的DataFramepd-熊猫图书馆np-numpy库plt-matplotlib.pyplotsns-滨海图书馆
非常适合: 专业分析要求
📊 当前数据支持
✅ 目前支持
- CSV文件 -逗号分隔值
- 资料收集 -制表符/逗号/分号分隔的结构化数据
- 基于文件的分析 -本地文件处理
- Python pandas集成 -完整的熊猫生态系统
📁 使用您自己的数据
🏠 地方发展(完全灵活)
# Any local file path works
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "data/my_data.csv", "analysis_type": "basic_info"}'
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "/Users/yourname/Documents/sales.csv", "analysis_type": "statistical_summary"}'
# HTTP URLs also work
node test-mcp.mjs http://localhost:3000 exploratory-data-analysis '{"file_path": "https://raw.githubusercontent.com/yourname/repo/main/data.csv", "analysis_type": "correlation_analysis"}'🌐 已部署服务器(仅限HTTP URL)
# Use the provided sample data
node test-mcp.mjs https://eda-mcp-server.vercel.app exploratory-data-analysis '{"file_path": "https://eda-mcp-server.vercel.app/data/sample_data.csv", "analysis_type": "basic_info"}'
# Use your own data hosted online
node test-mcp.mjs https://eda-mcp-server.vercel.app exploratory-data-analysis '{"file_path": "https://raw.githubusercontent.com/yourname/yourrepo/main/yourdata.csv", "analysis_type": "statistical_summary"}'
# Upload to Dropbox/Google Drive and use direct download links
node test-mcp.mjs https://eda-mcp-server.vercel.app exploratory-data-analysis '{"file_path": "https://www.dropbox.com/s/abc123/data.csv?dl=1", "analysis_type": "correlation_analysis"}'💡 在线托管数据的方法:
- GitHub:将CSV上传到存储库,使用raw.githubusercontent.com URL
- Dropbox:共享文件,添加
?dl=1直接下载的URL末尾 - Google 云端硬盘:公开分享,使用直接下载链接
- 您自己的网站:在公共目录中托管CSV文件
- 数据托管服务Kaggle、数据世界等。
❌ 尚未支持(未来发展)
- 数据库连接 (PostgreSQL、MySQL、MongoDB)
- 实时流数据
- 云存储集成 (S3、GCS、Azure)
- API数据摄入
🤖 AI代理功能
这 TypeScript AI代理 提供 智能自动化 数据分析工作流程。这是一个 为测试和演示目的而设计的简单实现:
🧠 核心能力
- 自主规划 -使用OpenAI创建分析策略
- 工具发现 -自动检测可用的MCP工具
- 智能执行 -执行多步骤分析工作流
- 错误恢复 -优雅地处理工具故障
- 自然语言接口 -简明英语分析要求
🎮 代理模式
交互模式
pnpm agent特征:
- 自然语言查询
- 实时分析执行
- 迭代探索
- 情境感知建议
示例查询:
- *“分析财务数据,向我展示收入和利润之间的相关性”*
- *“查找员工薪资数据中的异常值”*
- *“比较所有日子的天气模式”*
使用您自己的数据与AI代理:
🏠 地方发展:
- *“分析/用户/我/文档/sales_2024.csv,带统计摘要”*
- *“显示data/customer_data.csv的基本信息”*
🌐 使用已部署的服务器(使用HTTP URL):
- *“分析https://raw.githubusercontent.com/me/myrepo/main/sales.csv相关性分析”*
- *“显示分布分析https://www.dropbox.com/s/abc123/data.csv?dl=1"*
示范模式
pnpm agent:demo特征:
- 预定义的分析工作流
- 展示所有功能
- 自动生成报告
- 多数据集分析
备注:该代理充当 概念证明 用于基于MCP的数据分析自动化。对于生产使用,考虑实施更复杂的计划、内存和错误处理。
🧪 测试与开发
🔧 MCP服务器测试
# List all available tools (local)
pnpm test:mcp
# Test basic connectivity (local)
pnpm test:mcp http://localhost:3000 echo "Hello World"
# Test deployed server
node test-mcp.mjs https://eda-mcp-server.vercel.app echo "Hello from deployed server"
# Verify tool discovery (local)
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Verify deployed server tools
curl -X POST https://eda-mcp-server.vercel.app/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'📊 EDA工具测试
# Test each analysis type
pnpm test:eda basic_info
pnpm test:eda statistical_summary
pnpm test:eda correlation_analysis
pnpm test:eda distribution_plots
pnpm test:eda missing_data_analysis
# Test different datasets
# Edit test-eda.mjs to customize file/analysis combinations🤖 代理测试
# Interactive mode
pnpm agent
# Demo mode (automated workflows)
pnpm agent:demo
# Debug mode (with verbose logging)
DEBUG=* pnpm agent📊 示例数据集
这 /data 文件夹包含 4个不同的数据集 进行全面测试:
👥 员工数据(sample_data.csv)
15行×7列
Columns: name, age, salary, department, years_experience, satisfaction_score, city
Data Types: Mixed (string, int, float)
Use Cases: HR analytics, correlation analysis, salary distribution💰 销售数据(sales_data.csv)
10行×6列
Columns: product, region, sales_amount, quantity, date, sales_rep
Data Types: Mixed (string, int, date)
Use Cases: Revenue analysis, regional performance, sales trends🌤️ 天气数据(weather_data.txt)
7行×6列
Columns: day, condition, temperature_f, humidity, wind_speed, precipitation
Data Types: Mixed (string, int, float)
Use Cases: Environmental analysis, pattern detection, forecasting🏢 财务数据(financial_data.csv)
8行×7列
Columns: company, sector, revenue_million, profit_margin, employees, market_cap_billion, debt_ratio
Data Types: Mixed (string, float, int)
Use Cases: Corporate analysis, sector comparison, financial ratios📁 添加您自己的数据
- 将CSV/TXT文件放入
/data文件夹 - 确保结构化格式(逗号/分号/制表符分隔)
- 使用文件路径:
"./data/your_file.csv"
📁 项目架构
eda-mcp-server/ # 🏠 Project root
├── agent/ # 🤖 AI Agent system
│ └── simple-agent.ts # TypeScript AI agent
├── app/ # 🌐 Next.js application
│ ├── [transport]/route.ts # MCP protocol handler
│ ├── layout.tsx # App layout
│ └── page.tsx # Web interface
├── tools/ # 🔧 MCP Tools
│ ├── eda-tool.ts # Main EDA tool
│ ├── echo.ts # Testing tool
│ └── index.ts # Tool exports
├── data/ # 📊 Sample datasets
│ ├── sample_data.csv # Employee data
│ ├── sales_data.csv # Sales data
│ ├── weather_data.txt # Weather data
│ └── financial_data.csv # Financial data
├── lib/ # 📚 Utility libraries
│ └── redis.ts # Redis configuration (SSE transport only)
├── test-mcp.mjs # 🧪 MCP server tester
├── test-eda.mjs # 🧪 EDA tool tester
├── package.json # 📦 Dependencies & scripts
└── README.md # 📖 Documentation🔮 未来发展路线图
🎯 计划功能(尚未实施)
📊 数据源
- 数据库连接(PostgreSQL、MySQL、MongoDB)
- 带有身份验证的API数据接收
- 实时流数据处理
- 云存储集成(S3、GCS、Azure)
🧠 特工情报
- 对话上下文记忆
- 具有依赖关系的多步骤工作流规划
- 自定义分析模板和预设
- 特定领域的专业知识模块
🎨 可视化增强
- 将matplotlib图保存到文件和URL
- 具有Plotly集成的交互式图表
- 实时更新的仪表板创建
- 自定义图表模板
🔧 高级分析
- 机器学习模型的训练与评估
- 统计假设检验套件
- 时间序列分析与预测
- 地理空间数据处理能力
🚀 贡献
该项目欢迎投稿!优先领域:
- PostgreSQL/MySQL的数据库连接器
- 高级可视化功能
- 机器学习集成
- 性能优化
______________________________________________________________________
📜 许可证和联系方式
内置于❤️ 使用:TypeScript、Next.js、Python、OpenAI和模型上下文协议。
仓库:
🚀 已准备好进行生产部署和持续增强!
