Skip to content

Latest commit

 

History

History
136 lines (96 loc) · 5.79 KB

File metadata and controls

136 lines (96 loc) · 5.79 KB

Cursor MCP 工具使用规范

本文件用于在 Cursor 的 Rules 中约束 AI 助手如何调用本项目的数据库 MCP 工具。工具定义以 src/mcp/tools.py 为准;人类可读说明见 README.mddocs/MCP客户端调用说明.md


核心原则

  1. 先查连接,再操作 — 不知道 connection_id 时必须先调 list_connections,禁止猜测 ID
  2. 逐层探索 — 按 list_connectionslist_databaseslist_tablesdescribe_table 的顺序探索
  3. 只读优先 — 查询用 execute_query,写入/DDL 用 execute_sql(需确认权限)
  4. 默认数据库 — 大部分工具的 database 参数可选,不传则使用连接的默认数据库
  5. 结果要可读execute_query 返回行数据时,优先以“摘要 + 示例行”展示,避免一次性铺满长表
  6. 大表慎用execute_query 必须带 LIMIT;不确定数据量时先 COUNT(*) 或先查主键范围
  7. 下载优先 — 文档/ER/数据流/报表等大结果优先用 OSS 下载链接,禁止在对话中粘贴超大内容
  8. 明确告知 — 每次工具调用后向用户说明:工具名、connection_iddatabase、关键参数与结果摘要

支持的数据库类型mysqlpostgresqllist_connectionssearch 可用 "mysql" / "postgres" / 连接名关键词)。


Cursor 使用要点(重要)

  1. Cursor 会自动先调 tools/list:首次接入时需等工具列表返回后再继续后续动作;如果工具列表失败,先排查 MCP 连接与访问密钥权限
  2. resource 类型结果不要复制 Base64:当工具返回 PDF/文件的 resource 时,只提示“已生成文件,可在 Cursor 的资源/下载处保存”
  3. 优先短响应:对 Cursor 的消息显示更友好的是“结构化短文 + 链接”,避免超长 Markdown 导致渲染卡顿
  4. 长任务要提示等待:如生成 ER 图、导出数据字典、执行长 SQL,先提示“正在执行,可能需要等待”,再给结果摘要或链接

工具速查表(20 个)

工具 用途 必需参数 权限 备注
list_connections 列出可用连接 - Cursor 会在会话开始频繁用到
list_databases 列出数据库 connection_id
list_tables 列出表 connection_id
list_views 列出视图 connection_id
list_procedures 列出存储过程 connection_id
describe_table 查看表结构 connection_id, table
execute_query 执行 SELECT connection_id, sql 必须带 LIMIT
execute_sql 执行任意 SQL connection_id, sql 写/DDL 高风险操作先确认
export_db_doc 导出数据字典 connection_id 大库优先上传 OSS
generate_er_diagram 生成 ER 图 connection_id 表多时 include_columns=false
generate_data_flow 生成数据流图 connection_id
suggest_columns 字段添加建议 connection_id, table 可选 LLM
analyze_performance 性能分析 connection_id 可选 LLM
analyze_sql SQL 审查 connection_id, sql 可选 LLM
analyze_db_config 参数调优分析 connection_id 可选 LLM
compare_schemas Schema 对比 source_connection_id, target_connection_id
generate_mock_data 生成测试 INSERT connection_id, table
backup_table 表级 CTAS 备份 connection_id, table DDL
generate_db_rule 生成 RULE.md connection_id 会写入 rules/ 与管理库
render_report_oss 报表上传 OSS connection_id, source, fields 必须给 download_url

一、标准探索流程(推荐)

1.1 找到正确连接

先调用 list_connections,若用户提到系统名/库名,用 search 过滤。

{"search": "postgres"}

拿到连接后,明确告诉用户选中的 connection_id

1.2 确认库与表

{"connection_id": 1}

然后列出库或表:

{"connection_id": 1, "database": "mydb"}

1.3 看表结构再写 SQL

{"connection_id": 1, "database": "mydb", "table": "users"}

二、查询规范(execute_query)

  1. SELECT 必须带 LIMIT(默认不超过 100)
  2. 用户未提供 LIMIT 时,由 AI 自动补充
  3. 结果展示采用:
    • 行数统计
    • 字段名列表
    • 1~5 行示例
{"connection_id": 1, "sql": "SELECT * FROM users ORDER BY id DESC LIMIT 20"}

三、写入/DDL 规范(execute_sql)

  1. 执行前先说明:将要修改的对象、影响范围、是否可回滚
  2. DELETE / UPDATE 无 WHERE、TRUNCATEDROP 必须提示风险并让用户明确确认
  3. 大变更建议先 backup_table(如权限允许)

四、文档/图表/报表(优先 OSS 链接)

4.1 export_db_doc / generate_er_diagram / generate_data_flow

  1. 库表很多时优先 format="pdf" + upload_to_oss=true
  2. 返回后只给下载链接与生成摘要,不要粘贴大段内容

4.2 render_report_oss

  1. 报表字段与来源表要明确,尽量在调用前先 describe_table
  2. 必须设置 limit,避免导出过大导致后端卡顿
  3. 成功后必须给出可点击的下载链接字段(如 download_url

五、失败处理(Cursor 常见场景)

  1. list_connections 返回空:
    • 提示用户去管理后台检查:访问密钥是否已授权连接、是否启用
  2. tools/list 失败:
    • 提示检查 MCP 连接配置、访问密钥、服务健康检查 /health
  3. SQL 被拒:
    • 提示:权限不足或风险拦截;必要时建议用户用只读 SQL 或联系管理员调整权限