使用说明
ParseQri MCP-CSV智能套件
CSV文件的自然语言数据分析
使用由AI代理支持的纯英语处理、查询和可视化CSV数据
🌟 概述
ParseQri MCP是一个综合数据分析平台,它将模型上下文协议(MCP)的强大功能与智能多代理系统相结合,使用自然语言处理和分析CSV数据。该套件由两个主要部分组成:
- CSV_MCP -MCP服务器通过标准化协议公开数据处理工具
- CSV_代理 -用于自然语言到SQL转换的智能代理系统
🎯 主要特点
🚀 自然语言查询
用简单的英语提问,立即获得SQL支持的见解:
- “按收入显示前10名客户”
- “按地区划分的平均贷款金额是多少?”
- “查找上个月价值>1000美元的所有订单”
🔄 无缝CSV处理
- 自动上传:删除CSV文件,它们将被自动处理
- 多用户支持:每个用户的独立数据存储
- 智能元数据提取:AI驱动的模式理解
- 类型推断:自动数据类型检测
🧠 智能AI代理
具有专用代理的模块化架构:
- 意图分类
- 模式理解
- SQL生成和验证
- 查询执行
- 响应格式
- 数据可视化
- 查询缓存(Redis)
📊 内置可视化
自动生成图表和图形:
- 折线图、条形图、散点图
- 热图、饼图、直方图
- 高级统计可视化
⚡ 性能优化
- 基于Redis的查询缓存
- ChromaDB元数据索引
- 智能模式筛选
- 连接池
📦 包含内容
🗂️ CSV_MCP服务器
公开CSV处理功能的模型上下文协议服务器:
关键工具:
upload_csv-上传和处理CSV文件query_data-执行自然语言查询delete_data-清理表和元数据list_tables-查看可用数据集
支持的模式:
- 标准模式 -适用于Claude Desktop和MCP客户端
- HTTP/SSE模式 -用于远程访问和web集成
🤖 CSV_Agent系统
多代理文本到SQL处理管道:
代理组件:
- 数据摄入代理 -CSV验证和加载
- 模式理解代理 -数据库架构提取
- 意图分类代理 -查询类型检测
- SQL生成代理 -自然语言→ SQL转换
- SQL验证代理 -查询正确性验证
- 查询执行代理 -安全执行SQL
- 响应格式化代理 -自然语言响应
- 可视化代理 -图表生成
- 元数据索引器代理 -语义元数据存储
- 查询缓存代理 -基于Redis的缓存
- PostgreSQL处理程序代理 -数据库操作
🛠️ 安装
先决条件
- Python 3.8+
- PostgreSQL 13+
- 奥拉玛 (LLM能力)
- 瑞迪斯 (可选,用于缓存)
快速开始
-
克隆仓库
git clone https://github.com/Sonadas21/ParseQri_MCP.git cd ParseQri_MCP -
设置PostgreSQL
# Create database createdb parseqri # Or using psql psql -U postgres CREATE DATABASE parseqri; -
安装CSV_Agent依赖项
cd CSV_Agent pip install -r requirements.txt -
安装CSV_MCP依赖项
cd ../CSV_MCP pip install -r requirements.txt -
配置数据库连接
更新
CSV_Agent/config.json使用您的PostgreSQL凭据:{ "agents": { "postgres_handler": { "params": { "db_url": "postgresql://username:password@localhost:5432/parseqri" } } } } -
启动Ollama
ollama serve # Pull required models ollama pull PetrosStav/gemma3-tools:4b ollama pull llama3.1:8b-instruct-q4_K_M ollama pull qwen3:4b -
启动Redis (可选,用于缓存)
# Using Docker docker run -d -p 6379:6379 redis:latest # Or use the provided script cd CSV_Agent ./redis-docker.sh # Linux/Mac redis-docker.bat # Windows
🚀 用法
使用CSV_MCP服务器
适用于克劳德桌面(标准模式)
-
配置Claude桌面
添加到您的Claude Desktop配置中:
{ "mcpServers": { "csv-mcp": { "command": "python", "args": ["d:/Projects/C2CAS_Projects/Deployable/ParseQri_MCP/CSV_MCP/server.py"], "env": {} } } } -
重新启动克劳德桌面
-
在对话中使用工具
User: Upload this CSV file: d:/data/customers.csv Claude: [Uses upload_csv tool] User: Show me the top 5 customers by revenue Claude: [Uses query_data tool]
HTTP/SSE模式(远程访问)
cd CSV_MCP
# Start HTTP server
python server.py --http --host 0.0.0.0 --port 8000
# Server now available at:
# http://localhost:8000
# SSE endpoint: http://localhost:8000/sse
MCP检验员测试
cd CSV_MCP
npx @modelcontextprotocol/inspector python server.py
直接使用CSV_Agent
简单查询示例
cd CSV_Agent
python main.py "What is the average loan amount?"
自动CSV处理
# Place CSV files in uploads/ folder
cp mydata.csv uploads/
# Run query (auto-processes new files)
python main.py "Show me all records from mydata"
文件监视器模式
# Continuously monitor uploads/ folder
python watch_data_folder.py
# Add files to uploads/ - they'll be processed automatically
📖 示例工作流
工作流程1:上传和查询
# Using CSV_MCP tools in Claude or other MCP client
# 1. Upload CSV
upload_csv(
file_path="d:/data/sales_2024.csv",
user_id="john_doe",
table_name="sales"
)
# 2. Query the data
query_data(
query="What were the total sales by region?",
user_id="john_doe",
table_name="sales"
)
# 3. List all tables
list_tables(user_id="john_doe")
# 4. Delete when done
delete_data(
user_id="john_doe",
table_name="sales",
confirm=true
)
工作流程2:直接代理使用
from core.orchestrator import Orchestrator
# Initialize
config_path = "CSV_Agent/config.json"
orchestrator = Orchestrator(config_path)
# Upload CSV
result = orchestrator.upload_csv(
file_path="sales.csv",
user_id="analyst_1",
table_name="monthly_sales"
)
# Query
response = orchestrator.process_query(
query="Show me monthly trends",
user_id="analyst_1",
table_name="monthly_sales"
)
print(response['natural_language_response'])
print(response['sql_query'])
🏗️ 建筑
系统概述
┌─────────────────────────────────────────────────────────────┐
│ MCP Clients │
│ (Claude Desktop, Custom Apps) │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ CSV_MCP Server │
│ (FastMCP Protocol) │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ CSV_Agent System │
│ (Orchestrator) │
└─────┬───────────────────────────────────────────────────┬───┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Agent Pipeline │ │ Data Stores │
├─────────────────┤ ├──────────────────┤
│ • Intent │ │ • PostgreSQL │
│ • Schema │◄──────────────────────────│ (CSV Data) │
│ • SQL Gen │ │ │
│ • Validation │ │ • ChromaDB │
│ • Execution │◄──────────────────────────│ (Metadata) │
│ • Formatting │ │ │
│ • Visualization │ │ • Redis │
│ • Caching │◄──────────────────────────│ (Query Cache) │
└─────────────────┘ └──────────────────┘
数据处理流程
CSV Upload Flow:
┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐
│ CSV │───▶│ Validation │───▶│ Metadata │───▶│PostgreSQL │
│ File │ │ & Parsing │ │ Extraction │ │ Storage │
└──────────┘ └──────────────┘ └──────┬───────┘ └───────────┘
│
▼
┌──────────────┐
│ ChromaDB │
│ Indexing │
└──────────────┘
Query Processing Flow:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Natural │───▶│ Intent │───▶│ Schema │───▶│ SQL │───▶│ Query │
│ Language │ │Classifier│ │ Filter │ │Generator │ │Execution │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └────┬─────┘
│
┌───────────────────────────────────────────────────┘
│
▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Response │◄───│ Format │◄───│ Cache │
│ to User │ │ Results │ │ Check │
└──────────┘ └──────────┘ └──────────┘
⚙️ 配置
CSV_代理配置
编辑 CSV_Agent/config.json:
{
"agents": {
"postgres_handler": {
"params": {
"db_url": "postgresql://user:pass@host:5432/dbname",
"schema": "public"
}
},
"query_cache": {
"params": {
"redis_host": "localhost",
"redis_port": 6379,
"ttl_seconds": 86400,
"use_fallback": true
}
},
"metadata_indexer": {
"params": {
"llm_model": "PetrosStav/gemma3-tools:4b",
"api_base": "http://localhost:11434",
"chroma_persist_dir": "../data/db_storage"
}
}
}
}
LLM模型配置
该系统针对特定任务使用不同的Olama模型:
| 代理 | 型号 | 用途 |
|---|---|---|
| 意图分类 | gemma3-tools:4b |
快速意图检测 |
| 模式理解 | gemma3-tools:4b |
模式分析 |
| SQL生成 | llama3.1:8b |
复杂的SQL创建 |
| SQL验证 | llama3.1:8b |
查询验证 |
| 响应格式 | qwen3:4b |
自然语言响应 |
| 可视化 | gemma3-tools:4b |
图表生成 |
多用户数据隔离
每个用户都有独立的存储:
User: john_doe
├── PostgreSQL Tables: sales_john_doe, customers_john_doe
├── ChromaDB Collection: john_doe_metadata
└── Metadata Files: db_storage/john_doe/
🧪 测试与开发
运行测试
cd CSV_Agent
python -m pytest tests/
测试单个代理
# Test SQL generation
python simplified_query.py "show me all customers"
# Test cache
python inspect_cache.py
# Clear databases
python clear_databases.py
调试模式
启用详细登录 config.json:
{
"logging": {
"level": "DEBUG",
"file": "textsql.log"
}
}
📚 文档
每个组件都有详细的文档:
- CSV_MCP文档 -MCP服务器设置和API
- CSV_MCP快速入门 -快速入门指南
- CSV_MCP故障排除 -常见问题
- CSV_Agent文档 -代理系统详细信息
- 多用户指南 -多用户设置
- Redis缓存指南 -缓存配置
🐛 故障排除
常见问题
PostgreSQL连接失败
# Check PostgreSQL is running
pg_isready
# Verify credentials
psql -U username -d parseqri
# Update config.json with correct credentials
找不到Ollama
# Start Ollama service
ollama serve
# Verify models are available
ollama list
# Pull missing models
ollama pull PetrosStav/gemma3-tools:4b
ChromaDB权限错误
# Ensure write permissions
chmod -R 755 data/db_storage
# Or on Windows, check folder permissions in Properties
CSV上传失败
- 验证文件路径是否为绝对路径
- 检查CSV编码(建议使用UTF-8)
- 确保CSV有标题
- 检查列名中的特殊字符
查询返回空结果
- 使用
list_tables验证表是否存在 - 确保
user_id匹配上传用户 - 不要在table_name中包含user_id后缀
- 检查查询语法
🔒 安全考虑
- SQL注入防护:所有查询在执行前都经过验证
- 用户隔离:每个用户的数据都使用前缀表进行隔离
- 参数化查询:代理人使用事先准备好的声明
- 输入验证:CSV文件在处理前经过验证
- 访问控制:配置具有最低所需权限的数据库用户
🚦 性能提示
-
启用Redis缓存:显著加快重复查询的速度
docker run -d -p 6379:6379 redis:latest -
优化PostgreSQL:为频繁查询的列添加索引
CREATE INDEX idx_user_column ON table_name(column_name); -
使用适当的LLM模型:平衡速度与精度
- 快速:
gemma3-tools:4b - 准确:
llama3.1:8b
- 快速:
-
批处理:一次上传多个CSV
-
ChromaDB维护:定期清理旧元数据
python clear_databases.py
🗺️ 路线图
- [ ] 数据库代理 -直接MySQL、PostgreSQL、MSSQL连接
- [ ] Excel支持 -.xlsx文件处理
- [ ] 高级分析 -统计分析代理
- [ ] 实时流媒体 -实时数据处理
- [ ] Web用户界面 -基于浏览器的界面
- [ ] API网关 -用于集成的REST API
- [ ] 容器化 -完整的Docker编写设置
- [ ] 云部署 -AWS/Azure/GCP模板
🤝 贡献
欢迎投稿!请按照以下步骤操作:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
👥 作者
ParseQri开发团队
- Sona 这 初步工作 - 索纳达斯21
🙏 致谢
- 模型上下文协议 -用于标准化的AI集成协议
- 奥拉玛 -用于本地LLM推理
- 色度数据库 -矢量数据库功能
- FastMCP -适用于Python MCP服务器框架
- PostgreSQL社区 -对于强大的数据库系统
📞 支持
对于问题、疑问或功能请求:
- GitHub问题: 报告错误
- 电子邮件: dass21656@gmail.com
- 文档:查看文档/文件夹以获取详细指南
由...制作❤️ ParseQri团队
⭐ 如果这个项目对你有帮助,请在GitHub上给我们打个星!
