npm obsidian-brainstdioApache-2.0updated 27d ago
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.
¿Qué puedes hacer con Obsidian Brain?
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.
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.
[!NOTE] 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.
[!TIP] 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_note - Understand the graph —
find_connections,find_path_between,detect_themes,rank_notes - Write —
create_note,edit_note,apply_edit_preview,link_notes,move_note,delete_note - Live editor (requires companion plugin) —
active_note,dataview_query,base_query - Maintenance —
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"| OB
Retrieval 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 polish - v1.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.
Instalación
Añade Obsidian Brain a tu cliente. Elige el que uses.
claude mcp add obsidian-brain -- npx -y obsidian-braincodex mcp add obsidian-brain -- npx -y obsidian-brainamp mcp add obsidian-brain -- npx -y obsidian-brain{
"mcpServers": {
"obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"obsidian-brain","command":"npx","args":["-y","obsidian-brain"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"obsidian-brain": {
"command": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"obsidian-brain": {
"type": "local",
"command": "npx",
"args": [
"-y",
"obsidian-brain"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"obsidian-brain": {
"command": {
"path": "npx",
"args": [
"-y",
"obsidian-brain"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y obsidian-brainRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Puntuación
39 / 100
Incompleta
- Documentación25/25
- Mantenimiento25/25
- Confianza13/20
- Capacidad0/15
- Instalación12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 19 days ago
- Has a release history
- Repository is not archived
- Licensed Apache-2.0
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Historial de versiones
| Versiones | Publicada |
|---|---|
| 1.7.24Última | 16 may 2026 |
| 1.7.23 | 16 may 2026 |
| 1.7.22 | 15 may 2026 |
| 1.7.21 | 30 abr 2026 |
| 1.7.20 | 27 abr 2026 |
| 1.7.19 | 26 abr 2026 |
| 1.7.18 | 26 abr 2026 |
| 1.7.17 | 26 abr 2026 |
| 1.7.16 | 26 abr 2026 |
| 1.7.15 | 26 abr 2026 |
| 1.7.14 | 26 abr 2026 |
| 1.7.13 | 26 abr 2026 |
| 1.7.12 | 26 abr 2026 |
| 1.7.11 | 26 abr 2026 |
| 1.7.10 | 26 abr 2026 |
| 1.7.9 | 26 abr 2026 |
| 1.7.8 | 26 abr 2026 |
| 1.7.7 | 26 abr 2026 |
| 1.7.6 | 26 abr 2026 |
| 1.7.5 | 26 abr 2026 |
| 1.7.4 | 26 abr 2026 |
| 1.7.3 | 26 abr 2026 |
| 1.7.2 | 25 abr 2026 |
| 1.7.1 | 24 abr 2026 |
| 1.7.0 | 24 abr 2026 |
| 1.6.22 | 24 abr 2026 |
| 1.6.21 | 24 abr 2026 |
| 1.6.19 | 24 abr 2026 |
| 1.6.18 | 24 abr 2026 |
| 1.6.15 | 24 abr 2026 |
| 1.6.14 | 24 abr 2026 |
| 1.6.13 | 24 abr 2026 |
| 1.6.12 | 23 abr 2026 |
| 1.6.11 | 23 abr 2026 |
| 1.6.10 | 23 abr 2026 |
| 1.6.9 | 23 abr 2026 |
| 1.6.8 | 23 abr 2026 |
| 1.6.7 | 23 abr 2026 |
| 1.6.6 | 23 abr 2026 |
| 1.6.5 | 23 abr 2026 |
| 1.6.4 | 23 abr 2026 |
| 1.6.3 | 23 abr 2026 |
| 1.6.2 | 23 abr 2026 |
| 1.6.1 | 23 abr 2026 |
| 1.6.0 | 22 abr 2026 |
| 1.5.8 | 22 abr 2026 |
| 1.5.7 | 22 abr 2026 |
| 1.5.6 | 22 abr 2026 |
| 1.5.5 | 22 abr 2026 |
| 1.5.4 | 22 abr 2026 |
| 1.5.3 | 22 abr 2026 |
| 1.5.2 | 22 abr 2026 |
| 1.5.1 | 22 abr 2026 |