数据库工具MCP服务器

一个基于MCP协议的数据库工具服务器,提供使用DuckDB和LangChain查询电商数据的SQL执行、表结构获取和Parquet文件处理功能。

  • by sdonapar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sdonapar/mcp_project

使用说明

MCP项目-DB使用MCP服务器

一种模型上下文协议(MCP)服务器,提供数据库实用程序,用于使用DuckDB和LangChain查询电子商务数据。

概述

此项目实现了一个MCP服务器,该服务器公开了以下数据库工具:

  • 在电子商务数据集上执行SQL查询
  • 正在检索表架构
  • 处理Maven Analytics玩具商店数据集中的拼花地板文件

设置

先决条件

  • Python 3.12或更高版本
  • uv 包管理器

安装

  1. 克隆或导航到项目目录:
cd /Users/sdonapar/Documents/mcp_project
  1. 使用安装依赖项 uv:
uv sync
  1. 从Maven Analytics下载数据集:

    • 访问:https://mavenanalytics.io/data-playground/toy-store-e-commerce-database
    • 下载数据集并将其解压缩到 data/ 目录
  2. 将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 -会话信息

配置

环境设置

  1. 创建 .env 项目根目录中的文件:
touch .env
  1. 将您的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工具都是独立的,不能直接调用其他工具