我一直希望把 AI 编程助手和自己的知识库打通:一边让 Codex 处理代码、命令、配置和文档整理,另一边让 Obsidian 继续作为长期沉淀笔记的地方。真正好用的方式不是手动复制粘贴,而是让 Codex 能直接读取和写入 Obsidian vault。

这篇文章记录一次实际配置过程:通过 MCP 把 Codex 和 Obsidian 连接起来,让 Codex 可以搜索、读取、创建和编辑 Obsidian 笔记。

先理解三个概念

Obsidian 的 vault 本质上是一个普通文件夹,里面保存 Markdown 文件,并且包含一个 .obsidian 配置目录。所以判断某个目录是不是 vault,最直接的方法就是看它下面是否有 .obsidian

Codex 支持通过 MCP 连接外部工具。MCP 可以理解为 Codex 和外部应用之间的工具桥。配置好 MCP 后,Codex 不只是“知道”有 Obsidian,而是能通过工具直接执行读写笔记、搜索 vault、创建目录、管理标签等操作。

obsidian-mcp 是一个现成的 Obsidian MCP 服务器。它不需要复杂配置,启动时把 vault 路径作为参数传进去即可。

第一步:找到真正的 vault 路径

这一步很关键。不要只看 Obsidian 文件夹的上层目录,要找到包含 .obsidian 的那一层。

例如我的目录结构是:

/Users/zzn/Documents/Obsidian
└── zzn
    ├── .obsidian
    ├── 笔记1.md
    └── ...

那么真正的 vault 地址不是:

/Users/zzn/Documents/Obsidian

而是:

/Users/zzn/Documents/Obsidian/zzn

原因很简单:.obsidianzzn 目录里,所以 zzn 才是 vault 根目录。

可以用下面的命令确认:

find /Users/zzn/Documents/Obsidian -maxdepth 2 -name .obsidian -type d -print

如果输出类似:

/Users/zzn/Documents/Obsidian/zzn/.obsidian

那 vault 地址就是:

/Users/zzn/Documents/Obsidian/zzn

第二步:给 Codex 添加 Obsidian MCP

确认 vault 路径后,使用 codex mcp add 添加 MCP 服务器:

codex mcp add obsidian -- npx -y obsidian-mcp "/Users/zzn/Documents/Obsidian/zzn"

这里每一段的含义是:

  • obsidian:给这个 MCP 配置起的名字。

  • npx -y obsidian-mcp:通过 npx 启动 Obsidian MCP 服务。

  • /Users/zzn/Documents/Obsidian/zzn:传给 MCP 服务的 vault 根目录。

如果你有多个 vault,也可以继续追加路径:

codex mcp add obsidian -- npx -y obsidian-mcp "/path/to/vault1" "/path/to/vault2"

第三步:验证配置是否生效

添加完成后,先看 MCP 列表:

codex mcp list

再查看具体配置:

codex mcp get obsidian

正常情况下会看到类似内容:

obsidian
  enabled: true
  transport: stdio
  command: npx
  args: -y obsidian-mcp /Users/zzn/Documents/Obsidian/zzn

这说明 Codex 已经知道有一个名为 obsidian 的 MCP 服务,并且会通过 npx 启动它。

第四步:重启 Codex 或开启新线程

这一点容易漏掉。MCP 配置写入后,当前已经运行中的 Codex 会话不一定立刻加载新工具。

稳妥做法是:

  1. 重启 Codex。

  2. 或者重新打开一个 Codex 线程。

  3. 然后让 Codex 调用 Obsidian MCP 测试,比如列出可用 vault。

如果连接正常,Codex 应该能看到类似:

Available vaults:
  - zzn

这一步成功后,说明 Codex 已经真正连接到了 Obsidian。

连接后能做什么

连接成功后,Codex 可以直接对 Obsidian vault 做很多事情,例如:

  • 搜索某个关键词在哪些笔记里出现过。

  • 读取一篇已有笔记并帮你总结。

  • 创建新笔记,比如博客、周报、学习记录。

  • 编辑已有笔记,补充目录、摘要、标签和 frontmatter。

  • 新建文件夹,整理笔记结构。

  • 给笔记添加或移除标签。

  • 在多个 vault 之间切换操作。

这比单纯把 Obsidian 文件夹作为普通项目打开更方便,因为 Codex 可以通过 MCP 工具理解“vault”“note”“tag”这些 Obsidian 语义,而不是只把它当作一堆文件。

常见问题

1. vault 地址填错了

如果路径不是包含 .obsidian 的目录,obsidian-mcp 会认为这不是一个有效 vault。解决方式是找到 .obsidian 所在目录,把它的上一级作为 vault 路径。

2. MCP 配好了但 Codex 里不能用

通常是当前会话还没加载新 MCP。重启 Codex 或开新线程即可。

3. 路径里有空格怎么办

路径外面加引号:

codex mcp add obsidian -- npx -y obsidian-mcp "/Users/zzn/Documents/My Obsidian Vault"

4. 不想用了怎么删除

可以移除 MCP 配置:

codex mcp remove obsidian

我的最终配置

这次实际使用的 vault 地址是:

/Users/zzn/Documents/Obsidian/zzn

最终配置命令是:

codex mcp add obsidian -- npx -y obsidian-mcp "/Users/zzn/Documents/Obsidian/zzn"

验证命令是:

codex mcp get obsidian

连接成功后,我已经可以让 Codex 直接在 Obsidian 里创建这篇博客。这也说明这条链路已经跑通:Codex 通过 MCP 调用 Obsidian 工具,然后把内容写入本地 vault。

小结

把 Codex 和 Obsidian 连接起来,核心只有三步:

  1. 找到包含 .obsidian 的 vault 根目录。

  2. codex mcp add 添加 obsidian-mcp

  3. 重启 Codex 或开新线程,让新 MCP 工具生效。

完成后,Obsidian 就不只是一个手动写笔记的软件,而可以变成 Codex 的长期知识库和写作空间。代码、配置、踩坑记录、博客草稿、项目文档,都可以由 Codex 直接整理进 vault 里。