sweir1 avatar

Obsidian Brain

sweir1/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 tools

Public 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_DIR

Where to store the SQLite index + embedding cache. Defaults to $XDG_DATA_HOME/obsidian-brain or ~/.local/share/obsidian-brain.

EMBEDDING_PRESETdefault: english

Preset name: english (default, bge-small-en-v1.5), english-fast, english-quality, multilingual, multilingual-quality, multilingual-ollama. Ignored when EMBEDDING_MODEL is set.

EMBEDDING_MODEL

Power-user override: any transformers.js checkpoint or Ollama model id. Takes precedence over EMBEDDING_PRESET. Switching auto-reindexes.

EMBEDDING_PROVIDERdefault: transformers

Embedding backend. 'transformers' (local, default) or 'ollama' (requires a running Ollama server).

OLLAMA_BASE_URLdefault: http://localhost:11434

Base URL of a local Ollama server. Only used when EMBEDDING_PROVIDER=ollama.

OLLAMA_EMBEDDING_DIM

Override the embedding dimensionality when EMBEDDING_PROVIDER=ollama. If unset, the server probes the model on startup.

OLLAMA_NUM_CTX

Override 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_PULL

Auto-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_PULL

Opt-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_WATCH

Set 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_CATCHUP

Set 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: 3000

Per-file reindex debounce for the live watcher, in milliseconds.

OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MSdefault: 60000

Graph-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: 30000

Per-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_DIR

Override 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_DEBUG

Set 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_FORMAT

Set 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

npm version License: Apache 2.0 Node ≥ 20 GitHub stars

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 — unlocks active_note, dataview_query, base_query)


View the full README on GitHub

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

Related Documents & Knowledge MCP servers

View all
1seynurmammad0v avatarObsidian MCPseynurmammad0v/obsidian-mcpTurns Obsidian vaults into AI-queryable knowledge graphs with 12 tools1stars
2yotsuda avatarMarkdownPointeryotsuda/markdownpointerMarkdown viewer for AI-assisted document review. Click any element to copy file path + line number.1stars
3flsteven87 avatarLlm Wiki Mcpflsteven87/llm-wiki-mcpMCP server for Karpathy-style LLM wikis: persistent markdown your agent grows over time.0stars
4agenson-tools avatarDocument Parseragenson-tools/document-parser-mcpParse and extract structured data from various document formats (PDF, Word, HTML).0stars
5mdfifty50-boop avatarDocx Forgemdfifty50-boop/docx-forge-mcpProfessional document generation from structured data0stars
6suekou avatarNotionsuekou/mcp-notion-serverNotion MCP Server enables LLMs to access Notion workspaces with optional Markdown conversion to save tokens.892stars