Any vault bridge can find a note. What is unusual here is being able to ask which notes arrived recently and never got linked to anything, or which clusters have grown dense enough to deserve a summary — questions you cannot ask a search box. Deliberately uncached, so results are always current and large vaults will feel it.
A TypeScript server over a local Obsidian vault. Beyond read and write it ships a set of maintenance tools that answer questions about the vault's shape — which notes are unconnected, which clusters need a synthesis note — rather than only about its contents.
- Reading: `get_note` fetches one note, `list_directories` browses the structure with note counts, `get_backlinks` finds what links to a note with context
- Searching: `search_notes` does exact filename or content matching, `intelligent_search` combines direct matches, link proximity, tag expansion and structural context, `query_vault` takes a plain-language question
- Writing: `write_note`, `create_note` with frontmatter and tags, `append_to_note`, and `update_note_section` which replaces the content under one heading
- Maintenance: `audit_recent_notes` finds recently modified notes missing required frontmatter fields, `fresh_energy` finds new notes with no links either way, `synthesis_ready` detects interlinked clusters lacking a summary note
- Project work: `initiative_bridge` tracks notes tagged to a project that still carry open tasks, `pattern_echo` finds notes reusing a phrase or framework fragment
- `guided_path` builds a narrative tour from a seed note, with supporting threads, counterpoints and action items
One environment variable, `OBSIDIAN_VAULT_PATH`, set to the absolute path of your vault. Build from source with `npm install` and `npm run build`, then point the client at `dist/index.js` with an absolute path. Nothing is cached — every search reads the vault live, which avoids stale results at the cost of speed on very large vaults.
One command — npx -y obsidian-mcp
