1. 为什么我要让 AI 直接读思源笔记的 sqlite
思源笔记用久了,最大的痛点不是记不住,而是记了找不到。我本地攒了快两年的笔记,标签、双链、块引用一大堆,可真要问一句「上个月记的那个关于 MCP 配置的坑在哪」,靠自带搜索基本靠运气。思源的数据其实全躺在工作空间的temp/siyuan.db里,本质就是一个 SQLite 文件,表结构也不复杂,正文大多在blocks表。既然数据是结构化的,那让 AI 通过 MCP 协议去查库、再总结,就是最自然的思路。
MCP(Model Context Protocol)你可以理解成给 AI 装的一个「标准插座」:AI 客户端负责发指令,MCP 服务负责执行具体动作,比如查 SQLite。思源笔记这边我们不需要改任何代码,只要有一个能读 sqlite 的 MCP 服务,把siyuan.db的路径喂给它就行。这篇要解决的就是这条链路怎么用uvx跑起来——uvx是 uv 工具链里用来临时运行 Python 命令行工具的命令,不用你手动 pip install,直接uvx mcp-server-sqlite就能拉起服务。
适合谁看:已经在用思源笔记、想让 AI 帮忙检索和总结笔记、又不想折腾复杂后端的人。全程只需要改两个配置文件,跑一次连接验证,就能让 AI 读到你的笔记数据。下面我按「先讲清楚问题 → 准备 TaoToken → 给可复制配置 → 验证 → 排错 → 收尾」的顺序来,你可以直接照着抄。
2. 前置准备:TaoToken 与 uvx 环境
先说模型侧。MCP 只是通道,真正理解你问题、决定搜什么关键词的是背后的大模型。我这边用的是 TaoToken 提供的模型接入能力,它兼容常见的 OpenAI 风格接口,配置起来省事。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台生成 API Key 即可。API 基址是 https://taotoken.net/api ,注意这个地址不带任何查询参数,直接填就行。
拿到 Key 之后,建议先去模型对话页面确认模型能正常回话,地址是 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。这一步别跳过,因为后面 MCP 报错时,你得先排除「是模型不通还是 MCP 不通」。如果你打算长期用 AI 做编码或 Agent 类任务,可以看下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,按套餐走比单次调用更划算。
工具侧需要两样东西:uv(含 uvx)和一个支持 MCP 的 AI 客户端。uv 的安装很简单,Windows 上用官方脚本或 pip 都行,装完在 PowerShell 里执行:
Get-Command uv | Select-Object -ExpandProperty Source这条命令会打印出 uv 的完整路径,比如C:\Users\你的用户名\.local\bin\uv.exe。记住这个路径,后面配置里command字段要填它,而不是直接写uvx。这是很多人第一次配就翻车的地方——客户端启动子进程时不会走你的 shell PATH,所以必须给绝对路径。
思源这边确认一下工作空间位置,数据库一般在工作空间/temp/siyuan.db。注意思源运行时会占用这个文件,读操作一般没问题,但如果你要写库,最好先停掉思源或者用只读模式,避免锁冲突。
3. 可复制配置:config.toml 与 settings.json 骨架
不同客户端的配置文件名不一样,Cherry Studio 这类用 JSON,一些命令行工具用 TOML。我把两种都给你,按需取用。核心就一段:定义一个名为sqlite-siyuan-rw的 MCP 服务,用 uvx 拉起mcp-server-sqlite,并把--db-path指向你的siyuan.db。
先看 JSON 版本(Cherry Studio 的settings.json里 mcpServers 节点):
{ "mcpServers": { "sqlite-siyuan-rw": { "isActive": true, "command": "C:\\Users\\你的用户名\\.local\\bin\\uvx.exe", "args": [ "mcp-server-sqlite", "--db-path", "C:/Users/你的用户名/SiYuan/temp/siyuan.db" ] } } }再看 TOML 版本(适合支持config.toml的客户端):
[mcp_servers.sqlite-siyuan-rw] command = "C:\\Users\\你的用户名\\.local\\bin\\uvx.exe" args = [ "mcp-server-sqlite", "--db-path", "C:/Users/你的用户名/SiYuan/temp/siyuan.db" ]几个关键点必须说清楚。第一,command一定要写 uvx 的绝对路径,Windows 下路径里的反斜杠在 JSON 里要写成双反斜杠\\,或者干脆用正斜杠/,两种客户端都认。第二,--db-path后面的路径建议用正斜杠,避免转义麻烦。第三,mcp-server-sqlite这个包名是 uvx 运行时自动拉取的,第一次执行会下载依赖,网络慢的话会卡一会儿,耐心等或者按下面排错章节换源。
如果你只想读不想写,可以把服务名里的rw去掉,并在 args 里加只读参数(不同版本参数名略有差异,以uvx mcp-server-sqlite --help输出为准)。我实测下来,读场景下直接连也没出过锁库问题,但养成只读习惯更稳。
配置改完记得完全重启客户端,很多客户端只在启动时加载 MCP 配置,热改不生效。
4. 验证一次完整连接:从提问到命中 blocks 表
配置好之后别急着问复杂问题,先用一个能明确命中的查询验证链路。打开你的 AI 客户端,确认sqlite-siyuan-rw这个服务状态是绿色/已连接。然后给它一句明确的指令,比如:
请查询思源笔记数据库,在 blocks 表里搜索包含「MCP」的内容,返回前 5 条,并总结它们讲了什么。
这里有个细节:虽然你在系统提示词里已经写了「默认在 blocks 表搜索」,但实测下来,提问时再明确提一遍「思源笔记数据库」「blocks 表」,命中率会高很多。原因多半是模型对上下文的理解有偏差,重复一次关键词能显著降低它乱猜表名的概率。我踩过的坑就是第一次没提表名,模型去查了assets表,返回一堆空结果。
如果一切正常,你会看到 AI 先调用 MCP 工具执行 SQL,类似:
SELECT id, content FROM blocks WHERE content LIKE '%MCP%' LIMIT 5;然后基于返回的行做总结。返回结果里content字段是带思源块标记的文本,AI 一般能自己清洗掉标记再总结。到这一步,说明 AI → MCP → sqlite → 思源数据 这条链路已经通了。
想更直观验证,可以自己在客户端里手动触发一次工具调用,看返回的原始 JSON。只要能看到blocks表的数据行,就证明 uvx 启动的服务和数据库路径都没问题。这一步过了,后面才是调提示词、优化搜索关键词的事。
5. 本篇常见错排查
报错一:command 直接填 uvx 启动失败。这是最高频的问题。客户端启动 MCP 子进程时不走系统 PATH,所以必须填绝对路径。用第 2 节那条Get-Command uv拿到路径,填进command。如果路径里有空格,JSON 里不用额外加引号,客户端会自己处理。
报错二:uvx 拉包超时或卡住。首次运行mcp-server-sqlite需要从源拉取,网络不稳就会卡。解决办法是在 args 里加换源参数,比如在mcp-server-sqlite前面插入-i和镜像地址(具体写法以 uv 文档为准),或者先手动执行一次uvx mcp-server-sqlite --help把包缓存下来,再让客户端启动,这样启动时就不用现拉。
报错三:数据库路径找不到或权限拒绝。检查--db-path指向的文件是否真实存在,Windows 下路径分隔符别混用。如果思源正在运行且你开了写模式,可能遇到database is locked,改成只读或先关思源。
报错四:连上了但搜不到内容。先确认你搜的关键词确实在笔记里,再确认表名。思源正文主要在blocks表,但有些内容在attributes或refs表。提问时把表名和库名都带上,能减少模型瞎猜。另外模型本身也会影响判断,换个更强的模型往往立竿见影。
报错五:改了配置没生效。九成是没重启客户端。MCP 配置基本都在启动时读取,改完必须完全退出再打开,不是关窗口那种。
6. 把这条链路用起来
链路跑通之后,真正有价值的是把它变成日常习惯。我的做法是固定几句提示词模板,比如「在思源 blocks 表搜索关键词 X,按修改时间倒序返回 10 条并总结」,这样每次不用重新描述。搜索关键词让模型自己多试几轮,第一次没结果就让它换同义词再搜,比你自己想关键词省事。
模型接入这块,如果你要长期跑检索和总结,建议把 Key 管理好,去控制台创建独立的 API Key:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,别和别的项目混用,方便排查和限额。接入细节和参数说明可以对照文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果你用的是 Claude Code 这类编码 Agent,想让它在写代码时也能查你的笔记库,可以看 ClaudeCodeAnthropic 的接入方式:https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,思路和这里一样,只是客户端换了个壳。
最后提醒一句:MCP 直连生产库这种事别干,思源的siyuan.db是你的知识资产,读可以,写操作一定谨慎,最好在副本上试。把只读链路跑稳,再考虑更复杂的自动化。