mcpField
F
freshvault

freshvault

本地服务
github.com/KIOKO-LAB记忆与知识012 周前更新

关于 freshvault

freshvault 是面向 Obsidian 用户的本地语义搜索 MCP 服务,让 Claude 查询笔记并随文件变化自动更新索引。它使用 Ollama 生成嵌入,笔记始终保留在本机。

主要功能

  1. 01监视文件并增量更新索引
  2. 02使用 Ollama 本地生成嵌入
  3. 03按语义搜索笔记并筛选范围
  4. 04读取笔记及双向链接
  5. 05报告索引新鲜度和监视状态
  6. 06支持多个 Vault

适用场景

  1. 01按主题查找 Obsidian 笔记
  2. 02按标签或修改时间筛选笔记
  3. 03查看笔记全文及其关联链接
  4. 04确认索引同步和监视状态

MCP 相关

这是一个 MCP 服务,提供只读的笔记搜索、笔记上下文和索引状态工具。它监视 Obsidian Vault,在笔记更改后增量更新索引。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kioko-lab-freshvault": {
"command": "npx",
"args": [
"-y",
"freshvault"
],
"env": {
"FRESHVAULT_VAULT": "<FRESHVAULT_VAULT>"
}
}
}
}
启动命令npx -y freshvault
需要配置的环境变量
FRESHVAULT_VAULTAbsolute path to the Obsidian vault (optional if configured via `freshvault setup`)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmfreshvault0.4.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

freshvault

CI npm MCP Registry node

한국어 · 日本語

你的 Obsidian 知识库就是 Claude 的记忆。始终保持最新,始终留在本地。

其他所有知识库搜索 MCP 都需要你重新运行索引命令、守着监控终端,或在 Web 界面中点击“更新索引”。freshvault 在 MCP 服务内部监控你的知识库:编辑一条笔记,几秒后 Claude 就能看到。自动完成,永远如此。

freshvault 演示:保存笔记后,监控器会自动重新索引,几秒后语义搜索即可找到

  • 🔄 无需重新索引——文件监控器运行在服务进程中;启动时会补齐离线期间的更改
  • 🔒 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)

安装

前置条件:Node 20+ 和 Ollama。

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 后,无需配置即可使用。需要时可覆盖默认值:

标志环境变量默认值
--vaultFRESHVAULT_VAULT来自 setup
--modelFRESHVAULT_MODELbge-m3
--ollama-urlFRESHVAULT_OLLAMA_URLhttp://localhost:11434
--dataFRESHVAULT_DATA平台数据目录
—FRESHVAULT_EMBED_APIollama(或 openai)
—FRESHVAULT_EMBED_URLhttp://localhost:1234(openai 模式)
—FRESHVAULT_EMBED_KEY无(openai 模式,可选)
—FRESHVAULT_IGNORE无——例如 Templates/,Daily/**(或在配置中设置 ignore: [])
—FRESHVAULT_LEXICAL_GATEon——对类似代码的查询词进行词法评分;纯稠密检索可设为 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。