Obsidian Everywhere logoHealth: ActiveRecent health check succeeded.Last checked 8/7/2026, 3:36:18 PM

Obsidian EverywhereKnowledge & Memory

junnnnnw00
View Repository2

Graph-native Obsidian vault server offering search, backlinks, semantic context, and safe edits accessible locally or remotely via MCP.

Overview

This server indexes and parses Obsidian markdown vaults into a graph and semantic knowledge base, enabling token-budgeted context extraction using backlinks, n-hop neighborhoods, and PageRank. It provides 39 MCP tools for structured reads, semantic search, graph navigation, and guarded edits with rollback and dry-run capabilities. Remote Vault Bridge exposes these capabilities over authenticated HTTP, allowing external AI agents to securely read and modify the vault while the local path remains the source of truth. Use it to integrate Obsidian notes as AI context and enable remote agent workf…

Use cases

β€’Extract focused AI context from linked Obsidian notes
β€’Perform local semantic and full-text search over a vault
β€’Enable remote AI agents to read and safely edit a local vault
β€’Navigate note graphs with backlinks and shortest paths
β€’Manage vault content with guarded bulk and partial edits

Key features

β€’Graph and semantic context engine with backlinks, n-hop traversal, and PageRank
β€’Local multilingual semantic search with offline embedding model
β€’Safe write operations with dry-run, rollback, and mount-loss recovery
β€’Remote Vault Bridge exposing authenticated Streamable HTTP API
β€’39 MCP tools for structured reads, graph navigation, and vault management

Quick Install

Automated & IDE Setup

Copy the AI prompt to automatically install this server into your coding agent (Claude Code, Cursor, etc.), or use 1-click editor setup below.

Add to CursorAdd to VS Code
Manual Client & Custom JSON ConfigExpand JSON β–Ύ

Install Config Generator

claude_desktop_config.json
{
  "mcpServers": {
    "junnnnnw00-obsidian-everywhere": {
      "command": "npx",
      "args": [
        "-y",
        "obsidian-everywhere"
      ]
    }
  }
}

πŸ’‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

Capabilities & Tool Schemas

Inspect callable tools, capabilities, and parameters exposed to AI agents by Obsidian Everywhere.

Extracted Tool Capabilities
Graph and semantic context engine with backlinks, n-hop traversal, and PageRank
Local multilingual semantic search with offline embedding model
Safe write operations with dry-run, rollback, and mount-loss recovery
Remote Vault Bridge exposing authenticated Streamable HTTP API
39 MCP tools for structured reads, graph navigation, and vault management

Documentation Overview

English | ν•œκ΅­μ–΄

🧠 Obsidian Everywhere

Turn linked notes into AI context β€” and securely bridge your local vault to agents running anywhere.

CI License: MIT Node.js TypeScript MCP npm npm downloads PRs Welcome

Graph context Β· local semantic search Β· safe edits Β· remote agents over MCP

obsidian-everywhere MCP server

Watch the Remote Vault Bridge in 44 seconds

Remote Vault Bridge demo β€” a remote agent searches graph and semantic context, makes a guarded edit, and recovers from a disconnected local vault

Remote setup guide

Remote request β†’ semantic search β†’ graph context β†’ guarded edit β†’ mount-loss recovery.


Obsidian Everywhere is built around two ideas:

  1. Notes are a graph and a semantic knowledge base, not a folder of text files. Backlinks, n-hop neighborhoods, shortest paths, PageRank, full-text search, and local multilingual embeddings turn a topic into focused, token-budgeted context.
  2. Your vault should be usable where your agents run. The Remote Vault 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.

The local path stays the source of truth. There is no hosted copy, telemetry service, or mandatory cloud account. Remote access is a transport you operate, not a vault-sync product.

Contents

Features

Code
vault (.md files)
  β”‚  parse Β· watch
  β–Ό
SQLite index (FTS5)  ⇄  in-memory graph (graphology)
  β”‚                       n-hop Β· shortest path Β· PageRank
  β–Ό
39 MCP tools
  β”‚
  β–Ό
local stdio  Β·  authenticated remote HTTP  Β·  OAuth HTTP
  • 🧩 Graph + semantic context engine β€” a markdown parser (wikilinks, embeds, frontmatter, nested tags, headings, block references), a SQLite index with full-text search, and an in-memory graphology layer for n-hop traversal, shortest paths, and PageRank. get_context_bundle packs a topic and its most useful neighbors into a requested token budget.
  • 🌍 Remote Vault Bridge β€” agents on an external server get the same search, graph, context, and guarded editing tools over authenticated Streamable HTTP. Use a private network or an HTTPS tunnel such as ngrok; the vault itself stays on the machine you control.
  • 🧠 Local semantic search β€” semantic_search and get_related with method: "semantic" run a small multilingual embedding model (multilingual-e5-small) entirely on your machine β€” no API key, cloud account, or Ollama process to run. Downloads once (~120MB, cached under ~/.obsidian-everywhere/), then works fully offline.
  • πŸ›‘οΈ Safe writes and resilient mounts β€” partial edits, dry-run-first bulk operations, rollback snapshots, recoverable deletion, and an opt-in Beta mount guard. If a removable drive, NAS share, or container mount disappears, the index is preserved, writes are blocked, and a full reconciliation runs after it returns.
  • πŸ› οΈ 39 graph-native MCP tools β€” structured reads, graph navigation, semantic retrieval, safe lifecycle operations, persisted Obsidian settings, and explicit vault_status health reporting.

Two core capabilities

1. Turn a linked vault into focused AI context

Exact search finds the words you wrote. Semantic search finds the idea even when the wording or language differs. Graph traversal then explains how the matching notes relate. get_context_bundle combines those signals into a bounded context package instead of dumping an entire vault into the model.

2. Use and edit that context from an external server

Run Obsidian Everywhere beside the local vault, expose its HTTP endpoint through your private network or an HTTPS tunnel, and register the URL in the remote MCP client. The remote agent can read and search the local vault, then use the same guarded tools to create, append, move, tag, or clean up notes. The server reindexes each successful write before returning, so the next remote tool call sees the change.

For the complete ngrok path, see the Remote Vault Bridge with ngrok tutorial.

Full tool list

Read

ToolWhat it does
vault_overviewNote counts, top tags, PageRank hub notes, recently modified β€” a starting orientation
vault_statusMount availability, index freshness, write availability, and last full reconciliation
search_notesFull-text search with tag/folder filters (with a trigram fallback for CJK substring matches unicode61 alone would miss β€” see DECISIONS.md D9), each result annotated with link counts and tags
semantic_searchMeaning-based search via local embeddings (multilingual-e5-small, no external service) β€” finds conceptually related notes that don't share the query's exact words
read_noteStructured content/frontmatter/links/tags plus line pagination; optional heading-scoped read
list_notesExplicit folder-aware note listing with pagination; optionally projects named frontmatter fields (e.g. status, project) per note
list_folderImmediate child folders, notes, and attachments
regex_searchJavaScript-regex search with file, line, and excerpt
get_backlinksEvery note linking to a given note, with the linking sentence
get_neighborhoodExplicit n-hop node/edge list around a note (links treated as undirected)
get_context_bundleThe killer feature. Center note + prioritized 1-hop neighbors packed into a token budget
list_tagsFull nested tag hierarchy with counts
get_notes_by_tagNotes carrying a given tag (nested-aware)
find_orphansNotes with no incoming or outgoing links
find_unresolvedLinks that don't resolve to any note, grouped by target
find_pathShortest connection path between two notes, with a one-line summary per hop
get_relatedSimilar notes that aren't directly linked yet β€” Jaccard over shared tags/neighbors by default, or method: "semantic" for embedding similarity
get_hotkeys / get_obsidian_settingsPersisted hotkey command IDs, Templates folder, and core-plugin settings
validate_baseStatic YAML/shape validation for .base files or fenced Base blocks

Write

ToolWhat it does
create_noteCreate a new note (with frontmatter); reindexed immediately β€” the next tool call already sees it
apply_templateCreate a note from a template, substituting {{date}}/{{time}}/{{title}} (Obsidian's core Templates variables)
append_to_noteAppend to a note, optionally under a specific heading; fails closed if the heading isn't found
move_note / rename_note / delete_noteLifecycle operations with inbound-link rewriting, backlink guardrails, and recoverable trash
replace_text / patch_sectionGuarded exact-text and heading-scoped edits
update_frontmatter / remove_frontmatter_fieldChange properties without replacing the note body
bulk_update_frontmatter / bulk_remove_frontmatter_fieldSame, across every note in a folder (or the whole vault); dry-run first with rollback
add_tags / remove_tagsAdd or remove frontmatter tags on one note
rename_tagRename a tag vault-wide across frontmatter and inline #tag text, dry-run first with rollback
bulk_replace / rollback_bulk_editDry-run-first folder/regex replacement with snapshots and rollback
set_hotkey / set_templates_folderUpdate persisted Obsidian settings (vault reload may be required)

Write tools are on by default for stdio and the bearer-token HTTP transport, and off by default for the public OAuth connector transport (opt in with OAUTH_ENABLE_WRITE_TOOLS=true) β€” see Configuration and DECISIONS.md D15.

Try it without your vault

Run the built-in demo first. It creates a temporary sample vault, shows graph orientation and unresolved-link discovery, previews a safe bulk edit, and then removes the sample. It never reads or changes your own notes.

Terminal
npx -y obsidian-everywhere demo

Obsidian Everywhere demo: context bundles, related-note discovery, graph paths, unresolved links, link-safe moves, and rollback-ready bulk edits

When you are ready to connect a real vault, generate copyable configuration for Codex, ChatGPT Desktop, Claude Code, and Claude Desktop:

Terminal
npx -y obsidian-everywhere init /absolute/path/to/your/vault
npx -y obsidian-everywhere doctor /absolute/path/to/your/vault

init only prints configurationβ€”it never edits global client settings. doctor checks Node.js, permissions, Obsidian metadata, SQLite, parsing, and the graph engine without printing note content. Add --share to redact the vault path before pasting diagnostics into an issue.

Why Obsidian Everywhere?

There are several good Obsidian MCPs. Pick the architecture that matches how you work rather than assuming one server wins every category.

Obsidian Everywhereobsidian-mcp-serverLocal REST APITurboVault
InstallnpxnpxObsidian community plugincargo install / binary
Published tools39141674
Obsidian must be openNoYesYesNo
Best graph capabilityPageRank, shortest path, n-hop, unresolved linksOutgoing links in structured readsLive Obsidian metadata/searchMulti-hop, centrality, clusters, suggestions
Safe editingPartial edits; bulk dry-run, snapshot, rollbackSurgical edits and frontmatter/tag managementLive heading/block/frontmatter patchingConflict hashes, audit rollback, Git-backed batch
Live app commands/current filePersisted settings onlyYesYesNo
Remote transportstdio, bearer HTTP over private network or HTTPS tunnel, OAuth 2.1stdio, HTTP with JWT/OAuthHTTP with API keystdio, HTTP, WebSocket, TCP
Best fitGraph + semantic context from a headless vault, including guarded remote access and editsRich app-driven CRUD and OmnisearchDirect control of a running Obsidian appMaximum breadth, multi-vault and advanced analysis

Comparison checked against each project's published documentation on 2026-07-20. A blank or narrower cell means β€œnot documented there,” not that a project can never support it. If you need active-file state or command-palette execution, choose a plugin-backed server. If you want a headless, one-command graph server with token-budgeted context and guarded cleanup, that is the niche Obsidian Everywhere is designed for.

Everything runs locally by default. There is no account, API key, hosted vault, or telemetry requirement.

See docs/architecture.md for how it's built, docs/deploy.md for the deployment topology, and docs/ngrok-remote.md for an end-to-end external server tutorial.

Where does this actually run?

The obsidian-everywhere process needs direct filesystem access to your vault's .md files (to parse them, watch for changes, etc.) β€” so it must always run on the machine where your vault physically lives ("the vault machine": your laptop, most likely). It does not matter which client machine you're working from β€” the server always runs on the vault machine; only the client connection method changes.

Where you use the MCP clientWhat you need
The same machine as the vaultstdio. Nothing else β€” Codex, ChatGPT Desktop, Claude Code/Desktop, or another local client spawns the server directly.
A different machine you control (a lab/work server, another laptop, an SSH box)Bearer-token HTTP over a private network such as Tailscale, or an HTTPS tunnel such as ngrok.
claude.ai (web app or mobile app)OAuth HTTP + a public HTTPS URL (via Cloudflare Tunnel). claude.ai runs in Anthropic's cloud, not your network, so it can't reach Tailscale or localhost β€” it needs a real public address.

You can run more than one of these at once (e.g. stdio on your laptop and bearer-token HTTP for your work server) β€” they're independent processes that all index the same vault.

Quickstart

The fastest install needs no clone or build step. Run this on the vault machine (wherever your .md files live):

Terminal
npx -y obsidian-everywhere /absolute/path/to/your/vault

MCP clients normally launch this command for you using one of the configurations below.

Not sure whether the path and runtime are ready? Run the privacy-safe diagnostic:

Terminal
npx -y obsidian-everywhere doctor /absolute/path/to/your/vault

Option A β€” Codex CLI and ChatGPT Desktop, same machine as the vault (stdio)

Codex CLI, the Codex IDE extension, and ChatGPT Desktop's Codex experience share the same MCP configuration (official MCP documentation). Add the server once:

bash
codex mcp add obsidian-everywhere -- npx -y obsidian-everywhere /absolute/path/to/your/vault
codex mcp list

Then restart ChatGPT Desktop (or the IDE extension). In ChatGPT Desktop you can also add it through Settings β†’ MCP servers β†’ Add server, choose STDIO, and enter the same command and arguments. Type /mcp in Codex to confirm that the server and its 39 tools are connected.

For a project-scoped configuration instead, add this to a trusted project's .codex/config.toml; use ~/.codex/config.toml to make it available globally:

toml
[mcp_servers.obsidian-everywhere]
command = "npx"
args = ["-y", "obsidian-everywhere", "/absolute/path/to/your/vault"]
startup_timeout_sec = 30

Use an absolute vault path. GUI apps may not inherit the same PATH as your terminal; if npx is not found, replace command with the absolute result of command -v npx.

Option Aβ€² β€” Claude Code, same machine as the vault (stdio)

Still on the vault machine:

Terminal
claude mcp add obsidian-everywhere -- npx -y obsidian-everywhere /path/to/your/vault

Or with environment variables instead of a positional arg:

bash
OBSIDIAN_VAULT_PATH=/path/to/your/vault claude mcp add obsidian-everywhere -- npx -y obsidian-everywhere

Option Aβ€³ β€” Claude Desktop, same machine as the vault

Add to claude_desktop_config.json on the vault machine:

config.json
{
  "mcpServers": {
    "obsidian-everywhere": {
      "command": "npx",
      "args": ["-y", "obsidian-everywhere", "/absolute/path/to/your/vault"]
    }
  }
}

Option A‴ β€” Google Antigravity CLI (agy)

Add to your global Antigravity MCP configuration file (~/.gemini/config/mcp_config.json):

config.json
{
  "mcpServers": {
    "obsidian-everywhere": {
      "command": "npx",
      "args": ["-y", "obsidian-everywhere", "/absolute/path/to/your/vault"]
    }
  }
}

Option B β€” Codex, ChatGPT Desktop, or Claude on a different machine

Choose one secure route to the vault machine:

  • Private network: use Tailscale and follow the steps below.
  • Public HTTPS tunnel: use the read-only-first ngrok Remote Vault Bridge tutorial. Never expose the local plaintext HTTP port directly.

Step 1 β€” set up a private network between the two machines, if you chose Tailscale:

bash
# on BOTH the vault machine and the MCP client machine
curl -fsSL https://tailscale.com/install.sh | sh   # or: brew install tailscale (macOS)
tailscale up                                        # opens a browser to log in / join your "tailnet"
tailscale status                                    # confirm both machines can see each other

Note the vault machine's Tailscale hostname/IP from tailscale status (something like my-macbook.tailnet-name.ts.net or 100.x.y.z).

Step 2 β€” start the server, on the vault machine:

bash
OBSIDIAN_VAULT_PATH=/path/to/vault OBSIDIAN_EVERYWHERE_TOKEN=$(openssl rand -hex 32) \
  npx -y --package obsidian-everywhere obsidian-everywhere-http

Keep this token β€” you'll need it in step 3. (To keep this running persistently instead of in a foreground terminal, see the LaunchAgent setup in docs/deploy.md, or run it in Docker via docker-compose.yml if the vault machine is a server.)

Step 3 β€” connect from the other machine (the lab server, etc.), using the vault machine's Tailscale address from step 1. For Codex (and the shared ChatGPT Desktop configuration), keep the token in an environment variable:

server.ts
export OBSIDIAN_EVERYWHERE_CLIENT_TOKEN="<the token from step 2>"
codex mcp add obsidian-everywhere \
  --url http://<vault-machine-tailscale-name>:3737/mcp \
  --bearer-token-env-var OBSIDIAN_EVERYWHERE_CLIENT_TOKEN

Ensure ChatGPT Desktop is launched with that environment variable available, then restart it. Alternatively, use Settings β†’ MCP servers to add the Streamable HTTP URL and bearer credential if your app version exposes those fields.

For Claude Code:

Terminal
claude mcp add --transport http obsidian-everywhere \
  http://<vault-machine-tailscale-name>:3737/mcp \
  --header "Authorization: Bearer <the token from step 2>"

The second machine now has access to the vault indexed on the first. Full walkthrough (Docker, LaunchAgent): docs/deploy.md.

Option C β€” claude.ai web/mobile app (custom connector, OAuth)

This needs a public HTTPS endpoint β€” claude.ai's servers can't reach your Tailscale network or localhost. See docs/deploy.md for the full Cloudflare Tunnel walkthrough (including the no-domain-needed Quick Tunnel option for testing). Once your server is reachable at https://your-domain:

  1. claude.ai β†’ Settings β†’ Connectors β†’ Add custom connector
  2. Server URL: https://your-domain/mcp
  3. claude.ai auto-discovers the OAuth flow and shows this server's sign-in page β€” enter the OAUTH_LOGIN_SECRET you configured.

You only need this if you actually want claude.ai's web/mobile apps to read your vault. If you only ever use Claude Code (locally or from another machine), skip this entirely β€” Option A/B already fully covers that with no Cloudflare/OAuth involved.

Configuration

Env varUsed byMeaning
OBSIDIAN_VAULT_PATHallVault path (or pass as a positional CLI arg)
OBSIDIAN_EVERYWHERE_DBallSQLite index path override. Defaults are transport-specific: index-stdio.db, index-http.db, or index-oauth.db under <vault>/.obsidian-everywhere/.
OBSIDIAN_EVERYWHERE_TOKENhttp-cli.jsStatic bearer token
PORThttp-cli.js, oauth-http-cli.jsHTTP port (defaults 3737 / 3738)
OAUTH_ISSUER_URLoauth-http-cli.jsPublic HTTPS origin (e.g. your Cloudflare Tunnel hostname)
OAUTH_LOGIN_SECREToauth-http-cli.jsSingle-user login secret
OBSIDIAN_EVERYWHERE_READONLYcli.js, http-cli.jsSet to true to disable all write tools (default: write tools on)
OBSIDIAN_EVERYWHERE_MOUNT_GUARDall entrypointsOpt-in Beta mount-loss protection and automatic reconciliation
OBSIDIAN_EVERYWHERE_MOUNT_SENTINELall entrypointsOptional vault-relative identity path, e.g. .obsidian/app.json
OBSIDIAN_EVERYWHERE_MOUNT_RECHECK_MSall entrypointsRuntime mount probe interval (default 5000)
OAUTH_ENABLE_WRITE_TOOLSoauth-http-cli.jsSet to true to enable all write tools on the public connector (default: off)

Development

Terminal
npm run dev:stdio          # tsx, no build step
npm run dev:http
npm run dev:oauth-http
npm test                   # vitest, runs against fixtures/test-vault
npm run typecheck
npm run lint
npm run format:check

fixtures/test-vault/ is a 30+ note fixture vault exercising every link and parsing edge case the parser needs to handle (piped aliases, heading and block links, embeds, frontmatter-embedded wikilinks, nested tags, duplicate filenames across folders, unresolved links, code-block exclusion, and Korean filenames/tags/wikilinks). It's what every test in src/**/*.test.ts runs against.

Project status

Current v0.7.0 includes the graph and local semantic context engine, all three transports (stdio, bearer HTTP, OAuth HTTP), 39 MCP tools, guarded partial and bulk writes, and client setup for Codex, ChatGPT Desktop, and Claude. Remote Vault Bridge is a first-class deployment path. Its opt-in mount guard remains Beta while it receives cross-platform feedback for removable drives, NAS shares, and container mounts.

Help test a real remote-vault setup in Beta Issue #18, or ask questions in Discussion #19. A disposable vault is welcome; never share note contents, tokens, or private hostnames.

Contributing

Bug reports, feature requests, and PRs are welcome β€” see CONTRIBUTING.md for dev setup, testing conventions, and how the fixture vault relates to the test suite. Security issues: please see SECURITY.md rather than opening a public issue.

License

MIT β€” see LICENSE.

Related MCP Servers

View all alternatives

Frequently Asked Questions about Obsidian Everywhere

What is the Obsidian Everywhere MCP server used for?

Graph-native Obsidian vault server with 31 tools for search, backlinks, n-hop neighborhoods, structured and paginated reads, and safe file, partial, and bulk edits with dry-run and rollback. Works with Codex, ChatGPT, Claude, and any MCP client. npx -y obsidian-everywhere /path/to/vault

How do I install Obsidian Everywhere in Claude Desktop or Cursor?

Copy the client configuration JSON snippet from the installation section above into your claude_desktop_config.json or .cursor/mcp.json file, then restart your AI application.

Is the Obsidian Everywhere MCP server free and safe to use?

Yes, Obsidian Everywhere is listed as a free Model Context Protocol server. Always review repository source code and permissions before granting local workspace access to AI agents.

Technical Specs & Signals

TransportSTDIO
RuntimeNode.js
Health CheckActive
Views0
Installs0
GitHub stars2
43Quality signal: Fair Β· 43/100How this signal is calculated β–Ύ
Server availabilityNot measured

Not scored for repo-hosted servers β€” we can't reach the running server, only its GitHub page. Hosted MCP endpoints are health-checked live.

Verified ownership8/20
Documentation & tools23/30
Adoption1/15
Community engagement0/10

A guidance signal from public completeness & health data β€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

β˜… FeaturedMoxie Docs MCP logo

Moxie Docs MCP

MCP & Agent Skills for Automated Documentation, and codebase conventions + context

Explore Server β†’

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Free dofollow backlink: after claiming, verify your product site and place a dofollow AllMCPs badge β€” we recheck it stays live.

Claim & get free dofollow

Promote this listing

Optional paid placement. Free listings stay free forever.

Featured boost7 days in the spotlight Β· from $12/wk
Weeks
1

β†’ Runs until Aug 14, 2026

Category sponsorTop-of-category sponsorship Β· from $18/wk
Weeks
1

β†’ Runs until Aug 14, 2026

Cancel anytime β€” no long-term lock-in.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.