Obsidian Everywhere MCP server
Graph context, semantic search, guarded edits, and reviewable Git for local Obsidian vaults.
15 stars118 downloads/wk
Reviews
Write oneNobody has reviewed Obsidian Everywhere yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Obsidian Everywhere tools (46, 9 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_tagsAdd one or more tags to a note's frontmatter `tags` array, deduplicated against existing tags.
append_to_noteAppend content to an existing note — either at the end of the file, or at the end of a specific heading's section. Fails without writing anything if the heading isn't found. Reindexed immediately.
apply_templatewrite actionCreate a new note from an existing template note (path, title, or alias), substituting Obsidian's core Templates plugin variables: {{date}}, {{date:FORMAT}}, {{time}}, {{time:FORMAT}}, {{title}}. FORMAT supports YYYY/YY/MM/DD/HH/mm/ss tokens. Templater-only syntax (<% %>) is not evaluated and is left as literal text. Fails if the target note already exists unless overwrite is set.
bulk_remove_frontmatter_fieldwrite actionRemove exactly one frontmatter field from every note under a folder (or the whole vault) that carries it. Defaults to dry-run, enforces maxFiles, and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.
bulk_replaceReplace text across notes selected by folder, optionally using regex. Defaults to dry-run, reports every changed file, enforces maxFiles, and creates a rollback snapshot before applying.
bulk_update_frontmatterwrite actionMerge the same frontmatter fields into every note under a folder (or the whole vault). Only notes where a value actually changes are touched. Defaults to dry-run, enforces maxFiles, and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.
create_notewrite actionCreate a new note in the vault. Fails if the note already exists unless overwrite is set. The note is indexed immediately — outlinks/tags in its content become real graph edges right away, visible to the very next tool call.
delete_notewrite actionDelete a note. By default it is moved to the vault's .trash folder and deletion is refused when backlinks exist. Permanent deletion and backlink override must be explicit.
find_orphansList notes with no outgoing or incoming links — useful for vault maintenance.
find_pathFind the shortest connection path between two notes (links treated as undirected), with a one-line summary of each note along the way. Shows how two concepts are actually connected in the vault.
find_unresolvedList links that don't resolve to any note in the vault, grouped by target — useful for vault maintenance.
get_backlinksList every note that links to the given note, with the sentence/line each link appears in.
get_context_bundleThe killer feature: given a topic (note path/title/alias, or a search phrase), pack the center note plus its most relevant 1-hop neighbors (prioritized by backlink count, then recency) into a token budget. Prefer this over read_note when you want broad context on a topic rather than just one note.
get_hotkeysRead persisted Obsidian hotkey bindings and their actual command IDs from .obsidian/hotkeys.json. This includes configured commands, not the app's full runtime command registry.
get_neighborhoodGet the n-hop subgraph around a note: an explicit node list and edge list, treating links as undirected for hop counting.
get_notes_by_tagList every note carrying a given tag.
get_obsidian_settingsRead the Templates folder and enabled/disabled core plugins from persisted vault settings.
get_relatedRecommend similar notes that are NOT directly linked to the given note. Default method 'jaccard' is lightweight and uses shared tags and shared 1-hop neighbors. The optional method 'semantic' uses local embedding similarity and requires OBSIDIAN_EVERYWHERE_ENABLE_SEMANTIC=true because its multilingual model exceeds the default low-memory budget.
git_commitPreview, then create one unsigned local commit from explicitly selected safe files. Preview binds a single-line message and exact proposed tree to a five-minute one-use approval ID. Hooks, filters, hidden paths, suspected secrets, amend, and commit-all are blocked.
git_diffRead a bounded patch for safe repository-relative paths, including an explicitly selected untracked file in head mode. External diff drivers, textconv, submodules, and color are disabled; hidden/sensitive paths and configured clean filters are refused.
git_logRead recent local commit history without fetching a remote or exposing remote URLs.
git_pushPreview, then push exactly the current HEAD to its existing upstream branch at an operator-pinned HTTPS destination. Execution uses an exact-OID lease as a compare-and-swap guard. Caller-provided force, URLs, refs/refspecs, tags, hooks, signing, submodules, push options, and automatic retry are unavailable.
git_statusInspect the live Git status of the operator-configured repository. Hidden, excluded, and sensitive paths are counted but never named. Git paths are repository-relative. This does not fetch a remote.
list_folderList the immediate child folders, Markdown notes, and attachments in one vault folder.
list_notesList note paths explicitly, optionally scoped to a folder, with pagination. Use this instead of an empty full-text search when enumerating files. Pass `properties` to project specific frontmatter fields (e.g. status, project) alongside each note without reading every note individually.
list_tagsList the full tag hierarchy (including nested #parent/child tags) with note counts.
move_noteMove a note to a new vault-relative path and update every resolvable wikilink/Markdown link that pointed to it. Fails if the destination exists.
patch_sectionwrite actionReplace the content under one heading, preserving the heading and the rest of the note.
read_fileRead any indexed vault file. Markdown delegates to read_note; PDF/Office/OpenDocument/EPUB/RTF/text/code/data files return locally extracted, paginated text; supported images return MCP image content. Legacy or unknown binary formats return metadata and a clear unsupported status.
read_noteRead a note's full content plus its graph context header (outlinks, backlinks, tags, frontmatter). Optionally read just one heading's section.
regex_searchSearch note bodies with a JavaScript regular expression and return matching file, line, and excerpt.
remove_frontmatter_fieldwrite actionRemove exactly one YAML frontmatter field without replacing the note body.
remove_tagswrite actionRemove one or more tags from a note's frontmatter `tags` array.
rename_noteRename a note within its current folder and update links that point to it.
rename_tagRename a tag vault-wide, across both frontmatter `tags` arrays and inline #tag text. Defaults to dry-run and creates a rollback snapshot (restorable via rollback_bulk_edit) when applied.
replace_textReplace exact text in one note without overwriting the full note. Multiple matches require all: true or an exact expectedOccurrences guard.
rollback_bulk_editRestore every file from a rollback snapshot created by bulk_replace or rename_tag.
search_filesSearch filenames, vault-relative paths, and extracted text from non-Markdown vault files (PDF, DOCX, PPTX, XLSX, OpenDocument, EPUB, RTF, and text/code/data files). Extraction is local, cached, and incremental.
search_notesFull-text search over note content and titles, with optional tag/folder filters. Each result includes its outgoing/incoming link counts and tags.
semantic_searchOptional meaning-based search via local multilingual-e5-small embeddings. Requires OBSIDIAN_EVERYWHERE_ENABLE_SEMANTIC=true because the model can exceed 500 MiB RSS; the default low-memory mode keeps graph, FTS, attachment search, and Jaccard related-note search available without loading it.
set_hotkeySet persisted hotkey bindings for an exact Obsidian command ID. The app may need a vault reload; command IDs cannot be runtime-validated by the standalone server.
set_templates_folderSet the persisted folder used by Obsidian's Templates core plugin.
update_frontmatterwrite actionMerge one or more fields into a note's YAML frontmatter without replacing its body.
validate_baseStatically validate YAML and core structural fields in a .base file or fenced base block. Reports the limit that formula semantics and rendering require a live Obsidian app.
vault_overviewGet a high-level picture of the vault: note counts, top tags, hub notes by PageRank, and recently modified notes. Good first call at the start of a conversation.
vault_statusReport mount-guard state, index freshness, indexed counts, write availability, and the last full reconciliation.
Public scan report
scanner v0.1.9 · 2026-09-21 · same rubric, same numbers if you re-run it
- Code scan33 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 7 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
What the publisher says
From the Obsidian Everywhere repository's README, as published. We do not edit it. Read it on GitHub
English | 한국어
🧠 Obsidian Everywhere
Turn linked notes into AI context, use that context from agents anywhere, and checkpoint approved changes with Git.
Graph context · local semantic search · remote agents · guarded edits · opt-in Git checkpoints
Watch the Remote Vault Bridge in 44 seconds
Remote setup guide
Remote request → semantic search → graph context → guarded edit → mount-loss recovery.
Obsidian Everywhere is built around three ideas:
files.** Backlinks, n-hop neighborhoods, shortest paths, PageRank, full-text search, and local multilingual embeddings turn a topic into focused, token-budgeted context.
- **Notes are a graph and a semantic knowledge base, not a folder of text
Bridge exposes that same graph and its guarded write tools over authenticated Streamable HTTP. A Claude Code or Codex process on another server can search, reason over, append to, and reorganize a vault that remains on your own machine.
- Your vault should be usable where your agents run. The Remote Vault
the vault or one configured folder inside it is already a Git repository, the opt-in Git tools can inspect status, bounded diffs, and local history. Commit and push each require a preview, explicit confirmation, and a short-lived one-use approval ID.
- Version-control actions deserve a narrower boundary than file writes. If
The local path stays the source of truth. Obsidian Everywhere does not create a hosted copy, telemetry service, or mandatory cloud account; optional Git push publishes only to a repository the operator already configured. Remote access is a transport you operate, not a vault-sync product.
Contents
- Watch the Remote Vault Bridge in 44 seconds
- Features
- Three core workflows
- Vault Git
- Try it without your vault
- Why Obsidian Everywhere?
- Where does this actually run?
- Quickstart
- Configuration
- Development
- Project status
- Contributing
Features
vault (.md files)
│ parse · watch
▼
SQLite index (FTS5) ⇄ in-memory graph (graphology)
│ n-hop · shortest path · PageRank
▼
41 core MCP tools + 0–5 opt-in Git tools
│
▼
local stdio · authenticated remote HTTP · OAuth HTTPShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y obsidian-everywhere on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add obsidian-everywhere -- npx -y obsidian-everywhere
Obsidian Everywhere: common questions
- Is Obsidian Everywhere MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Obsidian Everywhere safety report
- How do I install Obsidian Everywhere?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Obsidian Everywhere need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Obsidian Everywhere maintained?
- The last commit was 7 days ago (2026-09-14). The latest release is v0.9.2.
- What can I use instead of Obsidian Everywhere?
- Servers from other publishers that do the same job: Srclight MCP server, Agent Memory MCP server and Kindex MCP server. Compare all Obsidian Everywhere alternatives.
Alternatives to Obsidian Everywhere
Same job from other publishers: the closest match first, then the best rated.
- SrclightDeep code indexing for AI agents. FTS5 + embeddings + call graphs + git intelligence. Fully local.not reviewedEstablishedA
- Agent MemoryGit-native project memory for AI coding agents: Markdown source of truth, reviewable, secret-safe.not reviewedGrowingA
- KindexPersistent knowledge graph and MCP server for AI workflows with git-tracked project context.not reviewedGrowingA
- KindexPersistent knowledge graph and MCP server for AI workflows with git-tracked project context.not reviewedGrowingB
- GitwandAuto-resolves Git merge conflicts so agents only touch the complex hunks.not reviewedEstablishedA