Obsidian MCP Server
JSON →Manage notes and files in an Obsidian vault. Requires the Obsidian Local REST API plugin.
Install
npx (no Tools · 14
- obsidian_get_note Read a note as raw content, full structured form (content + frontmatter + tags + stat, with optional outgoing links), structural document map, or a single section.
- obsidian_list_notes List notes and subdirectories under a vault path. Recursive walk (default depth 2, max depth 20; 1000-entry cap) with optional extension and nameRegex filters.
- obsidian_list_tags List every tag found across the vault with usage counts, including hierarchical parents. Optional nameRegex post-filters the result set.
- obsidian_list_commands List Obsidian command-palette commands, optionally filtered by nameRegex on display name. Opt-in via OBSIDIAN_ENABLE_COMMANDS=true (paired with obsidian_execute_command).
- obsidian_search_notes Search the vault by text, JSONLogic, or BM25-ranked Omnisearch (when the plugin is reachable). Results paginate via opaque cursors.
- obsidian_write_note Create a note, replace a single section in place, or — with overwrite: true — clobber an existing file. Refuses whole-file writes against an existing path by default.
- obsidian_append_to_note Append content to a note. Without section, creates the file if missing. With section, appends to a specific heading, block, or frontmatter field (file must exist).
- obsidian_patch_note Surgical append / prepend / replace against a heading, block reference, or frontmatter field.
- obsidian_replace_in_note Body-wide search-replace inside a single note. Literal or regex matching with whole-word, whitespace-flexible, and case-sensitivity options; supports capture-group replacement.
- obsidian_manage_frontmatter Atomic get / set / delete on a single frontmatter key.
- obsidian_manage_tags Add, remove, or list tags. Defaults to the frontmatter tags: array; location: 'inline' or 'both' opts into mutating the note body.
- obsidian_delete_note Permanently delete a note. Elicits human confirmation when the client supports it.
- obsidian_open_in_ui Open a file in the Obsidian app UI, with failIfMissing and newLeaf toggles.
- obsidian_execute_command Execute an Obsidian command-palette command by ID. Opt-in via OBSIDIAN_ENABLE_COMMANDS=true.
Environment variables
OBSIDIAN_API_KEYOBSIDIAN_BASE_URLOBSIDIAN_OMNISEARCH_URLMCP_HTTP_HOSTMCP_HTTP_PORTMCP_PUBLIC_URLMCP_AUTH_SECRET_KEY
Links
★ 558 GitHub stars