SKILL.md
5.69 KB
name: mcp-mysql-and-sql-validation
description: MCP MySQL 使用规范与统计 SQL 验证流程;接口测试后必须查库验证;用户问业务数据时自动查库。在使用 MCP 查库、写统计 SQL 或提交含 SQL 的代码时使用。
MCP MySQL 与 SQL 验证
一、Skills 定位说明(必读)
本 Skills 用于约束 AI 在涉及真实业务数据时的行为,核心目标:
- 让 AI 必须通过 MCP 查询真实数据库
- 让接口测试 必须验证数据库结果
- 让统计 / 报表 必须跑真实 SQL
- 让用户直接问“数据是多少”时,AI 自动查库而不是反问
本 Skills 属于:执行型 + 验证型 + 数据治理型 Skills
目标:杜绝 AI 编数据、假验证、只写 SQL 不执行的问题
二、何时必须使用本 Skills(触发规则)
只要满足以下任一条件,AI 必须使用 MCP 数据库工具。
1️⃣ 接口测试场景(新增 / 编辑 / 删除 / 状态变更)
当 AI 执行或协助以下接口相关操作时:
- 新增数据(Create / Add)
- 编辑数据(Update / Edit)
- 删除数据(Delete / Remove / 作废)
- 状态变更(启用 / 禁用 / 完成 / 关闭)
强制规则
- ✅ 接口执行完成后,必须使用 MCP 查询数据库
- ✅ 验证数据是否真实新增 / 修改 / 删除
- ❌ 禁止只根据接口返回值判断成功
- ❌ 禁止假设数据库已发生变化
✔ 正确行为:“接口返回成功 → MCP 查询表 → 对比数据变化”
2️⃣ 统计 / 报表 / 看板 / 聚合接口
包括但不限于:
- 数量统计(会员数、订单数、开单数)
- 金额统计(开单金额、支付金额、退款金额)
- 汇总指标(合计、平均值、最大值)
- 环比 / 同比 / 增长率
强制规则
- ✅ 编写统计 SQL 后,必须通过 MCP 执行
- ✅ 用真实数据验证结果合理性
- ❌ 禁止“只写 SQL,不执行”
- ❌ 禁止凭经验推断结果
3️⃣ 用户直接询问业务数据(自动触发)
当用户提问符合以下特征时,AI 必须自动查库:
触发特征
- 包含:
多少 / 数量 / 金额 / 总数 / 合计 - 包含明确时间范围:年(如 2026 年)、月(如本月 / 2026-01)、日(如今天 / 昨天)
- 涉及业务实体:会员 / 订单 / 开单 / 门店 / 员工 / 消耗
示例问题
- 2026 年新增会员数量是多少?
- 2026 年开单金额是多少?
- 本月退款总额有多少?
- 今天新增订单数是多少?
强制规则
- ✅ 自动识别为【数据查询问题】
- ✅ 直接使用 MCP 查询数据库
- ❌ 禁止回复“需要查询数据库”
- ❌ 禁止编造、估算或假设数据
三、MCP MySQL 使用规范
1️⃣ 允许的操作范围
- ✅ 只允许:
SELECT - ❌ 禁止:
INSERT / UPDATE / DELETE / TRUNCATE
2️⃣ 表结构查询规范
如需查看表结构,统一使用以下 SQL(将 <表名> 替换为实际表名):
SELECT COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_KEY,
COLUMN_DEFAULT,
EXTRA,
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<表名>';
注意事项:
- 查询表结构时不要加 ORDER BY
- 每次查询只针对一个表
- 避免一次性发送多条 SQL
四、SQL 查询验证规范(统计类)
对统计类型的 SQL(报表、看板、统计接口),在提交代码前必须先用 MCP MySQL 工具执行验证。
验证要求
- [ ] SQL 语法正确,能执行通过
- [ ] 涉及的表、字段存在且类型匹配
- [ ] JOIN 关系正确
- [ ] 统计逻辑与需求一致
- [ ] 用实际数据跑一遍,结果合理
原则
只有验证通过的 SQL 才能提交到代码中。
五、如何通过 MCP 执行 SQL(配置与调用)
1️⃣ 配置文件位置
- 路径:项目根目录下
.cursor/mcp.json - 数据库 MCP 服务名:
my-sql-db
2️⃣ 当前数据库 MCP 配置说明
本项目中 MySQL MCP 使用 @davewind/mysql-mcp-server,连接库为 lqerp_dev。配置示例(仅作参考,以实际 .cursor/mcp.json 为准):
"my-sql-db": {
"command": "npx",
"args": ["--yes", "@davewind/mysql-mcp-server", "mysql://用户:密码@主机:3306/lqerp_dev"]
}
3️⃣ 执行 SQL 的方式
- 工具名称:MCP 提供的 query 工具(在 Cursor 中可能显示为
query或带服务前缀,如与my-sql-db相关)。 - 参数:传入 sql(string),即要执行的 SQL 语句。
- 限制:该 MCP 仅支持 只读,仅可执行 SELECT;所有语句在 READ ONLY 事务中执行,禁止 INSERT/UPDATE/DELETE/DDL。
调用要点:
- 在需要查库、验证接口结果或跑统计 SQL 时,直接调用该 MCP 的 query 工具。
- 传入的
sql必须是合法的 SELECT 语句,一次一条。 - 用返回结果做数据验证或统计核对。
4️⃣ 简单验证示例
- 验证 MCP 连通、可执行 SQL 的示例(在
lqerp_dev下查表数量):
SELECT COUNT(*) AS table_count
FROM information_schema.tables
WHERE table_schema = 'lqerp_dev';
- 查询某表结构(将
<表名>换为实际表名):
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'lqerp_dev' AND TABLE_NAME = '<表名>';
5️⃣ 小结
| 项目 | 说明 |
|---|---|
| 配置 | .cursor/mcp.json,服务名 my-sql-db |
| 执行方式 | 调用 MCP 的 query 工具,参数 sql |
| 允许操作 | 仅 SELECT |
| 数据库 | lqerp_dev |