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 |
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
} |
| 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
- 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/jagoff/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server