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.0.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.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vault_mcp-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 38bebac755bdbf15c25569a694ec3ca7f64a1c547f38b4aa0cc3a71d713dd350
MD5 a4c296d11d7c70b67bb09c384a0eb7a7
BLAKE2b-256 4a02a26c67899f344ac554d0d7213e66b18d111cce44e7ed031e3d6b280ab30c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vault_mcp-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3fed66fcbd4378eebcb734b3b4059f9cea5484c150aa1abc81bba75ce61bef41
MD5 ebbd66fe74f485d0462bcc34b2f1f6ef
BLAKE2b-256 3df4d20cecb2726ad36c6712dfa2446f8827caa445757daaf4123c1084a4a640

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