Obsidian Everywhere
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (defaults 3737 for http-cli.js, 3738 for oauth-http-cli.js) | |
| OAUTH_ISSUER_URL | No | Public HTTPS origin (e.g. your Cloudflare Tunnel hostname) for oauth-http-cli.js | |
| OAUTH_LOGIN_SECRET | No | Single-user login secret for oauth-http-cli.js | |
| OBSIDIAN_VAULT_PATH | Yes | Vault path (or pass as a positional CLI arg) | |
| OBSIDIAN_EVERYWHERE_DB | No | SQLite index path (default: <vault>/.obsidian-everywhere/index.db) | |
| OAUTH_ENABLE_WRITE_TOOLS | No | Set to 'true' to enable write tools on public OAuth connector (default: off) | false |
| OBSIDIAN_EVERYWHERE_TOKEN | No | Static bearer token for http-cli.js | |
| OBSIDIAN_EVERYWHERE_READONLY | No | Set to 'true' to disable write tools (default: write tools on) | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| vault_overviewA | Get 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_statusA | Report mount-guard state, index freshness, indexed counts, write availability, and the last full reconciliation. |
| search_notesA | Full-text search over note content and titles, with optional tag/folder filters. Each result includes its outgoing/incoming link counts and tags. |
| list_folderA | List the immediate child folders, Markdown notes, and attachments in one vault folder. |
| list_notesA | List note paths explicitly, optionally scoped to a folder, with pagination. Use this instead of an empty full-text search when enumerating files. Pass |
| regex_searchA | Search note bodies with a JavaScript regular expression and return matching file, line, and excerpt. |
| read_noteA | Read a note's full content plus its graph context header (outlinks, backlinks, tags, frontmatter). Optionally read just one heading's section. |
| get_backlinksA | List every note that links to the given note, with the sentence/line each link appears in. |
| get_neighborhoodA | Get the n-hop subgraph around a note: an explicit node list and edge list, treating links as undirected for hop counting. |
| get_context_bundleA | The 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. |
| list_tagsA | List the full tag hierarchy (including nested #parent/child tags) with note counts. |
| get_notes_by_tagA | List every note carrying a given tag. |
| find_pathA | Find 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. |
| get_relatedA | Recommend similar notes that are NOT directly linked to the given note. Default method 'jaccard' uses shared tags and shared 1-hop neighbors, to surface notes that probably should be linked but aren't yet. Method 'semantic' instead uses embedding similarity (meaning-based, not requiring shared tags/links at all) -- lazily computes/caches embeddings on first use, which may add latency and returns fewer results until the vault is fully embedded. |
| semantic_searchA | Meaning-based search via embedding similarity (multilingual-e5-small) -- finds conceptually related notes even when they don't share the query's exact words, unlike search_notes' full-text matching. Lazily computes/caches embeddings on first use (up to 50 notes per call); if the vault isn't fully embedded yet, the response says how many notes remain and results may be incomplete until a later call finishes indexing them. |
| find_orphansA | List notes with no outgoing or incoming links — useful for vault maintenance. |
| find_unresolvedA | List links that don't resolve to any note in the vault, grouped by target — useful for vault maintenance. |
| get_hotkeysA | Read 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_obsidian_settingsA | Read the Templates folder and enabled/disabled core plugins from persisted vault settings. |
| validate_baseA | Statically 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. |
| create_noteA | Create 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. |
| apply_templateA | Create 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. |
| append_to_noteA | Append 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. |
| move_noteA | Move a note to a new vault-relative path and update every resolvable wikilink/Markdown link that pointed to it. Fails if the destination exists. |
| rename_noteA | Rename a note within its current folder and update links that point to it. |
| delete_noteA | Delete 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. |
| replace_textA | Replace exact text in one note without overwriting the full note. Multiple matches require all: true or an exact expectedOccurrences guard. |
| patch_sectionA | Replace the content under one heading, preserving the heading and the rest of the note. |
| update_frontmatterA | Merge one or more fields into a note's YAML frontmatter without replacing its body. |
| remove_frontmatter_fieldA | Remove exactly one YAML frontmatter field without replacing the note body. |
| bulk_update_frontmatterA | Merge 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. |
| bulk_remove_frontmatter_fieldA | Remove 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. |
| add_tagsA | Add one or more tags to a note's frontmatter |
| remove_tagsA | Remove one or more tags from a note's frontmatter |
| rename_tagA | Rename a tag vault-wide, across both frontmatter |
| bulk_replaceA | Replace 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. |
| rollback_bulk_editA | Restore every file from a rollback snapshot created by bulk_replace or rename_tag. |
| set_hotkeyA | Set 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_folderA | Set the persisted folder used by Obsidian's Templates core plugin. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/junnnnnw00/obsidian-everywhere'
If you have feedback or need assistance with the MCP directory API, please join our Discord server