Skip to main content

Memory Vault MCP Server — Markdown + SQLite knowledge store with bidirectional [[wikilinks]] for AI agents

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vault_mcp-0.1.1.tar.gz (121.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vault_mcp-0.1.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file vault_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: vault_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 121.0 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for vault_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d6957378ac1682ba0a03ed82d2a9b89be4cb90308faef9d760f9631c646bdb4d
MD5 69c55de39c800e5a5abc9f1d0d7d6679
BLAKE2b-256 0149a93b3d9b25be921787b40c7623e44af6954583393d64cfd4e8e934eac45a

See more details on using hashes here.

File details

Details for the file vault_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: vault_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for vault_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6aac3955aa0164b3ed23a6ad8c6bd4721c545778d0dd6eb66b0a5cfc9a2cf603
MD5 92b61eb0d002f70addefd31069687e4e
BLAKE2b-256 4efdee0051f35c33fd69fd731dff5c778ced8e4d7258abe13784140bdd55f3d9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page