obsidian-notes-rag MCP 服务器

项目简介

  • 该项目实现了一个 MCP 服务器,允许客户端通过 JSON-RPC 请求访问 Obsidian 笔记的向量索引、执行相关工具(如搜索、获取相似笔记、获取笔记上下文、统计信息以及重建索引)等功能。

主要功能点

  • 语义搜索工具:根据查询向量在本地向量库中检索相关笔记片段,支持按元数据筛选(如类型、文件路径)。
  • 相似笔记工具:给定笔记路径,返回与其相似的其他笔记。
  • 笔记上下文工具:返回指定笔记及其相关上下文笔记,便于对话中提供背景信息。
  • 索引统计工具:返回当前索引库的统计信息(如笔记数量、数据路径)。
  • 重建索引工具:支持清空并重新建立索引,或在给定路径前缀下重新索引。
  • Embedding 支持:后端支持多种本地/云端嵌入提供者(OpenAI、Ollama、LM Studio),可通过 MCP 客户端进行模型选择和查询嵌入。
  • 存储与检索:使用 sqlite-vec 构建的向量索引,数据与元数据分离存储在 SQLite 数据库中,便于快速检索与管理。

安装与运行步骤

  1. 安装依赖
  • 需要 Python 3.11+,并安装项目依赖(请参阅项目的 README 进行具体依赖安装步骤)。
  1. 配置与启动 MCP 服务器
  • 启动服务器的推荐方式之一是通过项目自带的 CLI 启动(serve 命令),或者直接以 MCP 服务器模式运行:
    • python -m obsidian_rag.server
    • 或通过 CLI:obsidian-notes-rag serve
  • 启动后,服务器会监听并对外提供 MCP 服务,客户端可以通过 JSON-RPC 与之通信。
  1. 连接到 MCP 客户端
  • MCP 客户端需要一个服务器配置,包含服务器名称、启动命令和参数,以便自动化启动服务器并建立连接。下面给出一个示例配置(JSON 格式,非代码块展示,便于理解): { "server": "obsidian-notes-rag", "comment": "MCP 服务器名称,来自项目实现的内置服务器标识", "command": "uvx", "args": ["obsidian-notes-rag", "serve"], "description": "用于 Claude Code/桌面等 AI 助手的 MCP 服务启动指令,启动后客户端即可通过 MCP 协议与服务器通信" } 注:
  • 服务器内部名称在代码中为 obsidian-rag,但在使用文档中常见的示例名称是 obsidian-notes-rag。客户端配置应以实际部署时的服务器名称为准,并确保 command 与 args 能正确启动服务器进程。
  1. 基本使用
  • 客户端连接后即可通过 MCP 调用以下工具:
    • search_notes(query, limit, note_type)
    • get_similar(note_path, limit)
    • get_note_context(note_path, limit)
    • get_stats()
    • reindex(clear, path_filter)
  • 具体调用方式按照 MCP 客户端的 JSON-RPC 请求格式发送请求即可。
  1. 运行环境与注意事项
  • Embedding 提供者可选:OpenAI、Ollama、LM Studio。
  • 如果选择 OpenAI,需要设置 OPENAI_API_KEY(环境变量或配置中的 key)。
  • 索引数据存储在本地 SQLite 数据库中,默认数据路径可通过配置覆盖。
  • 服务器支持以标准输入输出(stdio)传输,便于与多种客户端集成。

服务器信息