Obsidian Remote MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | The host for the HTTP transport. Defaults to 127.0.0.1. | |
| PORT | No | The port for the HTTP transport. Defaults to 3000. | |
| NODE_ENV | No | Node environment mode, e.g., 'production' or 'development'. | |
| LOG_LEVEL | No | Log level for the server (e.g., info, debug, error). Defaults to info. | |
| AUTH_ENABLED | No | Enable or disable Bearer token authentication. Set to 'true' or 'false'. | |
| MCP_TRANSPORT | No | The transport mode for the MCP server. Can be 'stdio' or 'http'. | |
| BEARER_TOKEN_HASH | No | The SHA-256 hash of the Bearer access token. Required when AUTH_ENABLED is true. | |
| OBSIDIAN_BIN_PATH | No | Path to the Obsidian binary. Defaults to /usr/bin/obsidian. | |
| COMMAND_TIMEOUT_MS | No | Timeout for CLI commands in milliseconds. Defaults to 15000. | |
| MAX_SEARCH_RESULTS | No | Maximum number of search results to return. Defaults to 50. | |
| ENABLE_ADVANCED_CLI | No | When set to 'true', the guarded obsidian_cli tool is registered for allowlisted commands. Defaults to false. | |
| OBSIDIAN_VAULT_PATH | Yes | Absolute path to the Obsidian vault. | |
| RATE_LIMIT_PER_MINUTE | No | Maximum requests per minute per client. Defaults to 120. | |
| ENABLE_DESTRUCTIVE_TOOLS | No | When set to 'false', destructive operations (obsidian_delete_note and obsidian_move_note) are excluded from MCP registration. Defaults to true. |
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
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| obsidian_get_vaultB | Returns vault metadata, file counts, and connectivity status |
| obsidian_list_filesC | Lists files and subdirectories under a vault folder |
| obsidian_get_file_infoB | Retrieves size, modification timestamp, and metadata of a file |
| obsidian_read_noteC | Reads the full content and frontmatter of a vault note |
| obsidian_create_noteC | Creates a new note with optional template |
| obsidian_append_noteC | Appends text content to an existing note with revision check |
| obsidian_prepend_noteB | Prepends text content below frontmatter in an existing note with revision check |
| obsidian_update_noteC | Updates note content with optimistic revision control |
| obsidian_move_noteC | Moves or renames a note within the vault with revision check |
| obsidian_delete_noteC | Deletes or moves a note to the vault trash with revision check |
| obsidian_searchC | Performs full-text vault search returning file matches and line numbers |
| obsidian_search_contextC | Performs full-text vault search returning contextual lines around matches |
| obsidian_read_daily_noteB | Reads today's or a specific date's daily note |
| obsidian_append_daily_noteC | Appends a work item or note to the daily note with revision check |
| obsidian_prepend_daily_noteC | Prepends text to the daily note with revision check |
| obsidian_get_propertiesA | Retrieves all frontmatter properties of a note |
| obsidian_get_propertyC | Retrieves a specific frontmatter property value |
| obsidian_set_propertyC | Sets or updates a frontmatter property with structured types and revision check |
| obsidian_remove_propertyB | Removes a frontmatter property from a note with revision check |
| obsidian_list_tasksC | Lists pending or completed tasks vault-wide or in a note |
| obsidian_toggle_taskC | Toggles the completion checkbox on a specific line of a note with verification |
| obsidian_get_backlinksB | Lists all incoming links referencing a target note |
| obsidian_get_linksC | Lists all outgoing internal links within a note |
| obsidian_get_orphansB | Discovers orphaned notes that have no internal links |
| obsidian_get_unresolved_linksB | Lists broken internal wikilinks pointing to non-existent notes |
| obsidian_get_deadendsA | Lists notes with incoming links but zero outgoing links |
| obsidian_get_tagsB | Returns all tags and their occurrence counts |
| obsidian_get_tag_notesC | Retrieves all notes tagged with a specific tag |
| obsidian_list_basesB | Lists all .base database schema files in the vault |
| obsidian_query_baseC | Queries a .base database view |
| obsidian_get_note_contextC | Retrieves full note context (content, frontmatter, headings, backlinks, and related notes) with budget options |
| obsidian_find_notesC | Multi-criteria note discovery by title, tag, folder, property, or content query |
| obsidian_recent_changesC | Lists notes recently modified or created within the vault for change awareness |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-work-report | |
| knowledge-capture | |
| weekly-review | |
| monthly-review | |
| project-review | |
| meeting-summary | |
| vault-health-check |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| vault-info | General vault metadata, file counts, and connectivity status |
| daily-today | Direct content of today's daily note |
| vault-tasks | Vault-wide list of pending tasks |
| vault-tags | Vault-wide tags inventory and counts |
TDQS
Scored across 33 tools
Most tools have distinct resource+action targets, but several pairs overlap: obsidian_read_note vs obsidian_get_note_context both retrieve note content and frontmatter; obsidian_search vs obsidian_search_context both perform full-text search with different output formats; obsidian_append_note vs obsidian_append_daily_note target the same operation on different note types. These could cause occasional misselection without careful reading.
All tools use the obsidian_ prefix and snake_case, with a consistent verb_noun pattern (e.g., get_vault, list_files, create_note). Minor deviations like recent_changes (noun phrase) and search (bare verb) slightly break the pattern, but overall highly consistent.
33 tools is above the typical 3-15 range and exceeds the 25+ threshold for 'too many'. While each tool covers a distinct Obsidian feature, the set is heavy and could be consolidated (e.g., get_property/get_properties, append_note/append_daily_note), indicating over-provisioning for a single MCP server.
The surface covers note CRUD, daily notes, properties, tasks, links, tags, bases, search, and discovery comprehensively. Minor gaps exist: no folder creation/deletion/rename, no explicit daily note creation, and no bulk operations, but agents can work around these.