obsidian-brain
Provides tools for semantic search, knowledge graph analytics, and vault editing (create, read, update, delete notes) directly on an Obsidian vault.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-brainsearch for notes about quantum computing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
obsidian-brain
A standalone Node MCP server that gives Claude (and any other MCP client) semantic search + knowledge graph + vault editing over an Obsidian vault. Runs as one local stdio process โ no plugin, no HTTP bridge, no API key, nothing hosted. Your vault content never leaves your machine.
๐ Full docs โ sweir1.github.io/obsidian-brain Companion plugin โ
sweir1/obsidian-brain-plugin(optional โ unlocksactive_note,dataview_query,base_query)
Contents โ Why ยท Quick start ยท What you get ยท How it works ยท Companion plugin ยท Troubleshooting ยท Recent releases
Why obsidian-brain?
Works without Obsidian running โ unlike Local REST API-based servers, obsidian-brain reads
.mdfiles directly from disk. Obsidian can be closed; your vault is just a folder.No Local REST API plugin required โ nothing to install inside Obsidian for the core experience.
Chunk-level semantic search with RRF hybrid retrieval โ embeddings at markdown-heading granularity, fused with FTS5 BM25 via Reciprocal Rank Fusion. Finds the exact chunk, ranks on meaning.
The only Obsidian MCP server with PageRank + Louvain + graph analytics โ ask for your vault's most influential notes, bridging notes, theme clusters. Nobody else ships this.
Ollama provider for high-quality local embeddings โ switch to
qwen3-embedding:0.6b,nomic-embed-text,bge-m3, etc. with one env var.All in one
npxinstall โ no clone, no build, no API key, no hosted endpoint. Vault content never leaves your machine.
Related MCP server: mcp-markdown-vault
Quick start
One-line install (macOS + Claude Desktop)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/sweir1/obsidian-brain/main/scripts/install.sh)"Installs Homebrew + Node 20+ if you don't already have them, adds the /usr/local/bin symlinks that Claude Desktop needs, merges obsidian-brain into your claude_desktop_config.json, opens the Full Disk Access pane for you to toggle Claude on, and relaunches Claude. You'll be asked for your macOS password once (for Homebrew + the symlinks) and your vault path once. Everything else is automatic. Audit what it does: scripts/install.sh.
Manual install
Requires Node 20+ and an Obsidian vault (or any folder of .md files โ Obsidian itself is optional).
Wire obsidian-brain into your MCP client. Example for 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" }
}
}
}Quit Claude Desktop (โQ on macOS) and relaunch. That's it.
On first boot the server auto-indexes your vault and downloads a ~34 MB embedding model. Tools may take 30โ60 s to appear in the client. Subsequent boots are instant.
Not a developer? The macOS walkthrough covers Homebrew, Node, the GUI-app PATH fix, and Full Disk Access step-by-step.
For every other MCP client (Claude Code, Cursor, VS Code, Jan, Windsurf, Cline, Zed, LM Studio, JetBrains AI, Opencode, Codex CLI, Gemini CLI, Warp): see Install in your MCP client.
โ Full env-var reference: Configuration โ Model / preset / Ollama details: Embedding model โ Migrating from aaronsb's plugin: Migration guide
What you get
18 MCP tools grouped by intent:
Find & read โ
search,list_notes,read_noteUnderstand the graph โ
find_connections,find_path_between,detect_themes,rank_notesWrite โ
create_note,edit_note,apply_edit_preview,link_notes,move_note,delete_noteLive editor (requires companion plugin) โ
active_note,dataview_query,base_queryMaintenance โ
reindex,index_status
โ Arguments, examples, and response shapes: Tool reference
How it works
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"| OBRetrieval and writes both go through a SQLite index: reads are microsecond-cheap, writes land on disk immediately and incrementally re-index the affected file. Embeddings are chunk-level (heading-aware recursive chunker preserving code + LaTeX blocks), and search's default hybrid mode fuses chunk-level semantic rank with FTS5 BM25 via Reciprocal Rank Fusion.
โ Deeper write-up โ why stdio, why SQLite, why local embeddings: Architecture โ Live watcher behaviour + debounces: Live updates โ Scheduled reindex (macOS launchd / Linux systemd): Scheduled indexing (macOS) ยท (Linux)
Companion plugin (optional)
An optional Obsidian plugin at sweir1/obsidian-brain-plugin exposes live Obsidian runtime state โ active editor, Dataview results, Bases rows โ over a localhost HTTP endpoint. When installed and Obsidian is running, active_note, dataview_query, and base_query light up. Install via BRAT with repo ID sweir1/obsidian-brain-plugin.
Ship plugin and server at the same major.minor โ server v1.7.x pairs with plugin v1.7.x. Patch-version drift is fine.
โ Security model, capability handshake, Dataview / Bases feature coverage: Companion plugin
Troubleshooting
Four most common:
"Connector has no tools available" in Claude Desktop โ usually the server crashed at startup. Check
~/Library/Logs/Claude/mcp-server-obsidian-brain.log. Fix:npm install -g obsidian-brain@latest, quit Claude (โQ), relaunch.ERR_DLOPEN_FAILED/NODE_MODULE_VERSIONmismatch โbetter-sqlite3built against a different Node ABI. Fix:PATH=/opt/homebrew/bin:$PATH npm rebuild -g better-sqlite3.Vault path not configuredโVAULT_PATHis unset. Set it in theenvblock of your client config or shell.Old version loading via
npx(your client still shows the previous release after a publish) โ stale npx cache. Fix:rm -rf ~/.npm/_npx, then restart your client. Keeping@latestin your config prevents this.
โ Full troubleshooting guide (watcher not firing, stale index, running multiple clients, timeouts, embedding-dim mismatch, log locations): docs/troubleshooting.md
Recent releases
v1.7.24 (2026-05-16) โ embeddings.md BYOM callout + 5 devDep bumps
v1.7.23 (2026-05-16) โ BYOM Ollama auto-pull gate + logger sweep + SIGTERM unit test
v1.7.22 (2026-05-15) โ structured stderr (NDJSON) + Ollama preparing-state + dependabot security bumps + SIGTERM drain integration test
v1.7.21 (2026-04-27) โ install.sh vault-picker fix + auto
ollama pull+ docs/test polishv1.7.20 (2026-04-27) โ Ollama prefix-lookup bug + 13 audit polish items
โ Full changelog: docs/CHANGELOG.md ยท Forward plan: docs/roadmap.md ยท Build from source: docs/development.md
Credits
Thanks to obra/knowledge-graph and aaronsb/obsidian-mcp-plugin for the ideas and code this project draws on. Also Xenova/transformers.js (local embeddings), graphology (graph analytics), and sqlite-vec (vector search in SQLite).
Related projects
apple-notes-brainโ sibling MCP server for Apple Notes on macOS: read, write, and search with full Markdown round-trip in both directions.
License
Apache License 2.0 โ Copyright 2026 sweir1.
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sweir1/obsidian-brain'
If you have feedback or need assistance with the MCP directory API, please join our Discord server