关于 freshvault
freshvault 是面向 Obsidian 用户的本地语义搜索 MCP 服务,让 Claude 查询笔记并随文件变化自动更新索引。它使用 Ollama 生成嵌入,笔记始终保留在本机。
主要功能
- 01监视文件并增量更新索引
- 02使用 Ollama 本地生成嵌入
- 03按语义搜索笔记并筛选范围
- 04读取笔记及双向链接
- 05报告索引新鲜度和监视状态
- 06支持多个 Vault
适用场景
- 01按主题查找 Obsidian 笔记
- 02按标签或修改时间筛选笔记
- 03查看笔记全文及其关联链接
- 04确认索引同步和监视状态
MCP 相关
这是一个 MCP 服务,提供只读的笔记搜索、笔记上下文和索引状态工具。它监视 Obsidian Vault,在笔记更改后增量更新索引。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
freshvault
你的 Obsidian 知识库就是 Claude 的记忆。始终保持最新,始终留在本地。
其他所有知识库搜索 MCP 都需要你重新运行索引命令、守着监控终端,或在 Web 界面中点击“更新索引”。freshvault 在 MCP 服务内部监控你的知识库:编辑一条笔记,几秒后 Claude 就能看到。自动完成,永远如此。

- 🔄 无需重新索引——文件监控器运行在服务进程中;启动时会补齐离线期间的更改
- 🔒 100% 本地运行——通过 Ollama(
bge-m3)生成嵌入,你的笔记绝不会离开你的设备 - 🌏 默认支持多语言——
bge-m3支持韩语、日语及 100 多种语言,而仅支持英语的默认方案无法做到这一点 - 🎯 由基准测试驱动的检索——无条件融合 BM25 会严重损害韩语释义查询(top-1 从 82.5% 降至 47.5%),因此已关闭;纯稠密检索则完全无法命中标识符查询(57.1%),所以也没有弃用。词法评分仅在查询词元类似代码时启用:释义查询 82.5% → 82.5%(不变),标识符查询 57.1% → 100% — 测试结果
- 🪶 无需向量数据库、Docker 或 Python——JSON 元数据 + Float32 sidecar,纯 Node,源代码一眼就能看完
- 🧠 遵循句子边界的分块——剥离 YAML frontmatter,按段落/句子边界拆分(支持 CJK)
安装
npx -y freshvault setup
就这么简单。向导会检测你的 Obsidian 知识库、拉取嵌入模型、构建索引,并注册到 Claude Code。没有第二步,以后也永远不需要第二步:无需重新运行 index 命令,无需监控终端,也无需后台服务。
手动安装(Claude Desktop / Cursor / Windsurf)
{
"mcpServers": {
"freshvault": {
"command": "npx",
"args": ["-y", "freshvault", "serve"],
"env": { "FRESHVAULT_VAULT": "/absolute/path/to/your/vault" }
}
}
}
Claude Code 一行命令:
claude mcp add freshvault -s user -- npx -y freshvault serve
使用
直接向 Claude 询问你的笔记:
“搜索我的笔记,查找我写过的缓存淘汰策略”
三个工具,全部只读:
| 工具 | 作用 |
|---|---|
search_notes | 语义搜索 + 可按 folder / tags / modified_after / modified_before 限定范围;提升精确标题查询的排序;每条笔记最多返回 2 个分块,避免一条长笔记占据所有结果(max_per_file) |
get_note_context | 获取完整笔记及其知识库链接图中的反向链接/外链(可安全防止路径遍历) |
index_status | 新鲜度报告:笔记数/分块数、排除数量、上次同步时间、监控器状态 |
竞品需要通过设置或付费墙才能使用的范围限定查询,在这里可以按查询逐次使用:
“搜索我标记为 #project 且在 6 月之后修改过的笔记,查找预算讨论”
工作原理
Obsidian vault ──fs.watch──▶ freshvault MCP server ──search_notes──▶ Claude
(.md files) (chunks → bge-m3 embeddings (generation)
→ one JSON index, incremental)
- 增量式:只对已更改或已删除的笔记重新生成嵌入向量(比较修改时间和大小),防抖时间为 4 秒
- 安全保障:每 60 秒进行一次修改时间扫描,捕获监视器遗漏的事件(网络驱动器、使用原子重命名的编辑器)
- 支持多客户端安全使用:第一个启动的服务进程成为写入者(通过心跳维持锁);其他进程作为读取者热重载,并在写入者退出时提升为写入者
- 事务性:即使索引期间嵌入服务中断,也绝不会丢失或损坏笔记
- 可扩展性:向量存储在紧凑的 Float32 旁路文件中(启动快、体积小);对数千个文本块进行暴力余弦相似度计算只需几毫秒。坦诚地说:搜索仍是线性搜索——数万个文本块也能在 100 毫秒内完成,但它不能替代用于超大型语料库的向量数据库
多个知识库
每个知识库注册一个服务——索引文件会自动按知识库分别保存:
claude mcp add work-vault -s user -e FRESHVAULT_VAULT=/path/to/work -- npx -y freshvault serve
claude mcp add personal-vault -s user -e FRESHVAULT_VAULT=/path/to/personal -- npx -y freshvault serve
其他嵌入服务(LM Studio、LiteLLM、兼容 OpenAI 的服务)
FRESHVAULT_EMBED_API=openai FRESHVAULT_EMBED_URL=http://localhost:1234 npx -y freshvault serve
任何支持 /v1/embeddings 的服务都能使用;对于需要身份验证的端点,可使用 FRESHVAULT_EMBED_KEY(绝不会写入配置文件)。
配置
运行 setup 后,无需配置即可使用。需要时可覆盖默认值:
| 标志 | 环境变量 | 默认值 |
|---|---|---|
--vault | FRESHVAULT_VAULT | 来自 setup |
--model | FRESHVAULT_MODEL | bge-m3 |
--ollama-url | FRESHVAULT_OLLAMA_URL | http://localhost:11434 |
--data | FRESHVAULT_DATA | 平台数据目录 |
| — | FRESHVAULT_EMBED_API | ollama(或 openai) |
| — | FRESHVAULT_EMBED_URL | http://localhost:1234(openai 模式) |
| — | FRESHVAULT_EMBED_KEY | 无(openai 模式,可选) |
| — | FRESHVAULT_IGNORE | 无——例如 Templates/,Daily/**(或在配置中设置 ignore: []) |
| — | FRESHVAULT_LEXICAL_GATE | on——对类似代码的查询词进行词法评分;纯稠密检索可设为 off(或在配置中设置 lexicalGate: false) |
命令:setup · serve(默认)· index(手动备用选项)· status
忽略模式
模式遵循 gitignore 语义,并根据知识库相对路径进行匹配:
| 模式 | 排除内容 |
|---|---|
Templates/ | 任意深度下的所有 Templates 目录——Templates/、work/Templates/ |
/Templates | 仅排除知识库根目录下的 Templates/ |
Daily/** | 仅排除根目录下 Daily/ 中的所有内容——其中的斜杠会将模式锚定到根目录 |
**/Daily/** | 排除任意深度下所有 Daily/ 中的内容 |
*.excalidraw.md | 任意深度下具有该文件名的文件 |
work/wip.md | 相对于知识库根目录的精确路径 |
- 除末尾之外,模式中任意位置的斜杠都会将模式锚定到知识库根目录。末尾的斜杠只表示“目录”——不会将模式锚定到根目录。
*和?不会跨越/。**只有作为完整路径段时才会跨越目录(**/x、x/**、x/**/y);如果与路径段相连,则会像 git 一样折叠为单个*。- 匹配以路径段边界为止——
Templates永远不会匹配TemplatesOld。 - 不支持
!取反和字符类;此类模式不会匹配任何内容。 FRESHVAULT_IGNORE使用逗号分隔,因此模式中不能包含逗号。
自 v0.3.0 起的行为变更。 v0.3.0 将末尾的斜杠视为根目录锚点,因此
Templates/只会排除知识库根目录下的Templates/,并悄无声息地索引所有嵌套目录——没有警告,只会悄悄污染索引。现在,形如Templates/、/Templates、**/x和a/**/b的模式会比以前排除更多内容(/Templates以前完全不匹配)。反过来,嵌在路径段中的**(Daily**md)现在不会再跨越/。升级后运行freshvault status,如果你在意排除数量,请对比查看。
基准测试
项目仓库中附带两个检索微基准(node scripts/bench.mjs):ko-bench(30 条韩语笔记,40 个释义查询)和 id-bench(38 条技术笔记,14 个标识符查询)。两者均采用三种评分模式运行——密集、始终混合,以及随附的门控模式——脚本本身会检查是否符合无回退约定。结果和 bge-m3-ko(top-1 准确率 85.0%,634MB)的导入指南见 docs/ko-bench.md。
路线图
- 用于一键安装 Claude Desktop 的 MCPB 包
- 面向大型知识库的重排序环节
- 在建立索引时提取 PDF 文本
许可证
MIT © Kioko Lab
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。