Obsidian MCP

Turns Obsidian vaults into AI-queryable knowledge graphs with 12 tools

AI & MLTypeScriptv1.0.3

obsidian-mcp

MCP server that turns any Obsidian vault into an AI-queryable knowledge graph.

What makes this different from the 24+ existing Obsidian MCP servers:

  • Graph-first — BFS, shortest path, connected components, bridge detection via [[wikilinks]]
  • Zero infrastructure — No database, no Obsidian running, no API keys
  • Vault-agnostic — Works with any existing vault, no required structure
  • Backlink-aware writes — move_note auto-updates all references across the vault
  • Tiny — 4 runtime dependencies, ~42KB bundle

Quick Start

npx obsidian-mcp --vault ~/my-obsidian-vault

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "obsidian-mcp", "--vault", "/path/to/vault"]
    }
  }
}

Claude Code

claude mcp add obsidian -- npx -y obsidian-mcp --vault /path/to/vault

Tools (12)

Reading & Discovery

ToolDescription
vault_statsOverview: total notes, tags, links, orphans, components, top tags/hubs
read_noteFull content + frontmatter + links + backlinks + sections
search_notesFilter by tags, folder, frontmatter, keyword. All combinable

Graph Traversal

ToolDescription
graph_neighborsDirect links + backlinks for a note
graph_traverseBFS/DFS from a note, N hops deep with tag filtering
graph_shortest_pathShortest link chain between two notes
graph_analyzeComponents, orphans, bridges, hubs, dead links

Writing & Manipulation

ToolDescription
create_noteCreate with content + frontmatter
patch_noteAppend, prepend, or replace a section. Update frontmatter
move_noteRename/move + auto-update all backlinks across vault
delete_noteDelete + report broken links
manage_tagsAdd/remove/rename tags (vault-wide rename supported)

Configuration

Zero-config by default. Optional .obsidian-mcp.json in vault root:

{
  "ignore": ["templates/", "daily-notes/", ".trash/"],
  "watchDebounce": 100,
  "maxTraversalDepth": 10,
  "maxSearchResults": 500
}

CLI Flags

--vault <path>       Path to Obsidian vault (required)
--verbose            Enable debug logging
--log-level <level>  error | warn | info | debug (default: info)

How It Works

  1. On startup, scans all .md files and builds an in-memory graph (~1-3s for 1k notes)
  2. File watcher detects changes and updates the graph incrementally (~5ms per change)
  3. Claude queries the graph via MCP tools — no re-scanning needed
  4. Write operations update both the filesystem and the graph atomically

Hardcoded exclusions: .obsidian/, .trash/, node_modules/

Development

npm install
npm test              # Run 66 tests
npm run build         # Build to dist/
npm run dev -- --vault test/fixtures/vault  # Dev mode

License

MIT

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @smammadov/obsidian-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-seynurmammad0v-obsidian-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@smammadov/obsidian-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@smammadov/obsidian-mcpnpm

Compatible MCP Clients

Obsidian MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More