The most feature-complete MCP server for Obsidian vaults.
obsidian-mcp-pro
The most feature-complete MCP server for Obsidian vaults.
Give AI assistants deep, structured access to your Obsidian knowledge base. Read, write, search, tag, analyze links, traverse graphs, and manipulate canvases — all through the Model Context Protocol.
Features
Read & Search
- Full-text search across all vault notes
- Read individual notes with frontmatter parsing
- List and filter notes by folder, date, or pattern
- Search by frontmatter fields and values
- Retrieve daily notes automatically
Write & Modify
- Create new notes with frontmatter and content
- Append or prepend content to existing notes
- Update frontmatter properties programmatically
- Move and rename notes with automatic link updates
- Delete notes safely
Tags
- Build and query a complete tag index
- Search notes by single or multiple tags
Links & Graph
- Get backlinks (what links to a note)
- Get outlinks (what a note links to)
- Find orphan notes with no inbound or outbound links
- Detect broken links pointing to non-existent notes
- Traverse graph neighbors to a configurable depth
Canvas
- Read
.canvasfiles with full node and edge data - Add new nodes (text, file, link, group) to canvases
- Add edges between canvas nodes
- List all canvases in the vault
MCP Resources
obsidian://note/{path}— read any note by its vault-relative pathobsidian://tags— retrieve the full tag index as JSONobsidian://daily— get today's daily note content
Quick Start
Claude Desktop
Add this to your Claude Desktop configuration file (claude_desktop_config.json):
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "obsidian-mcp-pro"]
}
}
}
If you have multiple vaults, specify which one:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "obsidian-mcp-pro"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
}
}
}
}
Claude Code
claude mcp add obsidian-mcp-pro -- npx -y obsidian-mcp-pro
Configuration
The server locates your vault using the following priority:
| Priority | Method | Description |
|---|---|---|
| 1 | OBSIDIAN_VAULT_PATH |
Environment variable with the absolute path to your vault |
| 2 | OBSIDIAN_VAULT_NAME |
Environment variable to select a vault by folder name when multiple vaults exist |
| 3 | Auto-detection | Reads Obsidian's global config (obsidian.json) and uses the first valid vault found |
Auto-detection works on macOS, Windows, and Linux by reading the platform-specific Obsidian configuration directory.
Tool Reference
| Tool | Description | Key Parameters |
|---|---|---|
search_notes |
Full-text search across all notes | query, caseSensitive, maxResults, folder |
get_note |
Read a note's content and metadata | path |
list_notes |
List notes in the vault or a folder | folder, limit |
get_daily_note |
Get today's (or a specific date's) daily note | date |
search_by_frontmatter |
Find notes by frontmatter property values | property, value, folder |
create_note |
Create a new note with content and frontmatter | path, content, frontmatter |
append_to_note |
Append content to an existing note | path, content, ensureNewline |
prepend_to_note |
Prepend content after frontmatter | path, content |
update_frontmatter |
Update frontmatter properties on a note | path, properties |
create_daily_note |
Create today's daily note from template | date, content, templatePath |
move_note |
Move or rename a note | oldPath, newPath |
delete_note |
Delete a note from the vault | path, permanent |
get_tags |
Get all tags and their usage counts | sortBy |
search_by_tag |
Find all notes with a specific tag | tag, includeContent |
get_backlinks |
Get all notes that link to a given note | path |
get_outlinks |
Get all links from a given note | path |
find_orphans |
Find notes with no links in or out | includeOutlinksCheck |
find_broken_links |
Detect links pointing to non-existent notes | folder |
get_graph_neighbors |
Get notes connected within N link hops | path, ` |
Tools (19)
search_notesFull-text search across all notesget_noteRead a note's content and metadatalist_notesList notes in the vault or a folderget_daily_noteGet today's or a specific date's daily notesearch_by_frontmatterFind notes by frontmatter property valuescreate_noteCreate a new note with content and frontmatterappend_to_noteAppend content to an existing noteprepend_to_notePrepend content after frontmatterupdate_frontmatterUpdate frontmatter properties on a notecreate_daily_noteCreate today's daily note from templatemove_noteMove or rename a notedelete_noteDelete a note from the vaultget_tagsGet all tags and their usage countssearch_by_tagFind all notes with a specific tagget_backlinksGet all notes that link to a given noteget_outlinksGet all links from a given notefind_orphansFind notes with no links in or outfind_broken_linksDetect links pointing to non-existent notesget_graph_neighborsGet notes connected within N link hopsEnvironment Variables
OBSIDIAN_VAULT_PATHAbsolute path to your vaultOBSIDIAN_VAULT_NAMEVault folder name to select when multiple vaults existConfiguration
{"mcpServers": {"obsidian": {"command": "npx", "args": ["-y", "obsidian-mcp-pro"]}}}