我一直希望把 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
原因很简单:.obsidian 在 zzn 目录里,所以 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 会话不一定立刻加载新工具。
稳妥做法是:
重启 Codex。
或者重新打开一个 Codex 线程。
然后让 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 连接起来,核心只有三步:
找到包含
.obsidian的 vault 根目录。用
codex mcp add添加obsidian-mcp。重启 Codex 或开新线程,让新 MCP 工具生效。
完成后,Obsidian 就不只是一个手动写笔记的软件,而可以变成 Codex 的长期知识库和写作空间。代码、配置、踩坑记录、博客草稿、项目文档,都可以由 Codex 直接整理进 vault 里。
评论交流
欢迎留下你的想法