Information
Database MCP Server
一个基于 Model Context Protocol (MCP) 的数据库查询服务,支持多种关系型数据库(通过Sequelize)。
功能特点
支持多种关系型数据库(MySQL, PostgreSQL, SQLite, Microsoft SQL Server, MariaDB)
多数据库连接配置
执行SQL查询
数据库表结构查询
安装
全局安装
npm install -g @data_wise/database-mcp
本地安装
npm install @data_wise/database-mcp
使用方法
数据库连接管理
数据库连接信息会自动保存到用户目录下的 .datawise/database.db 文件中,连接一次后就会保存,无需每次配置。可以通过提供的API工具添加、测试和管理数据库连接。
关系型数据库配置参数
name: 数据库连接的唯一标识名(必填)
dialect: 数据库类型(mysql, postgres, sqlite, mssql, mariadb)
host: 数据库主机地址,默认为 localhost
port: 数据库端口
username: 数据库用户名
password: 数据库密码
database: 数据库名称
storage: SQLite数据库文件路径(仅用于SQLite)
pool: 连接池配置(可选)
max: 最大连接数,默认10
min: 最小连接数,默认0
idle: 空闲超时(毫秒),默认10000
acquire: 获取超时(毫秒),默认30000
MCP示例配置
\{
"mcpServers": \{
"database": \{
"command": "npx",
"args": ["@data_wise/database-mcp"],
"env": \{\}
\}
\}
\}
可用工具
关系型数据库工具
1. 列出可用关系型数据库 (listRelationalDatabases)
请求格式:
\{\}
响应格式:
\{
"success": true,
"data": [
\{
"name": "main",
"dialect": "mysql",
"host": "localhost",
"database": "main_db",
"pool": \{
"max": 10,
"min": 0,
"idle": 10000,
"acquire": 30000
\}
\},
\{
"name": "analytics",
"dialect": "postgres",
"host": "db.example.com",
"database": "analytics_db"
\}
],
"metadata": \{
"count": 2
\}
\}
2. 添加数据库连接 (addDatabaseConnection)
请求格式:
\{
"name": "new_db",
"dialect": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "testdb"
\}
响应格式:
\{
"success": true,
"data": \{
"name": "new_db",
"dialect": "mysql",
"connected": true
\},
"message": "数据库连接 'new_db' 已成功添加并连接"
\}
3. 测试数据库连接 (testDatabaseConnection)
请求格式(测试已存在的连接):
\{
"mode": "existing",
"name": "main"
\}
请求格式(测试新连接配置):
\{
"mode": "new",
"name": "test_conn",
"dialect": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "testdb"
\}
响应格式:
\{
"success": true,
"data": \{
"name": "test_conn",
"mode": "new",
"connectionTestResult": true
\},
"message": "数据库连接测试成功"
\}
4. 更新数据库连接 (updateDatabaseConnection)
请求格式:
\{
"name": "main",
"host": "new-host.example.com",
"port": 3307,
"password": "new-password"
\}
响应格式:
\{
"success": true,
"data": \{
"name": "main",
"updated": true,
"host": "new-host.example.com",
"port": 3307,
"password": "new-password"
\},
"message": "数据库连接 'main' 已成功更新并重新连接"
\}
5. 列出关系型数据库表 (listRelationalTables)
请求格式:
\{
"dbName": "main"
\}
响应格式:
\{
"success": true,
"data": [
"users",
"products",
"orders",
"categories"
],
"metadata": \{
"dbName": "main",
"count": 4
\}
\}
6. 查询关系型数据库表结构 (describeRelationalTable)
请求格式:
\{
"dbName": "main",
"tableName": "users"
\}
响应格式:
\{
"success": true,
"data": \{
"id": \{
"type": "INTEGER",
"allowNull": false,
"primaryKey": true,
"autoIncrement": true
\},
"username": \{
"type": "VARCHAR(255)",
"allowNull": false,
"defaultValue": null
\},
"email": \{
"type": "VARCHAR(255)",
"allowNull": false,
"unique": true
\},
"created_at": \{
"type": "DATETIME",
"allowNull": false
\}
\},
"metadata": \{
"dbName": "main",
"tableName": "users"
\}
\}
7. 执行SQL查询 (executeQuery)
请求格式:
\{
"dbName": "main",
"sql": "SELECT * FROM users WHERE id = ?",
"params": [1]
\}
响应格式:
\{
"success": true,
"data": [
\{
"id": 1,
"username": "admin",
"email": "admin@example.com",
"created_at": "2023-01-01 00:00:00"
\}
],
"metadata": \{
"dbName": "main",
"rowCount": 1,
"fields": ["id", "username", "email", "created_at"]
\}
\}
8. 删除数据库连接 (deleteDatabaseConnection)
请求格式:
\{
"name": "old_db"
\}
响应格式:
\{
"success": true,
"data": \{
"name": "old_db",
"deleted": true
\},
"message": "数据库连接 'old_db' 已成功删除"
\}
9. 断开数据库连接 (disconnectDatabase)
请求格式:
\{
"name": "temp_db"
\}
响应格式:
\{
"success": true,
"data": \{
"name": "temp_db",
"disconnected": true
\},
"message": "数据库连接 'temp_db' 已成功断开"
\}
错误处理
所有工具都会返回统一格式的错误响应:
\{
"success": false,
"error": "详细的错误信息",
"details": "友好的错误说明,包含可能的解决方案"
\}
开发说明
环境要求
Node.js >= 14.0.0
NPM >= 7.0.0
目录结构
database-mcp/
├── bin/
│ └── cli.js # CLI入口
├── src/
│ ├── index.ts # 主入口
│ ├── database-manager.ts # 关系型数据库管理
│ └── database-mcp-server.ts # MCP服务器实现
└── package.json
开发构建
# 安装依赖
npm install
# 启动MCP服务器
npm run start-mcp-server