MCP数据库查询
一个功能强大的模型上下文协议(MCP)服务器,提供通用的数据库查询和自检工具。该服务器支持MySQL、PostgreSQL和MongoDB等多个数据库,通过统一的接口实现无缝的数据库操作。
特性
- 🔌 多数据库支持:适用于MySQL、PostgreSQL和MongoDB
- 🔍 表反思:获取有关表结构和模式的详细信息
- 📊 数据库检查:列出数据库中的所有数据库和表
- ⚡ 查询执行:执行SQL查询和MongoDB操作
- 🔐 安全连接:支持经过身份验证的数据库连接
- 📦 FastMCP集成:基于FastMCP构建,用于可靠的MCP服务器实施
支持的数据库
- MySQL:通过
mysql-connector-python - PostgreSQL:通过
psycopg2-binary - MongoDB:通过
pymongo
安装
先决条件
- Python 3.10或更高版本
- pip包管理器
- 目标数据库的访问凭据
设置
- 克隆存储库
git clone https://github.com/linlaz/mcp-database-query.git
cd mcp-database-query- 使用uv安装依赖项
uv sync这 uv 包管理器将根据以下内容自动处理虚拟环境创建和依赖关系安装 pyproject.toml.
- 使用uv运行命令
使用 uv run 执行Python脚本:
uv run python main.py或者激活由uv创建的虚拟环境:
source .venv/bin/activate
# or
.venv\Scripts\activate 配置
创建一个 .env 项目根目录中的文件:
APP_NAME=mcp-database-query
APP_PORT=5000您可以在使用此MCP服务器的客户端应用程序中配置数据库连接。
用法
启动服务器
使用 uv run:
uv run python main.py或者,如果您激活了虚拟环境:
python main.py服务器将在您的 .env 文件(默认值:5000)使用HTTP传输。
可用工具
1. 列出数据库
列出连接的数据库服务器上的所有可用数据库。
参数:
engine:数据库类型("mysql","postgres",或"mongo")
例子:
List all databases on MySQL server2. 列表表格
列出特定数据库中的所有表/集合。
参数:
engine:数据库类型databaseOrSchemaName(可选):特定数据库/模式名称
例子:
Show all tables in the "users_db" database3. 描述表
检索特定表或MongoDB集合的架构和结构信息。
参数:
engine:数据库类型table:表或集合名称
退货:
- 列名和数据类型
- 约束和指标
- 默认值
- 无效状态
例子:
Get the structure of the "users" table4. 运行查询
执行SQL查询(MySQL/PostgreSQL)或MongoDB操作。
参数:
engine:数据库类型query:SQL查询或MongoDB操作- 根据需要提供其他连接参数
支持的操作:
SQL(MySQL/PostgreSQL):
- SELECT语句
- 插入语句
- 更新语句
- DELETE语句
MongoDB:
- find(),findOne()
- counts文档()
- 聚合()
- insertOne(),insertMany()
- Updateoneggin)、updatemanyyas)
- deleteOne()、deleteMany()
- distinct()
SQL查询示例:
SELECT * FROM users WHERE status = 'active' LIMIT 10MongoDB查询示例:
users.find({"status": "active"}).limit(10)项目结构
mcp-database-query/
├── main.py # Entry point for the MCP server
├── pyproject.toml # Project configuration and dependencies
├── README.md # This file
├── .env # Configuration file (create this)
└── src/
├── connections/ # Database connection handlers
│ ├── mongodb.py
│ ├── mysql.py
│ └── postgresql.py
├── helpers/ # Query execution helpers
│ ├── mongodb_execute.py
│ ├── mysql_execute.py
│ └── postgresql_execute.py
└── tools/ # MCP tool implementations
├── describe_table.py
├── list_databases.py
├── list_tables.py
└── run_query.py建筑
该项目实现了模型上下文协议(MCP)规范,使AI助手和其他应用程序能够安全地与数据库交互。该架构遵循模块化设计:
- 连接层:处理特定于数据库的连接逻辑
- 执行层:执行查询并返回格式化结果
- 工具层:将数据库操作作为MCP工具公开
- 服务器层:FastMCP服务器管理所有工具和客户端通信
错误处理
该服务器包括全面的错误处理功能,用于:
- 连接失败
- 无效查询
- 身份验证错误
- 数据库特定错误
安全考虑
- 凭证:将敏感凭据存储在
.env文件,永远不要将其提交到版本控制中 - 查询验证:执行前始终验证和净化用户输入
- 最小特权:使用具有最低所需权限的数据库帐户
- 网络安全:部署时限制服务器访问受信任的网络
依赖项
- fastmcp:模型上下文协议服务器框架
- mysql连接器python:MySQL数据库驱动程序
- psycopg2二进制:PostgreSQL数据库驱动程序
- 皮蒙哥语:MongoDB数据库驱动程序
- python dotenv:环境变量管理
