mcpField
O
Obsidian Brain

Obsidian Brain

本地服务
sweir1.github.io记忆与知识1424 周前更新

关于 Obsidian Brain

Obsidian Brain 是用于搜索、分析和编辑 Obsidian 知识库或 Markdown 文件夹的本地 MCP 服务。它结合语义与全文检索及图谱分析,无需安装 Obsidian 插件即可运行。

主要功能

  1. 01按标题分块的语义混合搜索
  2. 02图谱路径、主题与 PageRank 分析
  3. 03读取、创建、编辑、移动和链接笔记
  4. 04本地嵌入与 SQLite 索引
  5. 05直接读取磁盘上的 Markdown 文件

适用场景

  1. 01在大型知识库中查找相关段落
  2. 02识别关键笔记和主题集群
  3. 03通过 MCP 客户端创建或更新笔记

MCP 相关

通过本地 stdio 进程向 MCP 客户端提供搜索、笔记、图谱和维护工具。可选配套插件还可提供实时编辑器状态以及 Dataview 或 Bases 查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sweir1-obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
],
"env": {
"VAULT_PATH": "<VAULT_PATH>",
"DATA_DIR": "<DATA_DIR>",
"EMBEDDING_PRESET": "<EMBEDDING_PRESET>",
"EMBEDDING_MODEL": "<EMBEDDING_MODEL>",
"EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
"OLLAMA_BASE_URL": "<OLLAMA_BASE_URL>",
"OLLAMA_EMBEDDING_DIM": "<OLLAMA_EMBEDDING_DIM>",
"OLLAMA_NUM_CTX": "<OLLAMA_NUM_CTX>",
"OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL": "<OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL>",
"OBSIDIAN_BRAIN_OLLAMA_BYOM_AUTO_PULL": "<OBSIDIAN_BRAIN_OLLAMA_BYOM_AUTO_PULL>",
"OBSIDIAN_BRAIN_NO_WATCH": "<OBSIDIAN_BRAIN_NO_WATCH>",
"OBSIDIAN_BRAIN_NO_CATCHUP": "<OBSIDIAN_BRAIN_NO_CATCHUP>",
"OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MS": "<OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MS>",
"OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MS": "<OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MS>",
"OBSIDIAN_BRAIN_TOOL_TIMEOUT_MS": "<OBSIDIAN_BRAIN_TOOL_TIMEOUT_MS>",
"OBSIDIAN_BRAIN_MAX_CHUNK_TOKENS": "<OBSIDIAN_BRAIN_MAX_CHUNK_TOKENS>",
"OBSIDIAN_BRAIN_CONFIG_DIR": "<OBSIDIAN_BRAIN_CONFIG_DIR>",
"OBSIDIAN_BRAIN_DEBUG": "<OBSIDIAN_BRAIN_DEBUG>",
"OBSIDIAN_BRAIN_LOG_FORMAT": "<OBSIDIAN_BRAIN_LOG_FORMAT>"
}
}
}
}
启动命令npx -y obsidian-brain
需要配置的环境变量
VAULT_PATHAbsolute path to your Obsidian vault (or any folder of .md files).
DATA_DIRWhere to store the SQLite index + embedding cache. Defaults to $XDG_DATA_HOME/obsidian-brain or ~/.local/share/obsidian-brain.
EMBEDDING_PRESETPreset name: english (default, bge-small-en-v1.5), english-fast, english-quality, multilingual, multilingual-quality, multilingual-ollama. Ignored when EMBEDDING_MODEL is set.
EMBEDDING_MODELPower-user override: any transformers.js checkpoint or Ollama model id. Takes precedence over EMBEDDING_PRESET. Switching auto-reindexes.
EMBEDDING_PROVIDEREmbedding backend. 'transformers' (local, default) or 'ollama' (requires a running Ollama server).
OLLAMA_BASE_URLBase URL of a local Ollama server. Only used when EMBEDDING_PROVIDER=ollama.
OLLAMA_EMBEDDING_DIMOverride the embedding dimensionality when EMBEDDING_PROVIDER=ollama. If unset, the server probes the model on startup.
OLLAMA_NUM_CTXOverride Ollama's num_ctx for embed requests. Leave UNSET to let obsidian-brain auto-detect via `/api/show`'s `context_length` (e.g. nomic-embed-text=2048, bge-m3=8192, qwen3-embedding:0.6b=32 768). Setting this manually imposes a hard cap and may silently truncate longer inputs — see https://github.com/ollama/ollama/issues/14259. Ollama's own default is 2048 which truncates for any model trained on a larger context. See also https://github.com/ollama/ollama/issues/7008. Fallback when both env is unset AND /api/show is unreachable: 8192.
OBSIDIAN_BRAIN_OLLAMA_AUTO_PULLAuto-pull the configured Ollama model when /api/show returns 404 (model not present). Default ON — choosing an Ollama-backed preset is implicit consent to download its model. Streams /api/pull progress to stderr. Set to '0' to disable auto-pull entirely (master kill-switch) and fall back to the actionable error path (`HTTP 404 — try: ollama pull <model>`).
OBSIDIAN_BRAIN_OLLAMA_BYOM_AUTO_PULLOpt-in to auto-pull for BYOM (custom EMBEDDING_MODEL) Ollama models OUTSIDE Ollama's official `library/` namespace. Default OFF — third-party models (e.g. `user/custom-fork`, `myregistry.com/team/model`) require this env var to be set to `1` before they will auto-pull, to prevent silent downloads of arbitrary user-named artifacts. Preset-known models (via EMBEDDING_PRESET) and bare model ids in the official library (e.g. `qwen3-embedding:0.6b`, `library/llama3:8b`) continue to auto-pull by default per the existing OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL behavior.
OBSIDIAN_BRAIN_NO_WATCHSet to '1' to disable the live chokidar file watcher. Useful on SMB/NFS vaults where FSEvents/inotify don't fire reliably — fall back to running `obsidian-brain index` on a schedule (launchd/systemd).
OBSIDIAN_BRAIN_NO_CATCHUPSet to '1' to skip the startup catchup reindex pass that picks up edits made while the server was down. The live file watcher still starts (via OBSIDIAN_BRAIN_NO_WATCH=1 to disable that separately), and first-time indexing on an empty DB is unaffected — this knob only governs the post-restart `enqueueBackgroundReindex` walk.
OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MSPer-file reindex debounce for the live watcher, in milliseconds.
OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MSGraph-wide community-detection (Louvain) debounce for the live watcher, in milliseconds. Louvain is the only expensive op — batching it prevents per-edit CPU spikes.
OBSIDIAN_BRAIN_TOOL_TIMEOUT_MSPer-tool-call timeout in milliseconds. Tools exceeding this return an MCP error instead of hanging.
OBSIDIAN_BRAIN_MAX_CHUNK_TOKENS密钥Override the adaptive chunk-size budget (in tokens). When set, this beats the capacity probed from the model's tokenizer or Ollama /api/show. Use for debugging or for models with stale tokenizer configs.
OBSIDIAN_BRAIN_CONFIG_DIROverride the per-user config directory where obsidian-brain stores model overrides (`model-overrides.json`) and the user-fetched seed (`seed-models.json`). Default is `$XDG_CONFIG_HOME/obsidian-brain` on macOS/Linux (or `~/.config/obsidian-brain`) and `%APPDATA%/obsidian-brain` on Windows. Both files survive `npm update obsidian-brain` because they live outside the package.
OBSIDIAN_BRAIN_DEBUGSet to "1" to print a verbose synchronous startup trace to stderr — every preflight, createContext, server.connect, and shutdown step is logged with a monotonic timestamp. The LAST line before any silent failure tells you exactly which step the server reached. No-op when unset (no overhead). Use to diagnose silent-crash failure modes.
OBSIDIAN_BRAIN_LOG_FORMATSet to 'ndjson' for one-JSON-object-per-line stderr output (timestamp + level + message + structured fields). Default is human-readable plain text (`obsidian-brain: <message>`). Useful for piping logs into aggregators (Datadog, Loki, Vector, journald) that index structured fields.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmobsidian-brain1.7.24

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

obsidian-brain

npm version License: Apache 2.0 Node ≥ 20 GitHub stars

一个独立的 Node MCP 服务,可让 Claude(以及任何其他 MCP 客户端)通过 Obsidian 知识库实现语义搜索 + 知识图谱 + 知识库编辑。作为单个本地 stdio 进程运行——无需插件、无需 HTTP 桥接、无需 API 密钥,也无需托管服务。你的知识库内容永远不会离开你的设备。

📖 完整文档 → sweir1.github.io/obsidian-brain 配套插件 → sweir1/obsidian-brain-plugin(可选——解锁 active_note、dataview_query、base_query)

目录 — 为什么选择它 · 快速开始 · 你将获得什么 · 工作原理 · 配套插件 · 故障排除 · 近期发布

为什么选择 obsidian-brain?

  • 无需运行 Obsidian——与基于 Local REST API 的服务不同,obsidian-brain 直接从磁盘读取 .md 文件。Obsidian 可以关闭;你的知识库只是一个文件夹。
  • 核心功能无需 Local REST API 插件——无需在 Obsidian 中安装任何内容。
  • 基于分块的语义搜索,结合 RRF 混合检索——以 Markdown 标题为粒度生成嵌入,并通过 Reciprocal Rank Fusion 与 FTS5 BM25 融合。找到精确的分块,并按语义排序。
  • 唯一支持 PageRank + Louvain + 图分析的 Obsidian MCP 服务——查询知识库中影响力最大的笔记、桥接笔记和主题集群。其他服务都没有提供这些功能。
  • 使用 Ollama 提供高质量本地嵌入——只需设置一个环境变量,即可切换到 qwen3-embedding:0.6b、nomic-embed-text、bge-m3 等模型。
  • 一次 npx 安装全部搞定——无需克隆、构建、API 密钥或托管端点。知识库内容永远不会离开你的设备。

快速开始

一行安装(macOS + Claude Desktop)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/sweir1/obsidian-brain/main/scripts/install.sh)"

如果你尚未安装 Homebrew + Node 20+,安装程序会为你安装;添加 Claude Desktop 所需的 /usr/local/bin 符号链接;将 obsidian-brain 合并到你的 claude_desktop_config.json;打开“完全磁盘访问权限”面板供你启用 Claude;然后重新启动 Claude。你只需输入一次 macOS 密码(用于 Homebrew + 符号链接)和一次知识库路径。其余步骤都会自动完成。查看其操作内容:scripts/install.sh。

手动安装

需要 Node 20+ 和一个 Obsidian 知识库(也可以是任何包含 .md 文件的文件夹——不一定要安装 Obsidian)。

将 obsidian-brain 接入你的 MCP 客户端。Claude Desktop 示例(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "obsidian-brain": {
      "command": "npx",
      "args": ["-y", "obsidian-brain@latest", "server"],
      "env": { "VAULT_PATH": "/absolute/path/to/your/vault" }
    }
  }
}

退出 Claude Desktop(macOS 上按 ⌘Q)并重新启动即可。

说明

首次启动时,服务会自动为你的知识库建立索引,并下载一个约 34 MB 的嵌入模型。工具可能需要 30–60 秒才会显示在客户端中。之后启动即可立即使用。

提示

不是开发者?macOS 分步指南详细介绍了 Homebrew、Node、GUI 应用的 PATH 修复以及“完全磁盘访问权限”设置。

其他所有 MCP 客户端(Claude Code、Cursor、VS Code、Jan、Windsurf、Cline、Zed、LM Studio、JetBrains AI、Opencode、Codex CLI、Gemini CLI、Warp):请参阅在 MCP 客户端中安装。

→ 完整的环境变量参考:配置 → 模型 / 预设 / Ollama 详情:嵌入模型 → 从 aaronsb 的插件迁移:迁移指南

你将获得什么

18 个按用途分组的 MCP 工具:

  • 查找与阅读 — search、list_notes、read_note
  • 理解图谱 — find_connections、find_path_between、detect_themes、rank_notes
  • 写入 — create_note、edit_note、apply_edit_preview、link_notes、move_note、delete_note
  • 实时编辑器(需要配套插件)— active_note、dataview_query、base_query
  • 维护 — reindex、index_status

→ 参数、示例和响应格式:工具参考

工作原理

flowchart LR
    Client["<b>MCP Client</b><br/>Claude Desktop · Claude Code<br/>Cursor · Jan · Windsurf · ..."]

    subgraph OB ["obsidian-brain (Node process)"]
        direction TB
        SQL["<b>SQLite index</b><br/>nodes · edges<br/>FTS5 · vec0 embeddings"]
        Vault["<b>Vault on disk</b><br/>your .md files"]
        Vault -->|"parse + embed"| SQL
        SQL -.->|"writes"| Vault
    end

    Client <-->|"stdio JSON-RPC"| OB

检索和写入都通过 SQLite 索引完成:读取耗时仅数微秒,写入会立即落盘,并对受影响的文件进行增量重新索引。嵌入按块生成(按标题感知的递归分块器会保留代码块和 LaTeX 块),而 search 默认的 hybrid 模式会通过互惠排名融合(Reciprocal Rank Fusion),合并块级语义排名与 FTS5 BM25 排名。

→ 深入了解为何选择 stdio、SQLite 和本地嵌入:架构 → 实时监视器的行为与防抖机制:实时更新 → 定时重新索引(macOS launchd / Linux systemd):定时索引(macOS) · (Linux)

配套插件(可选)

可选的 Obsidian 插件 sweir1/obsidian-brain-plugin 会通过 localhost HTTP 端点公开 Obsidian 实时运行状态,包括当前编辑器、Dataview 结果和 Bases 行。安装插件并运行 Obsidian 后,active_note、dataview_query 和 base_query 即可使用。通过 BRAT 使用仓库 ID sweir1/obsidian-brain-plugin 安装。

插件和服务端的主次版本号必须一致——服务端 v1.7.x 应搭配插件 v1.7.x。补丁版本号不同也没问题。

→ 安全模型、能力握手、Dataview / Bases 功能覆盖范围:配套插件

故障排除

最常见的四种问题:

  • Claude Desktop 中显示“Connector has no tools available” — 通常是服务端启动时崩溃。查看 ~/Library/Logs/Claude/mcp-server-obsidian-brain.log。解决方法:npm install -g obsidian-brain@latest,退出 Claude(⌘Q)后重新启动。
  • ERR_DLOPEN_FAILED / NODE_MODULE_VERSION 不匹配 — better-sqlite3 是针对不同的 Node ABI 构建的。解决方法:PATH=/opt/homebrew/bin:$PATH npm rebuild -g better-sqlite3。
  • Vault path not configured — 未设置 VAULT_PATH。在客户端配置的 env 块或 shell 中设置它。
  • 通过 npx 加载了旧版本(发布后客户端仍显示上一版本)— npx 缓存过期。解决方法:rm -rf ~/.npm/_npx,然后重启客户端。在配置中保留 @latest 可避免此问题。

→ 完整故障排除指南(监视器未触发、索引过期、运行多个客户端、超时、嵌入维度不匹配、日志位置):docs/troubleshooting.md

近期发布

  • v1.7.24(2026-05-16)— embeddings.md BYOM 说明 + 5 项 devDep 更新
  • v1.7.23(2026-05-16)— BYOM Ollama 自动拉取门控 + 日志记录全面检查 + SIGTERM 单元测试
  • v1.7.22(2026-05-15)— 结构化 stderr(NDJSON)+ Ollama 准备状态 + dependabot 安全更新 + SIGTERM 排空集成测试
  • v1.7.21(2026-04-27)— install.sh 保险库选择器修复 + 自动执行 ollama pull + 文档/测试完善
  • v1.7.20(2026-04-27)— Ollama 前缀查找错误 + 13 项审查完善

→ 完整变更日志:docs/CHANGELOG.md · 后续计划:docs/roadmap.md · 从源代码构建:docs/development.md

致谢

感谢 obra/knowledge-graph 和 aaronsb/obsidian-mcp-plugin,本项目借鉴了它们的创意和代码。此外,还要感谢 Xenova/transformers.js(本地嵌入)、graphology(图分析)和 sqlite-vec(SQLite 中的向量搜索)。

相关项目

  • apple-notes-brain — 配套的 macOS Apple Notes MCP 服务:支持读取、写入和搜索,并可在两个方向上完整往返转换 Markdown。

许可证

Apache License 2.0 — 版权所有 2026 sweir1。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。