MCP Hub
Back to servers

obsidian-mcp-pro

The most feature-complete MCP server for Obsidian vaults. 23 tools and 3 resources for search, read, write, tags, link analysis, graph traversal, and canvas support.

glama
Forks
1
Updated
Mar 22, 2026

obsidian-mcp-pro

The most feature-complete MCP server for Obsidian vaults.

npm version License: MIT Node >= 18 Tests

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.

obsidian-mcp-pro MCP server


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 .canvas files 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 path
  • obsidian://tags — retrieve the full tag index as JSON
  • obsidian://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:

PriorityMethodDescription
1OBSIDIAN_VAULT_PATHEnvironment variable with the absolute path to your vault
2OBSIDIAN_VAULT_NAMEEnvironment variable to select a vault by folder name when multiple vaults exist
3Auto-detectionReads 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

ToolDescriptionKey Parameters
search_notesFull-text search across all notesquery, caseSensitive, maxResults, folder
get_noteRead a note's content and metadatapath
list_notesList notes in the vault or a folderfolder, limit
get_daily_noteGet today's (or a specific date's) daily notedate
search_by_frontmatterFind notes by frontmatter property valuesproperty, value, folder
create_noteCreate a new note with content and frontmatterpath, content, frontmatter
append_to_noteAppend content to an existing notepath, content, ensureNewline
prepend_to_notePrepend content after frontmatterpath, content
update_frontmatterUpdate frontmatter properties on a notepath, properties
create_daily_noteCreate today's daily note from templatedate, content, templatePath
move_noteMove or rename a noteoldPath, newPath
delete_noteDelete a note from the vaultpath, permanent
get_tagsGet all tags and their usage countssortBy
search_by_tagFind all notes with a specific tagtag, includeContent
get_backlinksGet all notes that link to a given notepath
get_outlinksGet all links from a given notepath
find_orphansFind notes with no links in or outincludeOutlinksCheck
find_broken_linksDetect links pointing to non-existent notesfolder
get_graph_neighborsGet notes connected within N link hopspath, depth, direction
list_canvasesList all .canvas files in the vault
read_canvasRead a .canvas file's nodes and edgespath
add_canvas_nodeAdd a node to a canvascanvasPath, type, content, x, y
add_canvas_edgeAdd an edge between two canvas nodescanvasPath, fromNode, toNode

MCP Resources

Resources provide a URI-based way to access vault data:

Resource URIDescription
obsidian://note/{path}Read any note by its vault-relative path
obsidian://tagsFull tag index with file lists (JSON)
obsidian://dailyToday's daily note content

Development

# Clone the repository
git clone https://github.com/rps321321/obsidian-mcp-pro.git
cd obsidian-mcp-pro

# Install dependencies
npm install

# Build
npm run build

# Run in development (watch mode)
npm run dev

# Start the server locally
OBSIDIAN_VAULT_PATH=/path/to/vault npm start

Project Structure

src/
  index.ts          # Server entry point and resource registration
  config.ts         # Vault detection and configuration
  types.ts          # Shared TypeScript interfaces
  lib/
    vault.ts        # Core vault operations (read, search, list)
    markdown.ts     # Frontmatter parsing and tag extraction
  tools/
    read.ts         # Search, get, list, daily note tools
    write.ts        # Create, append, prepend, update, move, delete tools
    tags.ts         # Tag index and tag search tools
    links.ts        # Backlinks, outlinks, orphans, broken links, graph tools
    canvas.ts       # Canvas read, node, edge, and list tools

Testing

npm test

122 tests covering vault operations, markdown parsing (frontmatter, wikilinks, tags, code block detection), and integration tests with a mock vault.

License

MIT


Contributing

Contributions welcome! Please open an issue first to discuss what you'd like to change. Pull requests without a corresponding issue may be closed.

Reviews

No reviews yet

Sign in to write a review