obsidian-cli-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBSIDIAN_VAULT | Yes | Vault name this instance targets (injected as vault= on every call). | |
| OBSIDIAN_TIMEOUT | No | Per-command subprocess timeout (seconds). | 30 |
| OBSIDIAN_CLI_PATH | No | Path to the CLI binary if it isn't on PATH. | obsidian |
| OBSIDIAN_GUARD_TTL | No | Seconds to cache a successful vault-guard check. | 5 |
| OBSIDIAN_LOG_LEVEL | No | Log level (logs go to stderr). | INFO |
| OBSIDIAN_VERIFY_READS | No | Run the vault guard before reads too (not just writes). | true |
| OBSIDIAN_ALLOW_PERMANENT_DELETE | No | Allow delete_note(permanent=True) to bypass trash. | 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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_noteA | Read a note's full Markdown contents. Specify the note by |
| search_vaultA | Search the vault for text and return matching files (JSON). Set |
| list_filesC | List files in the vault, optionally filtered by |
| list_foldersA | List folders in the vault, optionally under a parent |
| note_infoB | Show metadata for a note (size, dates, counts). Defaults to the active note. |
| list_backlinksC | List notes that link to the target note (JSON). |
| list_tagsC | List tags in the vault, or for a specific note (JSON). |
| list_tasksB | List tasks across the vault or a note (JSON). Filter with |
| list_propertiesB | List frontmatter properties for the vault or a specific note (JSON). |
| read_propertyB | Read a single frontmatter property |
| vault_infoA | Show info about the configured vault (name, path, file/folder counts, size). |
| list_vaultsA | List all Obsidian vaults known to this machine, with their paths. Useful for discovering the exact vault name to put in OBSIDIAN_VAULT. This is a machine-level query, so it is not scoped to the configured vault. |
| create_noteA | Create a new note. Use |
| add_to_noteA | Append or prepend
|
| set_propertyC | Set a frontmatter property
|
| remove_propertyC | Remove a frontmatter property |
| move_noteC | Move a note to a destination folder or path ( |
| rename_noteB | Rename a note to a new |
| delete_noteA | Delete a note (moves it to trash by default — recoverable).
|
| update_taskA | Update a task's status. Identify the task by |
| run_obsidianA | Run any Obsidian CLI command not covered by a dedicated tool (power users). Pass the Disruptive commands (restart, reload, eval, devtools, plugins:restrict) and
all |
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 21 tools
Each tool targets a distinct action and resource. The list_* family (files, folders, tags, etc.) has clear boundaries, and CRUD operations are separate. No two tools could be easily confused.
All tool names follow a consistent verb_noun or list_noun pattern (e.g., create_note, list_tags). The few exceptions like note_info and vault_info are clearly compound nouns and do not break the pattern.
21 tools is slightly above the typical 3-15 range, but each tool addresses a specific need. The list_* tools could be simplified, but the count is still reasonable for a comprehensive Obsidian CLI interface.
The tool set covers most common operations: CRUD on notes, properties, tasks, search, and vault management. The run_obsidian fallback fills gaps. Missing a dedicated 'replace note content' tool is a minor gap that can be worked around.