
Vault Cortex
Connects Claude to your Obsidian vault without running Obsidian itself or installing plugins. Ships as a Docker container that reads and writes markdown files directly, with SQLite FTS5 for BM25-ranked search across 23 tools. You get CRUD operations, backlink queries, frontmatter manipulation, and a structured memory layer that appends dated entries to designated notes. Works locally against a folder or remotely via OAuth with Obsidian Sync keeping the vault current. Useful when you want your AI assistant to treat your personal knowledge base as working memory, or when you're building workflows that need programmatic access to wikilinks, tags, and daily notes without spinning up the full Obsidian app.
- GitHub stars
- 37
- tools
- 33
- auth
- Secret needed
- transport
- HTTP
- env vars
- 24
- last updated
- Nov 13, 2026
Tools
33 toolsPublic tool metadata for what this MCP can expose to an agent.
vault_read_noteRead a note — full body, properties, outline, or a section
Read a note — full body, properties, outline, or a section
No parameter schema in public metadata yet.
vault_write_noteCreate a note (fails if it already exists; set `overwrite` to replace)
Create a note (fails if it already exists; set `overwrite` to replace)
No parameter schema in public metadata yet.
vault_patch_noteHeading-targeted edit (append, prepend, replace with `include_children` guard, insert)
Heading-targeted edit (append, prepend, replace with `include_children` guard, insert)
No parameter schema in public metadata yet.
vault_replace_in_noteFind-and-replace text in a note (first match or `replace_all_occurrences`)
Find-and-replace text in a note (first match or `replace_all_occurrences`)
No parameter schema in public metadata yet.
vault_delete_spanDelete a block of lines by short anchors, no full re-quote
Delete a block of lines by short anchors, no full re-quote
No parameter schema in public metadata yet.
vault_replace_spanReplace a block of lines by short anchors with new content
Replace a block of lines by short anchors with new content
No parameter schema in public metadata yet.
vault_insert_at_anchorInsert content before or after a line identified by a short anchor
Insert content before or after a line identified by a short anchor
No parameter schema in public metadata yet.
vault_list_notesList notes with optional glob/folder filter
List notes with optional glob/folder filter
No parameter schema in public metadata yet.
vault_delete_noteDelete a note, honoring the vault's trash setting (protected paths enforced)
Delete a note, honoring the vault's trash setting (protected paths enforced)
No parameter schema in public metadata yet.
vault_move_noteMove or rename a note, rewriting links across the vault
Move or rename a note, rewriting links across the vault
No parameter schema in public metadata yet.
vault_searchHybrid search with tag/folder/property/date filters
Hybrid search with tag/folder/property/date filters
No parameter schema in public metadata yet.
vault_search_by_tagFind notes by tag, including the tags nested under it
Find notes by tag, including the tags nested under it
No parameter schema in public metadata yet.
vault_search_by_folderBrowse notes in a folder with metadata
Browse notes in a folder with metadata
No parameter schema in public metadata yet.
vault_recent_notesRecently modified or created notes
Recently modified or created notes
No parameter schema in public metadata yet.
vault_list_tagsAll tags with usage counts
All tags with usage counts
No parameter schema in public metadata yet.
vault_list_tasksVault-wide task index with sub-task depth — Kanban-aware, date/priority/heading filters
Vault-wide task index with sub-task depth — Kanban-aware, date/priority/heading filters
No parameter schema in public metadata yet.
vault_create_taskCreate a correctly-formatted task — dates, priority, recurrence, on_completion, sub-tasks, block_id
Create a correctly-formatted task — dates, priority, recurrence, on_completion, sub-tasks, block_id
No parameter schema in public metadata yet.
vault_update_taskEdit any task field in one call — completing a recurring task creates its next occurrence
Edit any task field in one call — completing a recurring task creates its next occurrence
No parameter schema in public metadata yet.
vault_get_memoryRead structured memory (file, section, or all)
Read structured memory (file, section, or all)
No parameter schema in public metadata yet.
vault_update_memoryAppend a dated entry to a memory section
Append a dated entry to a memory section
No parameter schema in public metadata yet.
vault_delete_memoryRemove a specific memory entry by date
Remove a specific memory entry by date
No parameter schema in public metadata yet.
vault_list_memory_filesDiscover memory files, their sections, and each file's entry policy
Discover memory files, their sections, and each file's entry policy
No parameter schema in public metadata yet.
vault_memory_recallEntry-granular hybrid recall of a topic across memory files, oldest-first
Entry-granular hybrid recall of a topic across memory files, oldest-first
No parameter schema in public metadata yet.
vault_list_property_keysAll property keys with sample values
All property keys with sample values
No parameter schema in public metadata yet.
vault_list_property_valuesDistinct values for a property key
Distinct values for a property key
No parameter schema in public metadata yet.
vault_search_by_propertyFind notes by property key-value
Find notes by property key-value
No parameter schema in public metadata yet.
vault_update_propertiesAdd, update, or replace properties without touching the body
Add, update, or replace properties without touching the body
No parameter schema in public metadata yet.
vault_get_backlinksNotes linking to a given path
Notes linking to a given path
No parameter schema in public metadata yet.
vault_get_outgoing_linksLinks from a given note
Links from a given note
No parameter schema in public metadata yet.
vault_find_orphansNotes with no incoming links
Notes with no incoming links
No parameter schema in public metadata yet.
vault_read_fileRead a non-markdown file — images delivered as images, canvases as readable outlines
Read a non-markdown file — images delivered as images, canvases as readable outlines
No parameter schema in public metadata yet.
vault_list_filesBrowse the vault's non-markdown files with sizes and per-extension counts
Browse the vault's non-markdown files with sizes and per-extension counts
No parameter schema in public metadata yet.
vault_get_daily_noteToday's (or any date's) daily note
Today's (or any date's) daily note
No parameter schema in public metadata yet.
Sponsors
Configuration
MCP_AUTH_TOKEN*secretBearer token for MCP client authentication. Must match the Authorization header sent by clients. Generate with: openssl rand -hex 32
PUBLIC_URLdefault: http://localhost:8000Public URL clients use to reach this server. Used as the OAuth issuer URL in discovery metadata. Override when exposing the server outside localhost or on a non-default port.
EMBEDDING_ENABLEDdefault: trueEnable or disable the embedding pipeline. When false, no ONNX model is downloaded, no vector tables are created, and search uses FTS5 only.
RERANK_MODEdefault: blendedCross-encoder reranking mode: blended (position-aware score blending after RRF fusion) or none (skip reranking). Only takes effect when EMBEDDING_ENABLED is true.
WINDOWS_MODEdefault: falseWindows bind-mount mode: enables filesystem polling for the file watcher and rename-based moves across the Docker Desktop/WSL2 bridge. Set to true when the vault lives on a Windows drive.
MEMORY_ENABLEDdefault: trueEnable or disable the structured memory layer. When false, memory tools are hidden, bootstrap is skipped, and server metadata omits memory references.
FILE_TOOLS_ENABLEDdefault: trueEnable or disable file tools (vault_read_file, vault_list_files). When false, file tools are hidden and server metadata omits file tool references.
READONLY_MODEdefault: falseRun the server read-only: every vault-writing tool is hidden, the memory folder is not auto-created, and server metadata omits write references.
DISABLED_TOOLSHide individual tools by name, comma-separated. Subtractive only — it cannot re-enable a tool another setting hides; an unknown tool name stops the server at startup.
MEMORY_DIRdefault: About MeVault folder for structured memory files (About Me-style notes). Memory tools are hidden when MEMORY_ENABLED is false, but this value still feeds the defaults for PROTECTED_PATHS and ORPHAN_EXCLUDE_FOLDERS.
DAILY_NOTES_FOLDERdefault: Daily NotesVault folder for daily notes. Overrides the folder configured in Obsidian's daily-notes plugin. When unset, read from the vault's .obsidian/daily-notes.json (an empty folder there follows Obsidian's new-note location), falling back to "Daily Notes" when that file is missing or un
DAILY_NOTES_FORMATdefault: YYYY-MM-DDFilename date format for daily notes (Moment.js tokens). Overrides the format configured in Obsidian's daily-notes plugin. When unset, read from the vault's .obsidian/daily-notes.json, falling back to "YYYY-MM-DD".
TRUST_PROXY_HOPSdefault: 0Number of trusted reverse-proxy hops used to derive the client IP from X-Forwarded-For for OAuth rate limiting and request logs. With 0, injected forwarding headers are ignored.
TRUST_FORWARDED_HOPSdefault: 0How many entries from the end of the RFC 7239 Forwarded header's for= list to count to reach the client IP for OAuth rate limiting and request logs. 0 ignores the header; 1 when the proxy in front writes it (e.g. AWS API Gateway) and is the only way to reach the server; 2 when a
TZdefault: UTCIANA timezone for timestamps and daily note resolution.
LOG_LEVELdefault: infoLogging verbosity.
LOG_DIRDirectory for log files that survive container re-creation. The container's own log is always written but discarded when the container is recreated; date-stamped files under LOG_DIR persist on the data volume. Default: /data/logs (remote image), $STORAGE_ROOT/data/logs (single-vo
LOG_RETENTION_DAYSdefault: 90Days to keep log files; cleanup runs at startup and each day. Only applies when LOG_DIR is a path.
LOG_MAX_DAILY_MBdefault: 25Maximum MB per daily log file (1 MB = 1,000,000 bytes). Whole numbers of at least 1, or none to disable the cap. File logging pauses at the cap until midnight in TZ (UTC by default); console logging continues.
PROTECTED_PATHSComma-separated vault folder names blocked from vault_delete_note and vault_move_note. Default: MEMORY_DIR plus the daily notes folder, read from DAILY_NOTES_FOLDER or .obsidian/daily-notes.json (default Daily Notes; none when that setting is the vault root or empty). When set, o
ORPHAN_EXCLUDE_FOLDERSComma-separated vault folder names excluded from vault_find_orphans. Default: the daily notes folder, "Templates", and MEMORY_DIR. DAILY_NOTES_FOLDER wins; otherwise .obsidian/daily-notes.json is read per query (fallback "Daily Notes"; no daily folder when that setting is the vau
SERVICE_DOCUMENTATION_URLdefault: https://github.com/aliasunder/vault-cortexOverride the OAuth service documentation URL exposed via discovery metadata.
MAX_FILE_BYTESdefault: 52428800Largest file vault_read_file will read, in bytes. Reading a larger file returns an error instead of content.
MAX_IMAGE_OUTPUT_BYTESdefault: 49152Byte budget for images returned by vault_read_file, in binary bytes before base64 encoding. Images exceeding the budget are downscaled/recompressed server-side to fit; raise for clients that accept larger tool responses.
Readme
Vault Cortex
Details
- Repository
- github.com/aliasunder/vault-cortex
- Website
- github.com/aliasunder/vault-cortex
- Categories
- AI & LLM Tools, Documents & Knowledge, Search & Web Crawling
- Package
ghcr.io/aliasunder/vault-cortex:0.57.4- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active