Obsidian Server MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBSIDIAN_VAULT_ROOT | Yes | Absolute path to the Vault directory. The stdio entry requires only OBSIDIAN_VAULT_ROOT. |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reference_queryA | Find references to a file/heading/block within explicit source and resolution scopes. Read-only; returns matches plus uncertainties and exact source versions. Outside-scope incoming links remain unknown. See help topic references. |
| obsidian_helpB | Usage manual; omit topic for the topic index. |
| vault_listA | List a Vault directory; omit path or use "" for root. Directory names end in /. Protected/symlink entries are omitted; overflow errors, never truncation. |
| vault_readA | Read a Vault text file or target with its version. Discover targets via vault_get_document_map; targeted heading levels are relative. No link graph. |
| vault_get_document_mapB | Get heading paths, block IDs, property names and exact-byte version. Copy returned keys unchanged for targeted reads/patches. |
| search_queryA | Query Markdown with JsonLogic over path, content, tags, frontmatter and stat. Returns truthy values. Only scope limits the scan; query path/glob conditions only filter results. Overflow errors, never truncation. No link graph. |
| tag_listA | List tags and parent tags with per-file counts; names omit #. Scan/result limits fail explicitly. Inline recognition may differ from Obsidian Desktop. |
| vault_writeA | Create or replace UTF-8 text. Existing files require ifMatch; no force bypass. Creates parents. Binary/NUL refused; no automatic retry. |
| vault_appendA | Append UTF-8 text; creates missing files. Existing files require ifMatch; missing final LF is added first. Binary/NUL refused; no automatic retry. |
| vault_patchB | Patch a heading/block/property with exact-byte ifMatch from a read/map. Copy map keys unchanged. Heading content uses relative levels. No automatic retry. |
| vault_moveA | Move a file; no link/history updates. Creates parents; trailing / retains filename. Overwrite requires allowOverwrite. ifMatch checks source only. No retry or cross-filesystem fallback. |
| vault_deleteA | Delete a file to recoverable Vault .trash; permanent=true is irreversible. ifMatch checks source. No automatic retry or permanent fallback. |
| vault_read_binaryA | Read images and non-PDF attachments. auto: raster preview or signed HTTPS download link. bytes: original data up to 4 MiB. PDF is unsupported in every mode; use the client's native file upload/attachments. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
The vault_* tools carve out distinct operations (read vs write vs append vs patch vs move vs delete), and search_query vs reference_query serve different purposes. Minor overlap between vault_read/vault_get_document_map and vault_read vs vault_read_binary could cause slight confusion, but descriptions clarify.
The vault_* family is consistently verb-suffixed (vault_list, vault_read, vault_write), but other tools mix conventions (search_query, reference_query, tag_list, obsidian_help). Readable overall but not a single predictable pattern.
13 tools is well-scoped for an Obsidian vault server, covering the essential file, query, tag, and reference operations without bloat.
Strong lifecycle coverage: read, write, append, patch, move, delete, list, search, references, tags, and document mapping. Notable gap is no binary write (only vault_read_binary) and no copy operation, but these are minor workarounds.