Hey everyone,
Posting here to share a [new local mcp connector I made](git path = /dp-veritas/mcp-obsidian-tools), in case it is of use for others.
I’ve been using Obsidian for years now across multiple roles and companies, for personal research projects, a master’s degree, a doctorate, etc.
Throughout all of these contexts, Obsidian has been invaluable for my process of cataloguing, capturing and organizing knowledge. But I’ve always felt like there was a missing piece: the ability to query and apply my vault’s accumulated knowledge in other workflows and tools (I tried bridging this gap with apps like Pieces, but nothing quite solved the problem the way I wanted), so I built my own MCP server with more comprehensive tooling than what I found scattered across GitHub.
I’ve been experimenting with MCP clients like Cursor and Claude. What I really wanted was a way to query my Obsidian vault as a proper knowledge base, but in a way that understands Obsidian’s patterns: tags, wikilinks, backlinks, frontmatter, and the relationships between/across notes.
Instead of just exposing basic “read this file” or “search this folder” functionality, my MCP provides a suite of obsidian_ tools that understand how Obsidian vaults actually work:
-
obsidian_search_notes: Search notes by filename with simple regex/wildcards, returning relative paths -
obsidian_read_notes: Read the contents of multiple notes by path, with per-note error reporting -
obsidian_list_tagsandobsidian_notes_by_tag: Scan frontmattertagsand inline#tags, list tag counts, and fetch notes by tag (match any/all) -
obsidian_get_frontmatter: Return YAML frontmatter as JSON so MCP clients can leverage metadata likeauthor,tags,created, etc. -
obsidian_backlinks: List all notes that link to a given note (both Obsidian wikilinks and standard Markdown links) -
obsidian_search_content: Full-text search inside note contents, optionally returning snippets with context -
obsidian_query: Natural-language query across the vault, with optional date filters based on frontmatter dates
All tools are read-only and locked to the vault directory for safety.
Here’s a real example of how this unlocked new insights for me:
I asked Claude (connected via MCP) to analyze the files in my bachelors thesis folder from undergrad, regarding public opinion on nuclear deterrence in the 1980s.
Then I asked: “How did this research feed into other projects in my vault?”
The MCP tools searched through my vault, found my Masters dissertation on the European Green Deal, and identified a connection I had never consciously made: both projects examine how external pressures drove large-scale institutional transformation. In 2014, I studied media-driven public opinion pressuring Reagan’s foreign policy shift. In 2021, I studied regulatory frameworks pressuring corporate and national energy transition behavior.
Same underlying mechanism, different domains, seven years apart. The tools surfaced this by understanding the content + relationships, not just file names or folder structures.
The server is written in Node and works with any directory of Markdown files:
- Example configs for Cursor and Claude are included in the repo
A few things to be aware of:
-
Markdown-only searching: The
obsidian_search_notestool is specifically designed to search for Markdown (.md) files. If you have PDFs, images, or other attachments in your vault directory, they won’t appear in search results. This is intentional—the server focuses on the note content itself rather than treating the vault as a general file browser. However, if there’s demand for attachment discovery, I’m open to adding that. -
Read-only by design: All tools are strictly read-only. The server won’t modify, create, or delete notes. This keeps things safe but means you can’t use it for automated note creation or updates through your MCP client.
-
Performance on large vaults: Some operations (like
obsidian_list_tagsor full-textobsidian_search_content) scan the entire vault. On very large vaults (thousands of notes), these may take a moment. There’s room for caching optimizations if this becomes a bottleneck.
This started as a way for me to query my own curated notes and combine that context with external information in Claude/Cursor. It’s already changed how I reuse old thinking in new projects, and I’d love to hear from other Obsidian + MCP users:
- Are there other Obsidian-aware tools you’d want?
