MCP-Vault
一个用于与Obsidian知识库交互的模型上下文协议(MCP)服务器。该服务器提供了工具,使AI助手能够通过MCP协议对您的Obsidian知识库执行操作。
概述
mcp-vault 将AI助手(如Claude)与您的Obsidian资料库连接起来,使其能够:
- 在您的保险库中移动和重命名文件
- 提取并分析Markdown标题结构
- 通过父级链解析导航标题层次结构
服务器通过(某种方式)与Obsidian进行通信 本地REST API插件 对于文件操作,它直接读取Markdown文件以进行标题分析。
详情
对于 move_file 功能方面,我正在依赖一个插件的分支(来自一个开放的拉取请求),该分支实现了MOVE功能。详见下文:
- 讨论链接:https://github.com/coddingtonbear/obsidian-local-rest-api/discussions/190
- “解决方案”(公开的拉取请求):https://github.com/coddingtonbear/obsidian-local-rest-api/pull/191
- 自定义实现(PR 的基础):https://github.com/mairas/obsidian-local-rest-api/tree/move-only
为了(目前)整体正确使用这个MCP服务器,你需要克隆、编译并使用该分支的“仅移动”分支。 见 用法 以了解更多详情。
请注意,支持 mcp-obsidian 的 patch_content 工具的标题操作在不进行此自定义修改的情况下也能正常工作。
先决条件
- Python >=3.13(Python 版本大于等于 3.13)
- 紫外线 用于依赖管理
- 带有(某种特性或装饰的)黑曜石 本地REST API插件 安装并配置
- 本地REST API插件必须正在运行
localhost:27124
安装
# Clone the repository
git clone https://github.com/phate45/mcp-vault
cd mcp-vault
# Install dependencies
uv sync配置
来自Claude Code的示例 ~/.claude.json:
"mcpServers": {
"mcp-vault": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/home/user/Projects/mcp-vault",
"mcp-vault"
],
"env": {
"VAULT_PATH": "/home/user/Documents/vault/"
}
}
},可以添加到 claude mcp add 因此:
claude mcp add --transport stdio mcp-vault \
--env VAULT_PATH="/home/user/Documents/vault/"
-- uv run --directory "/home/user/Projects/mcp-vault" mcp-vault可用工具
移动文件
使用 Obsidian 本地 REST API 在您的保险库中移动或重命名文件。
论点:
from_path(字符串):源文件路径(相对于保险库根目录)to_path(字符串):目标文件路径(相对于保险库根目录)
用法: 如果你在 Obsidian 之外移动 vault 文件,反向链接将不会被正确更新。这会直接调用 Obsidian API 来确保所有内容都已更新。
列表标题
从文件中提取所有Markdown标题。
参数:
file_path(字符串):Markdown 文件的路径(相对于 vault 根目录)
返回值: 标题列表及其级别(例如。, ## Heading Name)
用法: 使代理能够快速浏览文件结构,而无需将整个文件读入上下文。
指甲标题
获取特定标题的完整父级链,有助于创建明确无误的标题引用。
参数:
file_path(字符串):Markdown 文件的路径(相对于 vault 根目录)heading(字符串):要查找的标题
返回值: 主链的格式 Parent::Child::Target (如果没有任何父级,则仅返回标题名称)
用法: 为mcp-obsidian创建适当的“目标”字符串 obsidian_patch_content 功能。
发展
# Run the server
VAULT_PATH=
uv run mcp-vault然而,我建议直接将服务器添加到Claude或Codex中,并使用MCP工具调用直接在模型上进行“实时”测试。直接测试时,使用“裸露”的stdio接口不太友好。
免责声明
这个项目的部分内容由克劳德·科德撰写。不过,所有内容都经过了我个人的审核,没有遗漏。 人工智能主要用于提供快速反馈/辅助视角,当然,也用于测试服务器本身。
未完成的待办事项
- \[ \] 添加关于使用方法的更详细文档(如插件的自定义编译版本等)
- \[ \] 添加适当的测试(或许可以考虑一些GitHub工作流?)
- \[ \] 解决故障问题?(假设我会等到有人报告问题或者我自己遇到问题时再处理)
- \[ \] 创建一个适当的变更日志(以便持续开发时使用)
- \[ \] 徽章/截图/路线图/其他可欲之物
灵感
如果没有其他几个项目的存在,这个项目是不可能实现的:
- Claudesidian - 集成与自动化的欲望之源:https://github.com/heyitsnoah/claudesidian
- mcp-obsidian - 启发我填补“缺失”部分的集成项目:https://github.com/MarkusPfundstein/mcp-obsidian
- Obsidian-Local-Rest-Api 插件 - 强大的赋能工具:https://github.com/coddingtonbear/obsidian-local-rest-api
许可证
麻省理工(MIT)——随你怎么用,让它成为你自己的。
