数据库MCP技能
概述
本技能通过Python脚本连接SQLite数据库执行查询操作,支持多种数据库类型,提供安全的数据访问能力。
快速开始
1. 查看数据库中的表
python <skill_path>/scripts/db_mcp_helper.py query "SELECT name FROM sqlite_master WHERE type='table';"
2. 列出所有表
python <skill_path>/scripts/db_mcp_helper.py list-tables
3. 查看表结构
python <skill_path>/scripts/db_mcp_helper.py describe-table <表名>
4. 执行查询
python <skill_path>/scripts/db_mcp_helper.py query "SELECT * FROM 表名 LIMIT 10"
使用示例
示例:查询用户表
python skills/db-connect-utils/scripts/db_mcp_helper.py query "SELECT * FROM users LIMIT 5"
输出:
{
"success": true,
"columns": ["id", "name", "email", "age"],
"rows": [[1, "张三", "zhangsan@example.com", 25]],
"count": 1
}
示例:查看表结构
python skills/db-connect-utils/scripts/db_mcp_helper.py describe-table users
安全特性
| 特性 | 说明 |
|------|------|
| 只读模式 | 默认只允许SELECT查询 |
| 禁止危险SQL | 自动拦截DELETE、DROP、ALTER等危险操作 |
| 内存数据库 | 默认使用 :memory: SQLite,数据不落地 |
配置文件(可选)
如需持久化存储,可创建SQLite数据库文件:
# 创建数据库文件
python -c "import sqlite3; conn = sqlite3.connect('agent.db'); conn.close()"
# 查询文件数据库
python skills/db-connect-utils/scripts/db_mcp_helper.py query "SELECT * FROM users" "agent.db"
环境变量(.env)
# 数据库密码(如需连接其他数据库)
DB_PASSWORD=your_password_here
PG_PASSWORD=your_pg_password_here
注意:SQLite内存库不需要密码。
完整示例
import sqlite3
import json
# 创建示例数据
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
# 创建表
cursor.execute('''CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
age INTEGER
)''')
# 插入数据
users = [
(1, '张三', 'zhangsan@example.com', 25),
(2, '李四', 'lisi@example.com', 30),
]
cursor.executemany('INSERT INTO users VALUES (?, ?, ?, ?)', users)
conn.commit()
# 查询
cursor.execute('SELECT * FROM users')
results = cursor.fetchall()
print(json.dumps(results, indent=2))
注意事项
- 本技能默认使用内存SQLite,数据在进程关闭后自动销毁
- 严格遵守只读规则,防止误删数据
- 如需持久化数据,请使用文件路径代替
:memory: - 本技能仅用于个人学习和调试
微信扫一扫