Memory Vault MCP server — Markdown + SQLite knowledge store with bidirectional [[wikilinks]]. Use when the user wants to create, read, edit, search, or manage interconnected knowledge notes. Provides 11 tools: vault_write, vault_write_batch, vault_read, vault_edit, vault_delete, vault_rename, vault_list, vault_search, vault_backlinks, vault_traverse, vault_lint.
A Markdown + YAML frontmatter knowledge store with bidirectional [[wikilinks]], backed by SQLite (FTS5 full-text search + sqlite-vec vector search). Designed for AI agents to maintain an interconnected knowledge base.
Package: vault-mcp
uvx vault-mcp
pip install vault-mcp # core (keyword search only)
pip install "vault-mcp[semantic]" # + embedding-based semantic search
# 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
| Variable | Default | Description |
|---|---|---|
VAULT_DIR | ./vault | Root directory for markdown files |
VAULT_EMBEDDING_MODEL | (none) | Sentence-transformers model name. Enables semantic search when set |
claude mcp add vault -- vault-mcp
Or .mcp.json:
{
"mcpServers": {
"vault": {
"type": "stdio",
"command": "vault-mcp",
"env": { "VAULT_DIR": "./vault" }
}
}
}
Add to your MCP settings:
{
"vault": {
"command": "vault-mcp",
"env": { "VAULT_DIR": "./vault" }
}
}
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")
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
---