一个基于 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
-
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["@data_wise/database-mcp"],
"env": {}
}
}
}
请求格式:
{}
响应格式:
{
"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
}
}
请求格式:
{
"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' 已成功添加并连接"
}
请求格式(测试已存在的连接):
{
"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": "数据库连接测试成功"
}
请求格式:
{
"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' 已成功更新并重新连接"
}
请求格式:
{
"dbName": "main"
}
响应格式:
{
"success": true,
"data": [
"users",
"products",
"orders",
"categories"
],
"metadata": {
"dbName": "main",
"count": 4
}
}
请求格式:
{
"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"
}
}
请求格式:
{
"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"]
}
}
请求格式:
{
"name": "old_db"
}
响应格式:
{
"success": true,
"data": {
"name": "old_db",
"deleted": true
},
"message": "数据库连接 'old_db' 已成功删除"
}
请求格式:
{
"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