
Obsidian Brain
Connects Claude to your Obsidian vault with semantic search, knowledge graph analytics, and file editing without requiring any plugin or the Obsidian app running. Runs as a local stdio process that indexes markdown files directly from disk, exposing 18 tools including PageRank note ranking, Louvain community detection for theme clustering, and hybrid retrieval that fuses chunk-level embeddings with BM25. Embeddings stay local via transformers.js or Ollama providers like nomic-embed-text. Ships with FTS5 and vec0 SQLite indexes for microsecond reads and incremental writes. The optional companion plugin adds live runtime state for active editor context and Dataview queries when Obsidian is open. Reach for this when you want AI that can navigate and reason over your personal knowledge base structure, not just grep through files.
- GitHub stars
- 7
- tools
- 18
- auth
- Required
- transport
- STDIO
- env vars
- 19
- last updated
- May 16, 2026
Tools
18 toolsPublic tool metadata for what this MCP can expose to an agent.
searchFind & read — semantic and hybrid search over vault notes.
Find & read — semantic and hybrid search over vault notes.
No parameter schema in public metadata yet.
list_notesFind & read — lists notes in the vault.
Find & read — lists notes in the vault.
No parameter schema in public metadata yet.
read_noteFind & read — reads the content of a note.
Find & read — reads the content of a note.
No parameter schema in public metadata yet.
find_connectionsUnderstand the graph — finds connections between notes.
Understand the graph — finds connections between notes.
No parameter schema in public metadata yet.
find_path_betweenUnderstand the graph — finds a path between two notes.
Understand the graph — finds a path between two notes.
No parameter schema in public metadata yet.
detect_themesUnderstand the graph — detects theme clusters in the vault.
Understand the graph — detects theme clusters in the vault.
No parameter schema in public metadata yet.
rank_notesUnderstand the graph — ranks notes by influence.
Understand the graph — ranks notes by influence.
No parameter schema in public metadata yet.
create_noteWrite — creates a new note.
Write — creates a new note.
No parameter schema in public metadata yet.
edit_noteWrite — edits an existing note.
Write — edits an existing note.
No parameter schema in public metadata yet.
apply_edit_previewWrite — previews an edit before applying it.
Write — previews an edit before applying it.
No parameter schema in public metadata yet.
link_notesWrite — links notes together.
Write — links notes together.
No parameter schema in public metadata yet.
move_noteWrite — moves a note.
Write — moves a note.
No parameter schema in public metadata yet.
delete_noteWrite — deletes a note.
Write — deletes a note.
No parameter schema in public metadata yet.
active_noteLive editor — returns the active note in Obsidian (requires companion plugin).
Live editor — returns the active note in Obsidian (requires companion plugin).
No parameter schema in public metadata yet.
dataview_queryLive editor — runs a Dataview query (requires companion plugin).
Live editor — runs a Dataview query (requires companion plugin).
No parameter schema in public metadata yet.
base_queryLive editor — queries Bases rows (requires companion plugin).
Live editor — queries Bases rows (requires companion plugin).
No parameter schema in public metadata yet.
reindexMaintenance — reindexes the vault.
Maintenance — reindexes the vault.
No parameter schema in public metadata yet.
index_statusMaintenance — reports index status.
Maintenance — reports index status.
No parameter schema in public metadata yet.
Sponsors
Configuration
VAULT_PATH*Absolute 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_PRESETdefault: englishPreset 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_PROVIDERdefault: transformersEmbedding backend. 'transformers' (local, default) or 'ollama' (requires a running Ollama server).
OLLAMA_BASE_URLdefault: http://localhost:11434Base 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
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 f
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
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
OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MSdefault: 3000Per-file reindex debounce for the live watcher, in milliseconds.
OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MSdefault: 60000Graph-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_MSdefault: 30000Per-tool-call timeout in milliseconds. Tools exceeding this return an MCP error instead of hanging.
OBSIDIAN_BRAIN_MAX_CHUNK_TOKENSOverride 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` o
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 (n
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
Readme
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)
Details
- Repository
- github.com/sweir1/obsidian-brain
- Website
- sweir1.github.io/obsidian-brain
- Categories
- Documents & Knowledge, Search & Web Crawling
- Package
obsidian-brain- Transport
- STDIO
- Auth
- Required
- Registry
- MCP registry, active