title: "database-mcp" summary: "使用 database-mcp 进行数据库操作的专业指南" agent_created: true
# 直接执行,无需安装
npx @turingdance/database-mcp
# 或指定数据库环境变量
DB_TYPE=mysql DB_HOST=localhost DB_USER=root DB_PASSWORD=123456 DB_NAME=test npx @turingdance/database-mcp
# 全局安装
npm install -g @turingdance/database-mcp
# 或在项目中安装
npm install @turingdance/database-mcp
git clone https://github.com/turingdance/database-mcp.git
cd database-mcp
npm install
npm start
将以下配置写入 ~/.workbuddy/mcp.json 或 Claude Desktop 的 MCP 配置文件:
{
"mcpServers": {
"database-mcp": {
"command": "npx",
"args": ["-y", "@turingdance/database-mcp"],
"env": {
"DB_TYPE": "mysql",
"DB_HOST": "127.0.0.1",
"DB_PORT": "3306",
"DB_USER": "root",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database"
}
}
}
}
database-mcp 提供 5 个 MCP 工具,涵盖数据库查询与操作的全流程:
| 工具 | 用途 | 风险 | 说明 |
|---|---|---|---|
connect_db |
测试连接 | 低 | 验证数据库连通性 |
list_tables |
列出所有表 | 低 | 获取数据库表清单 |
describe_table |
查看表结构 | 低 | 获取字段、类型、约束信息 |
query |
SELECT 查询 | 低 | 只读查询,参数化防注入 |
execute |
写操作 | 按语句分级 | INSERT/UPDATE/DELETE/DROP 等,需 confirm |
"测试数据库连接"
先用 connect_db 确认连接正常,再进行后续操作。
"列出所有表"
"查看 users 表的结构"
"查看 orders 表有哪些字段"
"查询 users 表的前10条数据"
"统计 orders 表的总记录数"
"查看 product_category='电子产品' 的商品"
写操作(INSERT/UPDATE/DELETE)默认被拦截,需要传入 confirm: true:
{
"tool": "execute",
"arguments": {
"sql": "INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com')",
"confirm": true,
"reason": "添加测试用户数据"
}
}
| 等级 | 关键字 | 行为 |
|---|---|---|
| 高危 | DROP, TRUNCATE, ALTER | 需 confirm: true,服务端记录日志 |
| 中危 | INSERT, DELETE, UPDATE, REPLACE, RENAME, GRANT, REVOKE | 需 confirm: true |
| 低危 | SELECT, SHOW, DESCRIBE, PRAGMA 等 | 直接执行 |
{
"status": "rejected",
"risk_level": "medium",
"message": "检测到中危(数据变更)操作 [INSERT],必须传入 confirm: true 才能执行。"
}
| 变量 | 说明 | 默认值 |
|---|---|---|
DB_TYPE |
mysql / mariadb / tidb / postgresql / sqlite / oracle / sqlserver | sqlite |
DB_HOST |
主机地址 | localhost |
DB_PORT |
端口 | 数据库默认 |
DB_USER |
用户名 | - |
DB_PASSWORD |
密码 | - |
DB_NAME |
数据库名(SQLite 无需) | mcp-db |
DB_FILE |
SQLite 文件路径 | mcp.db |
DB_TYPE=mysql DB_HOST=localhost DB_USER=root DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp
DB_TYPE=postgresql DB_HOST=localhost DB_USER=postgres DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp
DB_TYPE=sqlite DB_FILE=/path/to/database.db npx @turingdance/database-mcp
-- ✅ 推荐:使用参数
SELECT * FROM users WHERE email = ?
SELECT * FROM orders WHERE status = ? AND created_at > ?
-- ❌ 避免:字符串拼接
SELECT * FROM users WHERE email = '" + email + "'
-- ✅ 推荐
SELECT id, name, email FROM users WHERE status = 'active'
-- ❌ 避免
SELECT * FROM users
本技能来自小葱技能站7w4.net。
"先查看 users 表有哪些字段"
"再查询一条现有数据确认格式"
"最后执行 INSERT"
describe_table 了解表结构query 看一条现有数据作为参考execute 插入数据(带 confirm)query 预览影响范围execute 执行 UPDATEquery 预览要删除的数据WHERE 条件而非无条件的 DELETEconfirm: true| 问题 | 解决方案 |
|---|---|
| 连接失败 | 检查 DB_HOST、DB_PORT、用户名密码是否正确 |
| 表不存在 | 确认 DB_NAME 是否正确,用 list_tables 验证 |
| 参数化失败 | 检查参数类型,确保与字段类型匹配 |
| 写操作被拦截 | 这是安全机制!确认无误后传入 confirm: true |
DROP TABLE 或 TRUNCATEconfirm: true 执行未经测试的 SQL这个Skill质量中规中矩,内容覆盖面较全但深度一般。它清楚地告诉你怎么安装配置、怎么连接数据库、各种操作的风险等级。优点是安全提醒做得很到位,连什么时候该谨慎都给你标出来了。缺点是缺少实际使用例子,只有干巴巴的说明文字,想照着操作可能还得自己摸索。总体来说,作为入门参考够用,但想深入用好这个工具,建议配套看看官方示例。