Skip to main content

vault-mcp

Markdown + SQLite knowledge store with bidirectional [[wikilinks]], exposed as an MCP server. Designed for AI agents to maintain an interconnected knowledge base.

Installation

uvx vault-mcp                           # run directly without install
pip install vault-mcp                   # core (keyword search only)
pip install "vault-mcp[semantic]"       # + embedding-based semantic search

Running the MCP Server

# Start with default settings (vault in ./vault)
vault-mcp

# Custom vault directory
VAULT_DIR=/path/to/notes vault-mcp

# With semantic search enabled
VAULT_DIR=./vault VAULT_EMBEDDING_MODEL=jinaai/jina-embeddings-v5-text-nano vault-mcp

Environment Variables

Variable Default Description
VAULT_DIR ./vault Root directory for markdown files
VAULT_EMBEDDING_MODEL (none) Sentence-transformers model name. Enables semantic search when set

Client Configuration

Claude Code

claude mcp add vault -- vault-mcp

Or .mcp.json:

{
  "mcpServers": {
    "vault": {
      "type": "stdio",
      "command": "vault-mcp",
      "env": { "VAULT_DIR": "./vault" }
    }
  }
}

Cursor / Windsurf / Other MCP Clients

Add to your MCP settings:

{
  "vault": {
    "command": "vault-mcp",
    "env": { "VAULT_DIR": "./vault" }
  }
}

Python Library (no MCP)

from vault_mcp import MarkdownVault, create_vault_tools

vault = MarkdownVault("./my-vault")
vault.write("skill/debugging", {"type": "skill", "confidence": "pattern"}, "# Debugging\n\n...")

# Or get all 11 tools as a dict of callables
tools = create_vault_tools(vault)
result = tools["vault_search"](query="debugging", mode="keyword")

Note Format

Each note is a .md file with YAML frontmatter, organized in type-based folders:

vault/
  skill/
    timeout-diagnosis.md
  concept/
    connection-pooling.md
  episodic/
    2024-01-15-incident.md
---
type: skill
tags: [database, timeout]
confidence: pattern
status: active
---

# Timeout Diagnosis

Description of the skill...

## Evidence
- [[episodic/2024-01-15-incident]]: First observed during outage

## Related
- [[concept/connection-pooling]]

Frontmatter Fields

Field Required Values
type Yes skill, episodic, concept, failure-pattern, system-knowledge
confidence Yes fact, pattern, heuristic
tags No Free-form string list
status Auto active, superseded, archived

Tools

Write & Edit

Tool Description
vault_write(path, frontmatter, body) Create or overwrite a note
vault_write_batch(entries) Write multiple notes atomically
vault_edit(path, operation, params) Incremental edit (4 operations below)
vault_delete(path) Delete a note
vault_rename(old_path, new_path) Rename + auto-rewrite all backlinks

Edit Operations

Operation Params Use
replace_string {"old": "...", "new": "..."} Inline corrections
set_frontmatter {"confidence": "fact"} Update metadata
replace_section {"heading": "## Evidence", "body": "..."} Rewrite a section
append_section {"heading": "## Evidence", "content": "..."} Append to a section

Read & Browse

Tool Description
vault_read(path) Read frontmatter + body
vault_list(path, depth, type_filter) Browse directory

Search & Discovery

Tool Description
vault_search(query, filters, mode, limit) FTS5 / semantic / hybrid search
vault_backlinks(path) Who links to this note
vault_traverse(start, depth, direction) BFS graph traversal with directed edges
vault_lint() Find dead links + orphan notes

Validation

Every write/edit automatically checks and returns warnings:

  • Required frontmatter fields (type, confidence)
  • Valid enum values
  • H1 heading present in body
  • All [[wikilinks]] resolve to existing notes

The write succeeds regardless — warnings are informational for the agent to decide whether to fix.

Architecture

.md files (source of truth, git-trackable)
    │
    ▼
.vault.db (SQLite index, auto-rebuilt if deleted)
    ├── notes       — YAML frontmatter metadata
    ├── notes_fts   — FTS5 full-text search
    ├── links       — [[wikilink]] directed graph
    ├── tags        — tag index
    └── notes_vec   — embedding vectors (optional)

License

MIT

Metadata

Release files for vault-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vault-mcp 0.1.1
File Size Uploaded Provenance
vault_mcp-0.1.1.tar.gz 121.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for vault-mcp 0.1.1
File Interpreter ABI Platform
vault_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 140.8 kB

Release files / vault_mcp-0.1.1.tar.gz

Download URL vault_mcp-0.1.1.tar.gz
Size 121.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d6957378ac1682ba0a03ed82d2a9b89be4cb90308faef9d760f9631c646bdb4d
BLAKE2b-256 checksum
How to use checksums
0149a93b3d9b25be921787b40c7623e44af6954583393d64cfd4e8e934eac45a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / vault_mcp-0.1.1-py3-none-any.whl

Download URL vault_mcp-0.1.1-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6aac3955aa0164b3ed23a6ad8c6bd4721c545778d0dd6eb66b0a5cfc9a2cf603
BLAKE2b-256 checksum
How to use checksums
4efdee0051f35c33fd69fd731dff5c778ced8e4d7258abe13784140bdd55f3d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for vault-mcp 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page