使用说明
MCP项目-DB使用MCP服务器
一种模型上下文协议(MCP)服务器,提供数据库实用程序,用于使用DuckDB和LangChain查询电子商务数据。
概述
此项目实现了一个MCP服务器,该服务器公开了以下数据库工具:
- 在电子商务数据集上执行SQL查询
- 正在检索表架构
- 处理Maven Analytics玩具商店数据集中的拼花地板文件
设置
先决条件
- Python 3.12或更高版本
uv包管理器
安装
- 克隆或导航到项目目录:
cd /Users/sdonapar/Documents/mcp_project
- 使用安装依赖项
uv:
uv sync
-
从Maven Analytics下载数据集:
- 访问:https://mavenanalytics.io/data-playground/toy-store-e-commerce-database
- 下载数据集并将其解压缩到
data/目录
-
将CSV文件转换为Parquet格式(可选,以获得更好的性能):
uv run data/csv_to_parquet.py
项目结构
├── db_utils_mcp_server.py # MCP server with database tools
├── agent.py # LangChain agent using the MCP tools
├── streamlit_app.py # Streamlit web application
├── main.py # Main entry point
├── pyproject.toml # Project configuration
├── README.md # This file
├── .env # Environment variables (create this file)
├── .gitignore # Git ignore file
├── logs/ # Logs directory
│ └── query_logs.json # Query history and logs
└── data/ # Dataset directory
├── orders.parquet
├── order_items.parquet
├── order_item_refunds.parquet
├── products.parquet
├── website_pageviews.parquet
├── website_sessions.parquet
└── [CSV files]
可用工具
run_sql
对DuckDB数据库执行SQL查询。
参数:
sql_query(str):要执行的SQL查询
退货:
- JSON记录列表
get_table_schema
检索指定表的架构。
参数:
table_name(str):表的名称
退货:
- 包含模式信息的JSON字符串
用法
运行MCP服务器
uv run db_utils_mcp_server.py
运行代理(CLI)
uv run agent.py
代理使用GPT-4o-mini和MCP工具以对话方式回答数据库查询。
运行Streamlit Web应用程序
uv run streamlit run streamlit_app.py
这将启动一个交互式web界面,您可以在其中:
- 输入自然语言查询
- 实时查看响应
- 在侧边栏中查看示例查询
可用表
orders-订单信息order_items-订单中的单个项目order_item_refunds-退款信息products-产品目录website_pageviews-页面浏览事件website_sessions-会话信息
配置
环境设置
- 创建
.env项目根目录中的文件:
touch .env
- 将您的OpenAI API密钥添加到
.env文件:
OPENAI_API_KEY=sk-your-actual-api-key-here
您可以从以下位置获取API密钥:https://platform.openai.com/api-keys
日志目录
应用程序会自动创建 logs/ 用于存储查询日志和其他应用程序日志的目录。当您第一次运行Streamlit应用程序时,将创建此目录。
查询日志
通过Streamlit应用程序执行的所有查询都会自动保存到 logs/query_logs.json。此文件包含:
- 用户查询
- 代理响应
- 执行时间戳
- 成功/失败状态
- 错误消息(如有)
您可以使用此数据进行分析和调试。
依赖项
- duckdb -SQL数据库引擎
- fastmcp -MCP服务器框架
- 语言链 -LLM框架
- langchain mcp适配器 -LangChain与MCP之间的桥梁
- 兰开夏 -OpenAI集成
- 熊猫 -数据操纵
- pyarrow -箭头数据格式支持
- 快速拼花地板 -拼花文件支持
- 流明 -(可选)Web UI支持
备注
- 该项目使用DuckDB中的临时视图将数据作为表公开
- 为了获得更好的性能,拼花文件比CSV更受欢迎
- 每个MCP工具都是独立的,不能直接调用其他工具