npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vault-master-mcp

v0.1.0

Published

MCP server for graph-aware Obsidian vault traversal

Readme


The Problem

Every Obsidian MCP server gives your AI flat file access — read a note, list a folder, maybe search by name. But your vault isn't a folder of files. It's a knowledge graph of interconnected ideas linked by [[wikilinks]], tags, and frontmatter.

When an AI agent reads a single note without understanding its connections, it's like reading one page of a wiki and thinking you understand the topic.

vault-master-mcp builds an in-memory graph index from your vault's wikilinks, backlinks, and tags, then gives AI agents the tools to traverse, search, and assemble context from that graph — all within a token budget.


Key Features

Token-Budgeted Context Assembly

Ask for context on a topic and get the optimal subgraph that fits your token budget. No more "sorry, that's too much context" — the server handles it.

get_graph_context({ topic: "machine-learning", token_budget: 4000 })
→ Returns the most relevant connected notes that fit in 4K tokens

Graph Traversal

BFS walks with direction control. Follow only outgoing links, incoming backlinks, or both.

walk_graph({ start: "projects/my-project.md", depth: 2, direction: "outgoing" })
→ See everything this note links to, 2 levels deep

Knowledge Freshness Tracking

Notes carry lifecycle metadata — active, superseded, draft, archived. Agents can check if knowledge is current or chase fresher sources via superseded_by links.

Live Sync

Chokidar file watcher keeps the graph and search index updated as you edit in Obsidian. No restarts needed.

Full-Text Search with Graph Context

SQLite FTS5 search that optionally includes graph neighbors in results, so agents find notes and their connections.


Quick Start

# Clone and build
git clone https://github.com/mattbotcode/vault-master-mcp
cd vault-master-mcp
npm install && npm run build

# Run against your vault
node dist/index.js --vault ~/my-vault

Works With

vault-master-mcp runs as an MCP server — it works with any MCP-compatible client:

| Client | Config Location | |--------|----------------| | Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) | | Claude Code | ~/.claude/settings.json or project .mcp.json | | Cursor | Cursor MCP settings | | VS Code + Copilot | .vscode/mcp.json | | Any MCP client | See MCP docs |

Claude Desktop Example

{
  "mcpServers": {
    "vault-master": {
      "command": "node",
      "args": ["/path/to/vault-master-mcp/dist/index.js", "--vault", "/path/to/your/vault"]
    }
  }
}

Claude Code Example

{
  "mcpServers": {
    "vault-master": {
      "command": "node",
      "args": ["/path/to/vault-master-mcp/dist/index.js", "--vault", "/path/to/your/vault"]
    }
  }
}

Tools (10)

Discovery

| Tool | Description | |------|-------------| | search_vault | Full-text search (FTS5) with optional graph neighbor expansion | | find_related | Find notes by graph proximity or tag — starts from a note and fans out | | list_notes | Browse vault by folder, tag, or frontmatter key |

Context Assembly

| Tool | Description | |------|-------------| | read_note | Read note with backlinks, freshness metadata, and graph degree | | get_graph_context | Token-budgeted subgraph assembly — the right amount of context, every time | | walk_graph | BFS traversal with direction control (outgoing / incoming / both) |

Write-Back

| Tool | Description | |------|-------------| | create_note | Create note with frontmatter and auto-linked [[wikilinks]] | | update_note | Update content or merge frontmatter into existing notes | | add_links | Add wikilinks between notes (creates Related section if absent) | | mark_superseded | Mark a note as replaced — updates freshness chain for agents |


Architecture

┌─────────────────────────────────────────────────┐
│                  MCP Client                      │
│         (Claude, Cursor, VS Code...)             │
└──────────────────┬──────────────────────────────┘
                   │ stdio (JSON-RPC)
┌──────────────────▼──────────────────────────────┐
│              vault-master-mcp                    │
│                                                  │
│  ┌─────────────┐  ┌──────────────────────────┐  │
│  │  Graph       │  │  SQLite + FTS5           │  │
│  │  Engine      │  │                          │  │
│  │              │  │  • Full-text search      │  │
│  │  • Adjacency │  │  • Metadata queries      │  │
│  │    index     │  │  • Frontmatter store     │  │
│  │  • BFS       │  │  • Link persistence      │  │
│  │  • Subgraph  │  │                          │  │
│  │    extraction│  └──────────────────────────┘  │
│  └─────────────┘                                 │
│                                                  │
│  ┌─────────────────────────────────────────────┐ │
│  │  Chokidar File Watcher                      │ │
│  │  • Incremental re-index on vault changes    │ │
│  └─────────────────────────────────────────────┘ │
└──────────────────┬──────────────────────────────┘
                   │ filesystem
┌──────────────────▼──────────────────────────────┐
│            Obsidian Vault (~/my-vault)            │
│                                                  │
│  notes.md ──[[wikilinks]]──► other-notes.md      │
│  #tags, frontmatter, folders                     │
└──────────────────────────────────────────────────┘

Dual-index design: The in-memory graph handles traversal and subgraph extraction at speed. SQLite with FTS5 handles full-text search and persistent metadata. Both stay in sync via the file watcher.


Freshness Model

Notes can carry optional frontmatter that agents use to assess knowledge currency:

---
status: active          # active | superseded | draft | archived
superseded_by: "[[new-approach.md]]"
last_verified: 2026-03-15
revision_of: "[[original-note.md]]"
---

When an agent reads a note via read_note, these fields are surfaced alongside backlink counts and graph degree — giving the agent enough signal to decide whether to trust the content or follow the superseded_by chain to fresher knowledge.


How It Compares

| Feature | vault-master-mcp | Typical Obsidian MCP | |---------|:---:|:---:| | Read/write notes | Yes | Yes | | Full-text search | FTS5 | Basic | | Graph traversal (BFS) | Yes | No | | Token-budgeted context | Yes | No | | Backlink awareness | Yes | Rarely | | Freshness tracking | Yes | No | | Live file watching | Yes | Rarely | | Directed link walking | Yes | No | | In-memory graph index | Yes | No |


Development

git clone https://github.com/mattbotcode/vault-master-mcp
cd vault-master-mcp
npm install
npm test        # 120+ tests via Vitest
npm run build   # compile TypeScript

Tests run against a temporary in-memory vault fixture covering all 10 tools, graph traversal, FTS5 search, freshness tracking, and file watcher integration.


Contributing

Contributions are welcome! Whether it's:

  • Bug reports and feature requests via Issues
  • Pull requests for new tools, performance improvements, or bug fixes
  • Documentation improvements
  • Sharing your use cases

Please open an issue first for major changes so we can discuss the approach.


Roadmap

  • [ ] Semantic search via embeddings
  • [ ] Multi-vault support
  • [ ] Graph visualization endpoint
  • [ ] Plugin system for custom tools
  • [ ] Vault health/quality scoring

License

MIT