@data_wise/database-mcp

1.0.11 • Public • Published

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

Package Sidebar

Install

npm i @data_wise/database-mcp

Weekly Downloads

12

Version

1.0.11

License

MIT

Unpacked Size

49.9 kB

Total Files

8

Last publish

Collaborators

  • socialman888