mcpbeat Sign in

Obsidian Brain MCP Server

local only

Obsidian Brain runs on your own machine — the client starts it, so there is no endpoint to ping. 198 installs a week from npm. Last commit 16 May 2026.

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

Installs per day peak 95 · avg 22 · -62% w/w
a month agotoday
198
Installs / week
npm · obsidian-brain
11
Stars
3 open issues
16 May 2026
Last commit
0 releases in 90 days
Apache-2.0
License
TypeScript

What the code does

We read the source, 19 h ago · rules 3dff92dd89df

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

Runs a command on install [пакет] package.json:1
postinstall: npm rebuild better-sqlite3 || (echo 'obsidian-brain: postinstall rebuild of better-sqlite3 FAILED — your install may crash on first boot. Run `npm rebuild better-sqlite3` manually, or `rm -rf ~/.npm/_npx` and retry. See https://sweir1.github.io/obsidian-brain/troubleshooting/#err_dlopen_failed-node_module_version-mismatch' 1>&2; exit 1)
Runs an external command src/auto-heal.ts:195
    const child = spawn(cmd, args, {
Builds a file path from a variable src/embeddings/embedder.ts:156
      const modelDir = path.join(cacheRoot, this._model);

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.

run in your terminal
claude mcp add obsidian-brain -- npx -y obsidian-brain
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "obsidian-brain": {
      "args": [
        "-y",
        "obsidian-brain"
      ],
      "command": "npx"
    }
  }
}
~/.codex/config.toml
[mcp_servers.obsidian-brain]
command = "npx"
args = ["-y", "obsidian-brain"]
.cursor/mcp.json
{
  "mcpServers": {
    "obsidian-brain": {
      "args": [
        "-y",
        "obsidian-brain"
      ],
      "command": "npx"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "obsidian-brain": {
      "args": [
        "-y",
        "obsidian-brain"
      ],
      "command": "npx"
    }
  }
}

This one needs environment variables set before it will start: 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_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.). The author declared them in the registry entry; get the values from the project itself.

Alternatives to Obsidian Brain

same job, measured the same way
Obsidian MCP Server
by tylern91

Filesystem-based MCP server for Obsidian vaults — read, search, and edit notes, no app required.

local only
I
Obsidian Everywhere
by junnnnnw00

Graph context, semantic search, guarded edits, and reviewable Git for local Obsidian vaults.

119 installs/wk local only
Obsidian Semantic Search
by dalecb

Read-only semantic search MCP server for Obsidian vaults using local Ollama embeddings.

93 installs/wk local only
Vault MCP Tools
by afable702

Complete Obsidian vault MCP server. 35 tools: notes, search, graph, tags, canvas.

local only
Obsidian Hybrid Search
by flowing-abyss

Search Obsidian vaults with hybrid full-text, fuzzy, semantic, and graph retrieval.

674 installs/wk local only
Smart Connections
by gogogadgetbytes

MCP server for Obsidian Smart Connections. Semantic search using your vault's embeddings.

29 installs/wk local only
Tencent Lexiang MCP Server
by tencent-lexiang

Tencent Lexiang AI knowledge base MCP server for searching, managing entries, and editing docs.

answering
Seekstone
by shaqmughal

Filesystem-direct Obsidian MCP server — search and edit your vault with low context-tax.

817 installs/wk local only

Obsidian Brain — questions

Answers built from our own checks of this server.

Why is there no uptime for Obsidian Brain?
Obsidian Brain runs on your own machine over stdio — there is no network address to reach, so uptime cannot be measured for it by anyone. What can be measured is adoption: the npm package obsidian-brain was installed 198 times last week.
How do I connect Obsidian Brain?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It runs locally, so the command pulls obsidian-brain straight from npm; nothing to host, nothing to sign up for.
How many people use Obsidian Brain?
The npm package obsidian-brain was installed 198 times in the last week. Week over week that is -62%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Obsidian Brain open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 11 stars on GitHub and 3 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.