语义搜索服务器

Obsidian MCP Server for OpenCode是一个本地语义搜索服务器,通过本地嵌入和SQLite向量存储为Obsidian库提供语义搜索功能。

  • by tsujie
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 tsujie/obsidian-mcp-for-opencode

使用说明

用于OpenCode的黑曜石MCP服务器

本地MCP(模型上下文协议)服务器,使用本地嵌入和SQLite向量存储在黑曜石保险库上提供语义搜索。

特性

  • 语义搜索 --按含义查找笔记,而不仅仅是关键字
  • 完全本地化 -没有API密钥,没有云服务。嵌入在您的机器上运行
  • 增量索引 --仅重新嵌入已更改的文件(基于内容的更改检测)
  • 孤儿清理 --自动从索引中删除已删除/重命名的文件
  • Markdown感知分块 --尊重标题、正文和文档结构
  • 标签支持 --按黑曜石标签搜索和过滤(frontmatter+内联)
  • 轻量级 --基于SQLite,无需Docker或外部数据库

设置

npm install
npm run build

配置

环境变量 默认值 描述
OBSIDIAN_VAULT_PATH (必填) 黑曜石保险库的路径
OBSIDIAN_IGNORED_KEYS 查看时间,修改日期 逗号分隔的前体键,用于更改检测

这 OBSIDIAN_IGNORED_KEYS 设置允许您从内容哈希计算中排除volatile frontmatter字段。当只有元数据(如视图计数或修改时间戳)发生变化时,这可以防止不必要的重新索引,同时仍然检测到实际的内容变化。

用法

索引数据库

OBSIDIAN_VAULT_PATH=/path/to/vault npm run index

独立

# Via environment variable
OBSIDIAN_VAULT_PATH=/path/to/vault npm start

# Via CLI argument
node dist/index.js /path/to/vault

使用OpenCode

添加到您的 opencode.json:

{
  "mcp": {
    "obsidian-mcp": {
      "type": "local",
      "command": ["node", "/path/to/obsidian-mcp-for-opencode/dist/index.js"],
      "environment": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault",
      },
      "timeout":600000,
      "enabled": true
    }
  }
}

MCP工具

工具 说明
search_notes 跨保险库的语义搜索
read_note 阅读特定笔记的完整内容
list_tags 列出vault中的所有标记
search_by_tag 按标签查找笔记
reindex 重新索引保险库(增量或完整)
vault_stats 获取索引统计信息

技术栈

  • 嵌入: Xenova/multilingual-e5-small 通过 @xenova/transformers (384个维度,局部运行)
  • 向量存储:SQLite+ sqlite-vec 扩展
  • MCP-SDK: @modelcontextprotocol/sdk
  • 分块:支持Markdown,通过 gray-matter