Easy DB MCP 服务器
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"database": {
"args": [
"@hyqf98/easy_db_mcp_server"
],
"command": "npx",
"env": {
"EASYDB_ALLOW_DDL": "true",
"EASYDB_ALLOW_WRITE": "true",
"EASYDB_DATABASE": "数据库可选",
"EASYDB_HOST": "localhost",
"EASYDB_PASSWORD": "your_password",
"EASYDB_TYPE": "mysql",
"EASYDB_USER": "root"
}
}
}
}
可用工具 (17 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
create_connection 7 个参数 需填 2 项
Create a new database connection and return its key for use in other tools
必填参数:type、database
list_connections
List all created database connections with their details
该工具无需必填参数,直接调用即可
close_connection 1 个参数 需填 1 项
Close a specific database connection
必填参数:key
close_all_connections
Close all database connections
该工具无需必填参数,直接调用即可
list_tables 1 个参数
List all tables in the database. Use connectionKey to specify which connection to use.
该工具无需必填参数,直接调用即可
describe_table 2 个参数 需填 1 项
Get the structure of a table including columns, types, and constraints.
必填参数:table
execute_query 2 个参数 需填 1 项
Execute a SELECT query (read-only).
必填参数:sql
execute_sql 2 个参数 需填 1 项
Execute any SQL statement (INSERT, UPDATE, DELETE, DDL, etc.). Requires connection to allow write operations.
必填参数:sql
execute_transaction 2 个参数 需填 1 项
Execute multiple SQL statements as a transaction. All queries will succeed or all will be rolled back.
必填参数:sql
batch_insert 3 个参数 需填 2 项
Insert multiple rows into a table efficiently
必填参数:table、data
batch_update 3 个参数 需填 2 项
Update multiple rows in a table based on conditions
必填参数:table、updates
export_data 6 个参数 需填 2 项
Export table data to JSON or CSV file. Default saves to ~/table_name.json
必填参数:table、format
create_table 3 个参数 需填 2 项
Create a new table with specified columns
必填参数:table、columns
drop_table 3 个参数 需填 1 项
Delete a table from the database
必填参数:table
get_table_stats 2 个参数 需填 1 项
Get detailed statistics about a table including row count, columns, indexes, and size
必填参数:table
preview_data 5 个参数 需填 1 项
Preview table data with pagination
必填参数:table
sample_data 3 个参数 需填 1 项
Get a random sample of rows from a table
必填参数:table
服务介绍
EasyDB MCP Server
一个通过 npx 部署的 MCP 服务器,为 AI 助手提供统一的数据库访问接口。
版本
v3.0.0 - 支持动态连接管理,17 个数据库操作工具
支持的数据库
- MySQL (5.7+)
- PostgreSQL (12+)
- SQLite (3+)
快速开始
npx hyqf98@easy_db_mcp_server
配置
环境变量
| 变量 | 必填 | 说明 |
|---|---|---|
EASYDB_TYPE |
否 | 数据库类型:mysql、postgresql 或 sqlite(不设置时需使用 create_connection 工具创建连接) |
EASYDB_HOST |
否 | 数据库主机(MySQL/PostgreSQL 连接时需要) |
EASYDB_PORT |
否 | 数据库端口(默认值:MySQL=3306、PostgreSQL=5432) |
EASYDB_USER |
否 | 数据库用户(MySQL/PostgreSQL 连接时需要) |
EASYDB_PASSWORD |
否 | 数据库密码(MySQL/PostgreSQL 连接时需要) |
EASYDB_DATABASE |
否 | 默认数据库名或 SQLite 文件路径 |
EASYDB_ALLOW_WRITE |
否 | 已弃用(v3.0+ 动态连接始终允许写入) |
EASYDB_ALLOW_DDL |
否 | 已弃用(v3.0+ 动态连接始终允许 DDL) |
配置示例
MySQL:
export EASYDB_TYPE=mysql
export EASYDB_HOST=localhost
export EASYDB_USER=root
export EASYDB_PASSWORD=secret
export EASYDB_DATABASE=mydb
PostgreSQL:
export EASYDB_TYPE=postgresql
export EASYDB_HOST=localhost
export EASYDB_USER=postgres
export EASYDB_PASSWORD=secret
export EASYDB_DATABASE=mydb
SQLite:
export EASYDB_TYPE=sqlite
export EASYDB_DATABASE=/path/to/database.db
Claude Desktop 配置
将以下配置添加到 Claude Desktop 配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["@hyqf98/easy_db_mcp_server"],
"env": {
"EASYDB_TYPE": "mysql",
"EASYDB_HOST": "localhost",
"EASYDB_USER": "root",
"EASYDB_PASSWORD": "your_password",
"EASYDB_DATABASE": "mydb"
}
}
}
}
Claude Code
claude mcp add --scope user --transport stdio easy_db_mcp_server --env EASYDB_TYPE=mysql --env EASYDB_HOST=host --env EASYDB_USER=root --env EASYDB_PASSWORD=123456 -- npx -y @hyqf98/easy_db_mcp_server
可用工具
连接管理工具 (v3.0.0 新增)
create_connection
创建新的数据库连接。
参数:
type(必填):数据库类型(mysql、postgresql或sqlite)host(必填*):数据库主机(MySQL/PostgreSQL 必填)port(可选):端口号(默认值:MySQL=3306、PostgreSQL=5432)user(必填*):用户名(MySQL/PostgreSQL 必填)password(必填*):密码(MySQL/PostgreSQL 必填)database(必填):数据库名或 SQLite 文件路径key(可选):自定义连接 key
返回:
{
"success": true,
"key": "mysql-prod",
"message": "Connection created successfully"
}
list_connections
列出所有已创建的数据库连接。
参数: 无
返回:
{
"connections": [
{
"key": "mysql-prod",
"type": "mysql",
"host": "localhost",
"database": "production",
"createdAt": "2026-02-05T10:00:00Z"
}
],
"count": 1
}
close_connection
关闭指定的数据库连接。
参数:
key(必填):要关闭的连接 key
close_all_connections
关闭所有数据库连接。
参数: 无
基础操作
list_tables
列出数据库中的所有表。
参数:
connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
示例:
请显示数据库中的所有表
describe_table
获取表的结构,包括列、类型和约束。
参数:
table(必填):表名connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
示例:
显示 users 表的结构
execute_query
执行 SELECT 查询(只读)。
参数:
sql(必填):SQL SELECT 查询语句connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
示例:
查找过去 7 天内创建的所有用户
execute_sql
执行任意 SQL 语句。
参数:
sql(必填):SQL 语句connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
批量操作(v2.0.0 新增)
execute_transaction
执行一组 SQL 语句作为事务,失败时自动回滚。
参数:
sql(必填):SQL 语句数组connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
示例:
在事务中插入用户和关联的配置数据
batch_insert
批量插入数据,支持多行一次性插入。
参数:
table(必填):表名data(必填):数据行数组connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
insertedRows:成功插入的行数duplicateRows:重复的行数
示例:
批量插入 100 条用户数据
batch_update
批量更新数据,基于条件更新。
参数:
table(必填):表名updates(必填):set:要更新的列值where:WHERE 条件
connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
affectedRows:受影响的行数
示例:
将所有状态为 inactive 的用户更新为 active
数据管理(v2.0.0 新增)
export_data
导出数据为 JSON/CSV 并保存到文件。
参数:
table(必填):表名format(必填):导出格式(json或csv)filePath(可选):文件保存路径(默认:~/table_name.json)limit(可选):行数限制where(可选):WHERE 条件connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
success:是否成功filePath:实际保存路径rowCount:导出的行数fileSize:文件大小
示例:
导出 users 表为 JSON 文件
create_table
创建表。
参数:
table(必填):表名columns(必填):列定义数组name:列名type:数据类型nullable:是否可空primaryKey:是否为主键defaultValue:默认值
connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
success:是否成功tableName:表名
示例:
创建一个 products 表,包含 id、name、price 列
drop_table
删除表。
参数:
table(必填):表名ifExists(可选):使用 IF EXISTS 避免表不存在时报错connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
success:是否成功tableName:表名
示例:
删除 temp_data 表
数据分析(v2.0.0 新增)
get_table_stats
获取表的统计信息。
参数:
table(必填):表名connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
tableName:表名rowCount:行数columns:列数indexes:索引列表size:表大小
示例:
显示 orders 表的统计信息
preview_data
分页预览表数据。
参数:
table(必填):表名page(可选):页码(默认:1)pageSize(可选):每页行数(默认:50)orderBy(可选):排序列connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
rows:数据行currentPage:当前页码totalPages:总页数totalRows:总行数
示例:
预览 users 表的第 2 页,每页 20 条
sample_data
随机采样数据。
参数:
table(必填):表名count(可选):采样数量(默认:10)connectionKey(可选):连接 key(如果不指定,使用默认连接)
注意: 所有工具都支持 connectionKey 参数来指定使用哪个连接。如果不提供,则使用默认连接(如果有)。
返回:
rows:采样的数据行sampleCount:实际采样数量
示例:
从 orders 表随机采样 5 条数据
安全性
v3.0.0+ 版本中,动态创建的连接默认允许所有操作(读取、写入、DDL)。请在使用 create_connection 工具时确保连接凭据的安全性。
如需限制操作权限,建议在数据库层面配置用户权限。
开发
# 安装依赖
npm install
# 构建
npm run build
# 开发模式运行
npm run dev
# 运行生产构建
npm start
版本历史
v3.0.0
- 新增动态连接管理功能
- 新增 4 个连接管理工具:create_connection, list_connections, close_connection, close_all_connections
- 所有工具支持 connectionKey 参数指定连接
- 移除 EASYDB_ALLOW_WRITE 和 EASYDB_ALLOW_DDL 限制
v2.0.0
- 升级到 MCP SDK 1.25.3
- 迁移到新的 McpServer API
- 新增 9 个工具:execute_transaction, batch_insert, batch_update, export_data, create_table, drop_table, get_table_stats, preview_data, sample_data
- 新增文件工具模块
v1.0.0
- 初始版本
- 支持 MySQL、PostgreSQL、SQLite
- 4 个基础工具:list_tables, describe_table, execute_query, execute_sql
许可证
MIT