← Index

Obsidian Brain

io.github.sweir1/obsidian-brainv1.7.24Search

Obsidian MCP server: semantic search, knowledge graph, and vault editing. No plugin required.

In-path gate · all MCP tools

Using Obsidian Brain in Claude, Cursor, Gemini CLI, Cline, or Zed?

MCP tool contracts can change remotely with no version bump. The mcpindex gate pins each contract and HOLDs the call when it drifts-before your agent acts. Zero credentials. This is not the package install for this server itself (use Install this server for that).

Install the mcpindex gate (one command)

Rewrites your MCP host config so each server launches behind the gate. Inspect first: curl -fsSL https://mcpindex.ai/install.sh | less

uv tool install mcpindex-gate && mcpindex-config-wire
Trust verdict · v1 advisory · method
REVIEWstatus: PARTIALfresh until 2026-08-02 19:02 UTC
screened 2026-07-03tier: scannedgranularity: description-levelsource: registry

Semantic screen found no manipulation pattern in the description. Conformance probe not yet run.

mcpindex.integrity.descriptionpassINFO

evidenceNo malicious instructions foundvia static_description

Limits of this verdict
  • - Semantic screen only - the deterministic conformance probe has not run on this server
  • - Confidence is reported but not yet calibrated (v1)
  • - Screen reads the tool description, not the live behavior
  • - advisory
  • - registry description only no input schema
  • - screen model 8b

Semantic screen: an LLM judge reads the tool description for hidden instructions (status PARTIAL). A pass means the description is not lying, not that the tool is safe: a high-capability tool with an honest description still warrants caution. The deterministic conformance probe has not been run on this server yet, so the screen here is semantic-only. Posture: advisory. Confidences are reported but not yet calibrated (calibrated=false at v1). Full verdict history is not shown on this page.

Own this server? Screen its description →

That verdict was true at screening time (snapshot 2026-07-31).

Contracts can change after screening, with no version bump. The gate pins Obsidian Brain’s tool contracts on first sight and holds any silent change before your agent acts - the check that keeps being true on Tuesday.

See your first HOLD in 2 minutes →

Related: how to trust an MCP server · screen before install · silent contract drift

Embed this badge

A live verdict badge for your README or listing. It reflects the current screen, links back here, and updates when the verdict does.

Markdown
[![mcpindex](https://mcpindex.ai/api/v1/badge/io-github-sweir1-obsidian-brain)](https://mcpindex.ai/server/io-github-sweir1-obsidian-brain)
HTML
<a href="https://mcpindex.ai/server/io-github-sweir1-obsidian-brain"><img src="https://mcpindex.ai/api/v1/badge/io-github-sweir1-obsidian-brain" alt="mcpindex verdict" height="20" /></a>
Environment variables
VAULT_PATH
required

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_PRESET

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_PROVIDER

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

OLLAMA_BASE_URL

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 — 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_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 fall back to the actionable error path (`HTTP 404 — try: ollama pull <model>`).

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 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_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 post-restart `enqueueBackgroundReindex` walk.

OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MS

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

OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MS

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_MS

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` on Windows. Both files survive `npm update obsidian-brain` because they live outside the package.

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 (no overhead). Use to diagnose silent-crash failure modes.

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.

MCP quality score · maturity, not trust · methodology
freshness
22
completeness
20
installability
25
documentation
15
stability
10
Alternatives in Search