obsidian-mcp-complete
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OBSIDIAN_VAULTS | No | name=path,name2=path2 pairs | |
| OBSIDIAN_API_KEY | No | Obsidian Local REST API key | |
| OBSIDIAN_REST_URL | No | Obsidian Local REST API URL | https://127.0.0.1:27124 |
| OBSIDIAN_READ_ONLY | No | Set to 1 to disable all writes | 0 |
| OBSIDIAN_MCP_PRETTY | No | Pretty-print JSON responses | 0 |
| OBSIDIAN_VAULT_PATH | No | Single vault path | |
| OBSIDIAN_RAG_COMMAND | No | Path/command for obsidian-rag CLI | rag |
| OBSIDIAN_DAILY_FOLDER | No | Folder for daily notes | 00-Inbox |
| OBSIDIAN_DAILY_PATTERN | No | Filename pattern for daily notes | YYYY-MM-DD.md |
| OBSIDIAN_DEFAULT_VAULT | No | Vault used when tool call omits vault | first vault |
| OBSIDIAN_ENABLE_DELETE | No | Set to 1 to allow delete operations | 0 |
| OBSIDIAN_ENABLE_UI_OPEN | No | Allow open obsidian:// system call | 0 |
| OBSIDIAN_ENABLE_COMMANDS | No | Enable command-palette tools | 0 |
| OBSIDIAN_REST_INSECURE_TLS | No | Skip TLS verification for local REST | 0 |
| OBSIDIAN_MAX_SEARCH_RESULTS | No | Max results from search tools | 50 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| obsidian_statusA | Return server configuration, vault roots, write safety flags, and tool capability summary. |
| obsidian_list_vaultsA | List configured Obsidian vaults. |
| obsidian_list_filesA | List files and folders in a vault folder. Supports recursive walks, max depth, and extension filtering. |
| obsidian_read_noteA | Read a note as raw content, full structured content, a document map, or one section. |
| obsidian_read_manyB | Read multiple notes in one call, optionally truncating content per note. |
| obsidian_searchA | Search notes by text or regex. Returns ranked snippets and supports tag and folder filters. |
| obsidian_smart_searchB | BM25-ranked vault search with title/tag/heading boosting and compact snippets. |
| obsidian_search_pathsB | Search filenames and vault-relative paths without reading full note bodies. |
| obsidian_recent_notesB | List recently modified notes or files, sorted newest first. |
| obsidian_vault_statsB | Return vault totals, file extensions, top folders, word-count sample, and graph health. |
| obsidian_rag_queryB | Run the local obsidian-rag CLI for true semantic retrieval/LLM answering. Requires rag to be installed and indexed. |
| obsidian_query_notesB | Structured Dataview-like query over local notes: tags, folders, linksTo, frontmatter equality/regex, sort, limit. |
| obsidian_get_frontmatterB | Read YAML frontmatter from a note. |
| obsidian_update_frontmatterB | Set, merge, replace, or delete frontmatter keys in a note. |
| obsidian_list_tagsB | List all tags across the vault with usage counts and sample notes. |
| obsidian_manage_tagsA | List, add, remove, or replace frontmatter tags on one note. Inline tags are preserved. |
| obsidian_create_noteB | Create a new Markdown note with optional frontmatter and related wiki-links. |
| obsidian_upsert_noteB | Create or replace a note. Can merge supplied frontmatter with existing frontmatter. |
| obsidian_append_to_noteB | Append or prepend Markdown to a note, optionally creating it. |
| obsidian_patch_noteB | Patch one heading, block reference, or frontmatter key with append/prepend/replace. |
| obsidian_replace_in_noteC | Search and replace inside one note. Supports literal or regex matching and replaceAll. |
| obsidian_regex_replaceA | Regex or literal find-and-replace across the vault with dry-run previews by default. |
| obsidian_move_noteA | Move or rename a note. Optionally rewrites incoming wiki-links and Markdown links. |
| obsidian_update_linksB | Rewrite incoming wiki-links and Markdown links from one target path to another. Dry-run by default. |
| obsidian_batch_renameA | Batch move/rename notes with optional incoming link updates. Dry-run by default. |
| obsidian_delete_noteA | Move a note to .trash/mcp or permanently delete it. Requires OBSIDIAN_ENABLE_DELETE=1 and confirmation. |
| obsidian_delete_folderA | Delete a folder recursively or move it to .trash/mcp. Dry-run by default and confirmation is required for real deletes. |
| obsidian_prune_empty_dirsB | Find and optionally remove empty directories bottom-up, skipping .obsidian, .git, and .trash. |
| obsidian_batch_create_notesA | Create many notes in one call. Each item reports success or error independently unless stopOnError is true. |
| obsidian_batchB | Execute multiple filesystem note operations in one call. Operations are best-effort unless stopOnError is true. |
| obsidian_linksA | Return outgoing links, backlinks, tags, and frontmatter for one note. |
| obsidian_get_backlinksA | List notes that link to a target note, with line numbers and raw link targets. |
| obsidian_traverse_graphB | Walk the note graph from a starting note for N hops in forward, backward, or both directions. |
| obsidian_shortest_pathB | Find a shortest graph path between two notes. |
| obsidian_find_orphansC | Find notes with no backlinks, no outgoing links, or neither. |
| obsidian_find_broken_linksC | List wiki/Markdown links that do not resolve to a note in the vault. |
| obsidian_graph_statsA | Return graph-level stats: node/edge counts, top connected notes, orphans, broken links. |
| obsidian_vault_graphB | Export the vault link graph as nodes, edges, and adjacency lists. |
| obsidian_vault_themesC | Map vault themes with TF-IDF-style term extraction and lightweight clustering. |
| obsidian_vault_suggestA | Suggest vault reorganization actions: MOCs, consolidation, archive candidates, and missing tags. |
| obsidian_diff_notesB | Compare two notes or compare a note with supplied text and return a structured line diff. |
| obsidian_list_tasksA | List Markdown tasks across the vault with filters for status, tags, folder, and due dates. |
| obsidian_update_taskB | Update one Markdown task by note path and 1-based line number. |
| obsidian_daily_noteA | Read, create, upsert, or append to a daily note using configurable date folder/pattern. |
| obsidian_periodic_noteB | Read/create/upsert/append daily, weekly, monthly, quarterly, or yearly notes. |
| obsidian_apply_templateB | Render a template note into a target note. Replaces {{date}}, {{title}}, {{vault}}, and custom variables. |
| obsidian_list_attachmentsA | List non-Markdown files, useful for images, PDFs, audio, and other embedded assets. |
| obsidian_import_attachmentB | Import a base64-encoded attachment into the vault. |
| obsidian_canvas_createB | Create an Obsidian JSON Canvas from semantic nodes/edges with automatic graph layout. |
| obsidian_canvas_readA | Read an Obsidian JSON Canvas as a compact semantic graph. Includes node/edge counts and raw arrays. Set includeRaw for full JSON. |
| obsidian_canvas_patchA | Patch a canvas by adding/updating/removing semantic nodes and edges, with optional relayout. |
| obsidian_canvas_relayoutA | Re-layout an existing JSON Canvas with dagre. Dry-run returns the candidate canvas without writing. |
| obsidian_write_canvasC | Create or overwrite an Obsidian .canvas file from nodes and edges. |
| obsidian_rest_statusB | Check the optional Obsidian Local REST API bridge status. |
| obsidian_rest_requestB | Escape hatch for Obsidian Local REST API requests. Requires OBSIDIAN_API_KEY. |
| obsidian_get_activeB | Read the note currently active in the Obsidian UI through Local REST API. |
| obsidian_post_activeB | Append Markdown to the currently active note through Local REST API. |
| obsidian_put_activeC | Replace the currently active note body through Local REST API. |
| obsidian_patch_activeB | Patch the active note by heading, block reference, or frontmatter key through Local REST API. |
| obsidian_delete_activeA | Delete the active note through Local REST API. Commands/delete must be explicitly enabled by configuration. |
| obsidian_list_commandsA | List Obsidian command-palette commands through Local REST API. |
| obsidian_execute_commandA | Execute an Obsidian command-palette command by id. Opt-in with OBSIDIAN_ENABLE_COMMANDS=1. |
| obsidian_search_dataviewC | Run a Dataview DQL query through the Obsidian Local REST API search endpoint. |
| obsidian_search_jsonlogicB | Run a JSONLogic query through the Obsidian Local REST API search endpoint. |
| obsidian_open_uriA | Build an obsidian://open URI for a note. This does not execute OS commands. |
| obsidian_open_in_uiA | Open a note in the Obsidian UI via obsidian:// URI. Execution requires OBSIDIAN_ENABLE_UI_OPEN=1. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| obsidian-status | Configured vaults and safety flags. |
| obsidian-tags | Vault-wide tag inventory for the default vault. |
Latest Blog Posts
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/jagoff/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server