(server: McpServer)
| 38 | // 来源:链滴 |
| 39 | // 协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/ |
| 40 | export function registerSQLQueryTool(server: McpServer) { |
| 41 | server.tool( |
| 42 | 'siyuan_query_sql', |
| 43 | `思源 SQL 查询工具 - 执行 SQLite 查询语句 |
| 44 | |
| 45 | 你是思源小助手,你需要根据用户需求,编写符合思源笔记数据库结构的 SQL 查询语句。在必要时,解释查询结果的含义和用途。 |
| 46 | |
| 47 | 要求 |
| 48 | SQL 语法规范: |
| 49 | |
| 50 | 在默认的情况下,用户可以在思源的嵌入块中输入 SQL 代码查询,此时 SQL 查询语句必须以 select * from blocks 开头:只允许查询 block 表,且不允许单独查询字段 |
| 51 | 面向开发者的高级用法:用户还可以调用后端 API 接口,发送 SQL 查询,此时是可以使用更普遍的 SQL 语法结构的(查询别的表,返回特定字段) |
| 52 | 使用 SQLite 的语法,如 strftime 函数处理时间。 |
| 53 | 默认情况下,查询结果最多返回 64 个块,除非明确指定了 limit xxx |
| 54 | 输出:将查询语句放在一个 \`\`\`SQL 的 markdown 代码块当中,方便用户直接复制 |
| 55 | |
| 56 | 表结构 |
| 57 | blocks 表: |
| 58 | |
| 59 | id: 内容块 ID,格式为 时间-随机字符,例如 20210104091228-d0rzbmm。 |
| 60 | |
| 61 | parent_id: 双亲块 ID,格式同 id |
| 62 | |
| 63 | root_id: 文档块 ID,格式同 id |
| 64 | |
| 65 | box: 笔记本 ID,格式同 id |
| 66 | |
| 67 | path: 内容块所在文档路径,例如 /20200812220555-lj3enxa/20210808180320-abz7w6k/20200825162036-4dx365o.sy |
| 68 | |
| 69 | hpath: 人类可读的内容块所在文档路径,例如 /0 请从这里开始/编辑器/排版元素 |
| 70 | |
| 71 | name: 内容块名称 |
| 72 | |
| 73 | alias: 内容块别名 |
| 74 | |
| 75 | memo: 内容块备注 |
| 76 | |
| 77 | tag: 标签,例如 #标签1 #标签2# #标签3# |
| 78 | |
| 79 | content: 去除了 Markdown 标记符的文本 |
| 80 | |
| 81 | fcontent: 存储容器块第一个子块的内容 |
| 82 | |
| 83 | markdown: 包含完整 Markdown 标记符的文本 |
| 84 | |
| 85 | length: markdown 字段文本长度 |
| 86 | |
| 87 | type: 内容块类型 |
| 88 | |
| 89 | d: 文档, h: 标题, m: 数学公式, c: 代码块, t: 表格块, l: 列表块, b: 引述块, s: 超级块,p:段落块,av:树形视图(俗称数据库,注意区分,这只是一个内容块的叫法) |
| 90 | subtype: 特定类型的内容块还存在子类型 |
| 91 | |
| 92 | 标题块的 h1 到 h6 |
| 93 | 列表块的 u (无序), t (任务), o (有序) |
| 94 | ial: 内联属性列表,形如 {: name="value"},例如 {: id="20210104091228-d0rzbmm" updated="20210604222535"} |
| 95 | |
| 96 | sort: 排序权重,数值越小排序越靠前 |
| 97 |
no test coverage detected