关于 MCP server for Obsidian
通过 Obsidian Local REST API 社区插件与 Obsidian 库交互的 MCP 服务。适合希望让 AI 客户端读取、搜索和编辑笔记的用户,可在 Claude Desktop 等客户端中使用。
主要功能
- 01列出库中的文件与目录
- 02读取单个笔记内容
- 03全文搜索库中的文档
- 04按标题、块引用或 frontmatter 字段插入内容
- 05追加内容到新建或已有文件
- 06删除库中的文件或目录
适用场景
- 01让 AI 总结会议记录并生成新笔记
- 02在整个库中搜索某个主题并解释上下文
- 03在笔记指定标题下插入内容
MCP 相关
该项目是 MCP 服务,将 Obsidian 库的文件读取、搜索与编辑能力以工具形式提供给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Obsidian MCP 服务
通过 Local REST API 社区插件与 Obsidian 交互的 MCP 服务。
组件
工具
该服务实现了多个用于与 Obsidian 交互的工具:
- list_files_in_vault:列出 Obsidian 库根目录中的所有文件和目录
- list_files_in_dir:列出指定 Obsidian 目录中的所有文件和目录
- get_file_contents:返回库中单个文件的内容。
- search:在库中的所有文件内搜索与指定文本查询匹配的文档
- patch_content:相对于标题、块引用或 frontmatter 字段,在现有笔记中插入内容。
- append_content:将内容追加到库中的新文件或现有文件。
- delete_file:删除库中的文件或目录。
示例提示词
最好先指示 Claude 使用 Obsidian。这样它就会始终调用该工具。
然后使用如下提示词:
- 获取最近一次架构讨论笔记的内容并进行总结
- 搜索所有提及 Azure CosmosDb 的文件,并快速向我说明提及它的上下文
- 总结最近的会议笔记,并将其放入名为“summary meeting.md”的新笔记中。添加一段简介,以便我通过电子邮件发送。
要求
- Python >= 3.11
mcpPython SDK>=1.1.0,<2.0.0(在pyproject.toml中固定)。mcp-obsidian当前通过mcp1.x 低级ServerAPI(@app.list_tools()/@app.call_tool())注册工具处理程序,而该 API 已在mcp2.0 中移除。如果安装不受版本限制的mcp>=2.0,导入时会因AttributeError: 'Server' object has no attribute 'list_tools'而崩溃。
配置
Obsidian REST API 密钥
配置 Obsidian REST API 密钥有两种方式。
- 添加到服务配置中(推荐)
{
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<your_api_key_here>",
"OBSIDIAN_HOST": "<your_obsidian_host>",
"OBSIDIAN_PORT": "<your_obsidian_port>"
}
}
}
有时 Claude 无法检测到 uv / uvx 的位置。在这种情况下,可以使用 which uvx 查找完整路径,并将其粘贴到上面的配置中。
- 在工作目录中创建
.env文件,并填写以下必需变量:
OBSIDIAN_API_KEY=your_api_key_here
OBSIDIAN_HOST=your_obsidian_host
OBSIDIAN_PORT=your_obsidian_port
注意:
- 可以在 Obsidian 插件配置中找到 API 密钥
- 如果未指定,默认端口为 27124
- 如果未指定,默认主机为 127.0.0.1
快速开始
安装
Obsidian REST API
需要运行 Obsidian REST API 社区插件:https://github.com/coddingtonbear/obsidian-local-rest-api
在设置中安装并启用该插件,然后复制 API 密钥。
Claude Desktop
MacOS:~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
开发/未发布服务配置
{
"mcpServers": {
"mcp-obsidian": {
"command": "uv",
"args": [
"--directory",
"<dir_to>/mcp-obsidian",
"run",
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<your_api_key_here>",
"OBSIDIAN_HOST": "<your_obsidian_host>",
"OBSIDIAN_PORT": "<your_obsidian_port>"
}
}
}
}
已发布服务配置
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
"OBSIDIAN_HOST": "<your_obsidian_host>",
"OBSIDIAN_PORT": "<your_obsidian_port>"
}
}
}
}
Docker
你可以在容器中运行该服务,而不必在本地安装 uv/Python。
- 将
.env.example复制为.env,并填写 Obsidian REST API 密钥:
cp .env.example .env
默认情况下,OBSIDIAN_HOST 设置为 host.docker.internal,它会在容器内解析为
你的主机(适用于 Linux、Mac 和 Windows)。
- 构建镜像:
docker compose build
- 将 MCP 客户端指向该容器。由于 MCP 使用标准输入/输出传输 JSON-RPC,
客户端必须在标准输入已连接且不使用伪终端的情况下运行它——请使用
docker compose run --rm -T,而不是docker compose up:
{
"mcpServers": {
"mcp-obsidian": {
"command": "docker",
"args": [
"compose",
"-f",
"<dir_to>/mcp-obsidian/docker-compose.yml",
"run",
"--rm",
"-T",
"mcp-obsidian"
]
}
}
}
你也可以手动运行它,以确认容器能正常启动:
docker compose run --rm -T mcp-obsidian
(它会等待从标准输入接收 JSON-RPC 消息;按 Ctrl+C 退出)
开发
构建
准备分发软件包:
- 同步依赖项并更新锁文件:
uv sync
调试
由于 MCP 服务通过 stdio 运行,调试可能会比较困难。为了获得最佳调试体验,我们强烈建议使用 MCP Inspector。
你可以通过 npm 使用以下命令启动 MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-obsidian run mcp-obsidian
启动后,Inspector 会显示一个 URL,你可以在浏览器中访问该 URL 并开始调试。
你也可以使用以下命令查看服务日志:
tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-obsidian.log
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。