Skip to content
Agentmart
Submit a tool

Obsidian Brain

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

Connector by sweir1 · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 13
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/sweir1-obsidian-brain

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
10 read · 5 write · 1 delete · 2 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 18

Read from the source code; the running server may list different tools.

Read 10 · Look things up without changing anything.

  • active_note
  • base_query
  • detect_themes
  • find_connections
  • find_path_between
  • index_status
  • list_notes
  • rank_notes
  • read_note
  • search

Write 5 · Create, change, send or run things.

  • apply_edit_preview
  • create_note
  • edit_note
  • link_notes
  • move_note

Delete 1 · Delete, drop, revoke or wipe things.

  • delete_note

Not yet classified 2 · We could not tell from the name and description.

  • dataview_query
  • reindex

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • OBSIDIAN_BRAIN_MAX_CHUNK_TOKENS

Other settings (environment variables or headers).

  • DATA_DIR
  • EMBEDDING_MODEL
  • EMBEDDING_PRESET
  • EMBEDDING_PROVIDER
  • OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MS
  • OBSIDIAN_BRAIN_CONFIG_DIR
  • OBSIDIAN_BRAIN_DEBUG
  • OBSIDIAN_BRAIN_LOG_FORMAT
  • OBSIDIAN_BRAIN_NO_CATCHUP
  • OBSIDIAN_BRAIN_NO_WATCH
  • OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL
  • OBSIDIAN_BRAIN_OLLAMA_BYOM_AUTO_PULL
Show 6 more settings
  • OBSIDIAN_BRAIN_TOOL_TIMEOUT_MS
  • OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MS
  • OLLAMA_BASE_URL
  • OLLAMA_EMBEDDING_DIM
  • OLLAMA_NUM_CTX
  • VAULT_PATH

Files it touches

  • Any path the agent passes to its tools

Tools (18)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • active_note

    Return the note currently open in Obsidian, including cursor position and selection. Requires the obsidian-brain companion plugin installed and Obsidian running against the same vault.

  • apply_edit_preview

    Apply a previously previewed edit. Pass the `previewId` returned by `edit_note` with `dryRun: true`. Previews expire after 5 minutes. Fails with a descriptive error if the target file changed since the preview was generated — in that case, regenerate the preview and try again.

  • base_query

    Evaluate an Obsidian Bases `.base` file and return its rows. Requires the obsidian-brain companion plugin installed, a recent Obsidian (1.10.0+) running against the same vault, and the Bases core plugin enabled (Obsidian → Settings → Core plugins → Bases). Obsidian does not yet expose a public API for headless Bases query execution (`Plugin.registerBasesView()` is a view-factory hook only). The plugin uses its own YAML parser + a whitelisted expression subset (Path B). See docs/plugin.md#bases for the full supported subset. Supported subset: tree ops (and/or/not), comparisons (==, !=, >, >=, <…

  • create_note

    Create a new note in the vault with a title, body, and optional YAML frontmatter. The new note is indexed immediately so semantic search and graph tools can find it. Auto-injects a `title:` field into frontmatter matching the note title unless frontmatter already has one.

  • dataview_query

    Run a Dataview DQL query against the vault. Requires the obsidian-brain companion plugin v0.2.0+ installed, Obsidian running against the same vault, and the Dataview community plugin enabled. Returns a normalized discriminated-union shape. kind='table' gives {headers, rows}. kind='list' gives {values}. kind='task' gives {items: [{task, text, path, line, tags, children, ...STask fields when task=true}]}. kind='calendar' gives {events: [{date, link, value?}]}. DQL reference: https://blacksmithgu.github.io/obsidian-dataview/queries/structure/. Default 30s timeout (override with timeoutMs). NOTE: …

  • delete_note

    Permanently delete a note. Removes the file from disk AND its index rows (edges, embedding, node). Requires `confirm: true` to guard against accidents. When the delete removes inbound edges, the response is wrapped in a next_actions envelope suggesting a follow-up `rank_notes(method=pagerank, minIncomingLinks=0)` to spot newly orphaned notes.

  • detect_themes

    List auto-detected topic clusters across the vault (served from the community-detection cache). Pass a theme id or label to drill into one cluster. To recompute with a different Louvain resolution, call `reindex({ resolution: X })` first — `detect_themes` itself is a read-only tool. Each returned cluster carries `staleMembersFiltered` — the number of cached `nodeIds` that no longer exist in the vault and were dropped on this read. A positive value means the cached community row is lagging; the filter also regenerates `summary` so it stays consistent with the filtered `nodeIds`. Broken-wikilink…

  • edit_note

    Modify an existing note. Supports six edit modes: append (add to end; defensively inserts a leading newline if the source didn't end with one), prepend (insert after frontmatter if present, otherwise at file start), replace_window (find a block of text and replace it — optionally fuzzy; fuzzy extends match to consume trailing .?! so the replacement has no doubled punctuation), patch_heading (insert or replace content under a specific heading; `headingOp: 'before' | 'after'` inserts immediately before/after the heading line — use `before` on the NEXT heading to append to a section's end; `headi…

  • find_connections

    Find notes linked to (from or to) a given note, up to N hops. Optionally return the full subgraph instead of a flat list. Response is wrapped as `{data, context}` where `context.next_actions` suggests follow-ups like clustering a dense neighbourhood via `detect_themes` or tracing a path to the furthest neighbour via `find_path_between`. Broken-wikilink stub neighbours are excluded by default; pass `includeStubs: true` to include them.

  • find_path_between

    Find link paths between two notes. Returns all simple paths up to maxDepth edges, optionally including their shared neighbors. Broken-wikilink stub nodes are excluded by default — they are degree-1 dead ends in the undirected graph and will block legitimate paths if left in. Pass `includeStubs: true` to include them.

  • index_status

    Report the current state of the vault index: embedder model + dim, count of notes / chunks indexed, chunks skipped during the last reindex (if any), advertised vs discovered max tokens, last reindex reasons, whether a reindex is currently in flight, and the last init error. Read-only — does not mutate anything.

  • link_notes

    Add a wiki-link from one note to another with a context sentence describing why they're connected. Appends the link to the source note and records the edge in the graph so analytics pick it up.

  • list_notes

    List notes in the vault. Optionally filter by directory prefix or by frontmatter tag. Pass `includeStubs: false` to exclude unresolved wiki-link targets (nodes with `frontmatter._stub: true`) and see only real on-disk notes.

  • move_note

    Rename or move a note. Inbound wiki-links in other notes are rewritten in place immediately (bare [[old]], [[old|alias]], ![[old]] embeds, and [[old#heading]]/[[old^block]] suffixes all handled). If the note's frontmatter has a `title:` field matching the old basename, it's auto-rewritten to the new basename (custom titles and missing titles are left alone). Response includes `linksRewritten: { files, occurrences }`.

  • rank_notes

    Rank notes by importance: 'influence' (densely-connected hubs), 'bridging' (notes that connect otherwise-separate topic clusters), or both. Credibility guards (I): by default, `influence` excludes notes with fewer than `minIncomingLinks: 2` incoming edges — this filters out random-orphan noise that makes PageRank feel meaningless on personal vaults. Pass `minIncomingLinks: 0` to see the unfiltered ranking. Bridging scores are normalized by graph size (divided by n*(n-1)/2) so values compare across vaults of different sizes — a bridging score of 0.5 means the same thing in any vault. Broken-wik…

Show 3 more tools
  • read_note

    Read a note's content. Brief mode (default) returns title + metadata + linked-note titles; full mode returns full content + edge context. Full mode also reports `truncated: true` when the body exceeded `maxContentLength` (default 2000 chars) and was sliced. Response is wrapped as `{data, context}` where `context.next_actions` suggests follow-ups like creating missing linked notes or exploring outgoing connections.

  • reindex

    Re-index the vault: re-embeds notes whose mtime changed, prunes orphan stubs, and re-runs community detection only when something actually changed. Pass `resolution` to force a Louvain rerun and tune cluster granularity (0.5 = fewer/broader clusters, 2.0 = more/finer); without it, a no-op vault skips Louvain entirely.

  • search

    Search vault notes. `hybrid` (default) fuses semantic + full-text ranks via Reciprocal Rank Fusion — no tuning needed, best for most queries. `semantic` is concept-only (better for abstract/paraphrased queries). `fulltext` is literal-token (better when you know the exact phrase exists). Semantic search is chunk-level — results are deduped to one-per-note by default. Set `unique: "chunks"` to return chunk-level hits with `chunkHeading`, `chunkStartLine`, and `chunkExcerpt`; supported by `semantic` and `hybrid` modes. `fulltext` is note-level only and ignores `unique` (full-text chunk search is …

Signals

Stars
13
Forks
3
Open issues
6
Last commit
May 16, 2026 (5 months ago)
Last release
May 16, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.sweir1/obsidian-brain
Version
1.7.24
Auth
No auth
Packages
npm obsidian-brain
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Obsidian Brain MCP server. Agent Mart. https://agentmart.dev/connectors/sweir1-obsidian-brain (last updated 2026-10-24)