Labsco
MCP SERVER

Vault Cortex

by aliasunder

Hybrid search, tasks, structured memory and read/write access to an Obsidian vault — no plugin, no Obsidian running.

Note-Taking & Personal Knowledge Bases
Summary
Your notes become something an agent can search well, not just read.

Keyword search fails on a personal vault because your words and past-you's words differ; blending vectors and a reranker on top of FTS5 is what fixes that, and it runs locally at around 45MB of models with no external API. The memory layer is the second idea worth the setup: append-only dated entries with entry-level recall, so "what do I think about X" returns the current take plus how it got there.

What it is

A standalone MCP server that works directly with the `.md` files of an Obsidian vault on disk. One Docker container gives an agent search, note editing, task management and a memory layer; run it on a server with Obsidian Sync and the same vault is reachable from your phone or claude.ai over OAuth 2.1.

What you get
  • Notes — `vault_read_note`, `vault_write_note`, `vault_patch_note` for heading-targeted edits, `vault_replace_in_note`, `vault_delete_span`, `vault_list_notes`, `vault_delete_note`, `vault_move_note`, which rewrites links across the vault
  • Search — `vault_search` blends FTS5 keyword matching with vector similarity through RRF fusion and a cross-encoder reranker; plus `vault_search_by_tag`, `vault_search_by_folder`, `vault_recent_notes`, `vault_list_tags`
  • Tasks — `vault_list_tasks` indexes the whole vault Kanban-aware, across six date fields, priority and folder; `vault_update_task` changes status, priority and lane in one call and stamps the completion date
  • Memory — `vault_update_memory` appends dated entries, `vault_memory_recall` retrieves matching entries across memory files oldest-first, with `vault_get_memory`, `vault_delete_memory` and `vault_list_memory_files`
  • Properties and links — `vault_list_property_keys`, `vault_list_property_values`, `vault_search_by_property`, `vault_update_properties`, `vault_get_backlinks`, `vault_get_outgoing_links`, `vault_find_orphans`
  • Files and daily notes — `vault_read_file` returns images as images and canvases as readable outlines, `vault_list_files` browses attachments, `vault_get_daily_note` resolves today's or any date's note from your Obsidian daily-notes settings
Requirements

Docker (or a compatible runtime) and a vault folder. The fastest path is `npx vault-cortex@latest init`, which asks for the vault path, generates the auth token and config, and starts the container — that CLI needs Node.js >= 20.12, the server itself runs in Docker. Two settings are mandatory: `MCP_AUTH_TOKEN`, generated with `openssl rand -hex 32`, and the vault bind-mount path. The client connects to `http://localhost:8000/mcp`. Remote deployments additionally need `PUBLIC_URL` and an Obsidian Sync subscription. Feature switches let you cut the surface: `EMBEDDING_ENABLED=false` for keyword-only search, `MEMORY_ENABLED=false`, `FILE_TOOLS_ENABLED=false`, `READONLY_MODE=true`, and `DISABLED_TOOLS` to hide named tools. Image version 0.42.1.

Setup effort

One command plus a key — npx vault-cortex@latest init, then supply credentials