Obsidian笔记AI接口服务

一个为AI助手提供Obsidian笔记库读写搜索功能的接口服务,支持全库操作、安全防护和高效交互。

  • by taigrr
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 taigrr/obsidian-mcp

使用说明

黑曜岩mcp

一个模型上下文协议(MCP)服务器,使AI助手能够读取、写入和搜索您的黑曜石保险库。

特性

  • 完全访问保险库 --读取、写入、编辑、删除、重命名、列出和搜索笔记
  • 保险库发现 --打开笔记前浏览文件夹
  • 前线支援 --无缝解析和更新YAML frontmatter
  • 安全第一 --防止路径遍历、阻止系统目录、安全默认值
  • 令牌优化 --紧凑的JSON响应,实现高效的AI交互
  • 通用兼容性 --适用于任何兼容MCP的AI(Claude、ChatGPT等)

安装

go install github.com/taigrr/obsidian-mcp/cmd/obsidian-mcp@latest

或者从源代码构建:

git clone https://github.com/taigrr/obsidian-mcp.git
cd obsidian-mcp
go build -o obsidian-mcp ./cmd/obsidian-mcp

用法

obsidian-mcp /path/to/your/vault

MCP配置

添加到MCP客户端配置中:

{
  "mcpServers": {
    "obsidian": {
      "command": "obsidian-mcp",
      "args": ["/path/to/your/vault"]
    }
  }
}

工具

工具 说明
read 阅读一篇有标题和内容的笔记。支持分页。
write 用内容和可选的封面创建或覆盖笔记。
edit 替换现有注释中的文本和/或更新前体字段。
delete 删除注释(需要确认)。
rename 将注释移动或重命名到新路径。
search 支持正则表达式的全文搜索。返回与上下文匹配的结果。
related 通过标签或维基链接查找相关笔记。
tags 列出整个保险库中的所有唯一标签(正面和内联)。
list 列出vault目录中的文件和子目录。

示例

阅读笔记

{
  "tool": "read",
  "arguments": {
    "path": "notes/my-note.md"
  }
}

用frontmatter写笔记

{
  "tool": "write",
  "arguments": {
    "path": "notes/new-note.md",
    "content": "# My Note\n\nThis is the content.",
    "frontmatter": {
      "tags": ["idea", "project"],
      "status": "draft"
    }
  }
}

搜索保险库

{
  "tool": "search",
  "arguments": {
    "query": "TODO",
    "contextLines": 2
  }
}

列出文件夹

{
  "tool": "list",
  "arguments": {
    "path": "projects"
  }
}

编辑笔记

{
  "tool": "edit",
  "arguments": {
    "path": "notes/my-note.md",
    "oldText": "draft",
    "newText": "published",
    "frontmatter": {
      "status": "published"
    }
  }
}

安全

  • 路径过滤 --阻止访问 .obsidian/, .git/, node_modules/,以及系统文件
  • 文件类型限制 --仅允许 .md, .markdown,以及 .txt 文件
  • 路径遍历预防 --所有路径都经过验证,可以保持在vault边界内
  • 需要确认 --破坏性操作需要明确确认

发展

go build ./...        # Build
go test ./...         # Test
go vet ./...          # Lint

许可证

0BSD -Tai Groot