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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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. |
| search_filesA | Search 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. |
| read_fileA | Read 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_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' 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. |
| semantic_searchA | Optional 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. |
| 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