obsidian-mcp-server
Read, search and edit notes, headings, tags and frontmatter in an Obsidian vault
Reads and edits notes, folders and tags in local Obsidian vaults you name at startup
By Steven Stavrakis (individual) TypeScript Local · stdio ProductivityKnowledge and memory
68 popularity score ★ 750 ↓ 3.6k/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
claude mcp add obsidian -- npx -y obsidian-mcp@2 serve --vault 'notes=<ABSOLUTE_PATH_TO_VAULT>'{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=<ABSOLUTE_PATH_TO_VAULT>"
]
}
}
}{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=<ABSOLUTE_PATH_TO_VAULT>"
]
}
}
}{
"servers": {
"obsidian": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"obsidian-mcp@2",
"serve",
"--vault",
"notes=<ABSOLUTE_PATH_TO_VAULT>"
]
}
}
}[mcp_servers.obsidian]
command = "npx"
args = ["-y", "obsidian-mcp@2", "serve", "--vault", "notes=<ABSOLUTE_PATH_TO_VAULT>"]gemini mcp add --scope user obsidian npx -- -y obsidian-mcp@2 serve --vault 'notes=<ABSOLUTE_PATH_TO_VAULT>'Obsidian MCP is a local stdio server that works on the Markdown files of one or more Obsidian vaults. It reads the files on disk directly, so the Obsidian app does not have to be running. Each vault is passed on the command line as an id and an absolute path (serve --vault notes=/path), up to ten of them, and the assistant only ever refers to vaults by id; host paths are not shown to it.
Its 12 tools cover reading notes in pages, creating, editing, moving and deleting notes, making folders, searching by content, file name or tag, and adding, removing or renaming tags across a vault. Moving a note rewrites links that point to it when they resolve to that note alone; ambiguous links are reported and left as they are. Reads return a SHA-256 etag that can be passed back on edits, moves and deletes so a note changed in the meantime is refused instead of overwritten.
Writes are journaled and can be undone: deleted notes go to a trash folder inside the vault by default, and completed transactions are kept under .obsidian-mcp for 30 days (pruned above 1 GiB) and can be restored with obsidian-mcp recovery while the server is stopped.
Version 2 renamed every tool from the 1.x names (read-note became obsidian_read_note, and so on) and changed their arguments; according to MIGRATING.md the old names are deliberately not kept as aliases, so saved prompts or scripts written for 1.x must be updated. Starting with a bare vault path, the 1.x way, still works but is deprecated and prints the replacement command.
| Runtime | Node.js 22+ |
|---|
Node.js 22 or newer (MIGRATING.md names 22 or 24 LTS) as seen by the MCP client, not just your terminal. One or more existing Obsidian vaults, each already containing a .obsidian folder, given by absolute path; the process needs read and write access to them. Obsidian itself does not need to be open.
Up to ten vaults per process, and vaults may not be nested or duplicated. Tools cannot touch .obsidian, .obsidian-mcp, .git, .backup or .trash, and symlinked paths are refused and skipped in scans. Text replies are capped at 25,000 characters, with long notes and searches paged by cursor. Permanently deleted notes cannot be restored. It works on files only: no Obsidian plugins, graph or app commands. The README warns that clients can call its destructive tools and advises backing vaults up first. 1.x tool names and arguments no longer work (MIGRATING.md).
Suits someone who wants an assistant to read and reorganise notes in a local Obsidian vault without running Obsidian or installing a community plugin, and who values recoverable writes and conflict checks. Since it writes to the vault, pair it with a backup or git. It reaches only files on the same machine, so it does not fit vaults you want to reach from a hosted assistant, or work that needs Obsidian's plugins or app features; a server that talks to the running app through a plugin is the other route.
obsidian_list_vaultsobsidian_read_noteobsidian_create_noteobsidian_edit_noteobsidian_delete_noteobsidian_move_noteobsidian_create_directoryobsidian_search_vaultobsidian_add_tagsobsidian_remove_tagsobsidian_rename_tagobsidian_manage_tags