← Back to directory
V

Vault Cortex MCP Server

Community
Standalone MCP server for Obsidian vaults: hybrid search, notes & files, structured memory, tasks, OAuth 2.1.
Category
Filesystem #2 of 24
Stars
★ 30 Popular
Transport
Streamable HTTP
Runtime
Docker · Node.js 20.12+
Credentials
API key / credential required
License
MIT
Last commit
Tools
30
79FMRS · B

Vault Cortex is a feature-complete, well-engineered third-party MCP server for Obsidian: hybrid search (FTS5 + vectors + reranking, all local), entry-granular structured memory, Kanban-aware tasks, attachment file reading, and full OAuth 2.1 with data-integrity safeguards — rare depth in this category. It is not official (the author is not the Obsidian team), but it is MIT-licensed, easy to deploy in one Docker container, and ships a CLI wizard. Best suited to serious Obsidian users comfortable with self-hosting.

Strongest · Documentation 19/20 Weakest · Reliability 12/20

Reliability
12/20
Security and permissions
18/20
Maintenance
15/20
Documentation
19/20
Setup experience
15/20
Why each score
Reliability 12/20
The project provides a complete Docker containerized deployment solution with clear startup procedures and configuration options. The README indicates CI/CD workflows, test coverage, and version management. However, as a static code review, we cannot verify actual runtime performance and error handling capabilities. The project version 0.49.0 suggests a certain level of maturity, but we cannot confirm the stability of all tools in actual use.
Security and permissions 18/20
The project implements OAuth 2.1 authentication with PKCE and refresh token rotation, which is relatively advanced for MCP servers. It includes clear path traversal protection, atomic writes, and concurrency control mechanisms. The code contains security checks and input validation. The project explicitly identifies sensitive information handling, such as MCP_AUTH_TOKEN. However, as a static review, we cannot verify the actual effectiveness of all security measures.
Maintenance 15/20
The project shows active development status with a clear version number (0.49.0), CI/CD workflows, and dependency management. It uses the MIT license, is open source, and allows commercial use. It has contribution guidelines and a clear development process. There are 15 stars and 2 open issues on GitHub, indicating some community involvement. However, the project is relatively small, and the sustainability of long-term maintenance remains to be seen.
Documentation 19/20
The documentation is very comprehensive, including detailed installation guides, configuration options, tool descriptions, and usage examples. The README is well-structured with quick start, feature introduction, architecture explanation, and troubleshooting information. It provides detailed configuration parameter descriptions and default values. There are dedicated architecture (ARCHITECTURE.md) and security (SECURITY.md) documents. The documentation covers both local and remote deployment scenarios and provides multiple client connection methods.
Setup experience 15/20
The project offers multiple deployment methods including local Docker, remote deployment, and AWS deployment. It has detailed initialization scripts and configuration generation tools. It supports both Docker Compose and manual deployment. It provides specific instructions for different operating systems (including Windows). However, the deployment process requires some technical background, especially for remote deployment which requires configuring a VPS and Obsidian Sync.

Static review · not runListed 2026-09-07

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local files

Best for

  • Serious Obsidian users who want AI agents reading and writing their vault
  • Users wanting self-hosted, plugin-free operation with no external APIs
  • Mobile/multi-device workflows accessing the vault remotely
  • Security-conscious users (OAuth 2.1, atomic writes, container hardening)

Not for

  • Users unwilling to run Docker or self-host a server
  • Non-Obsidian note tools (Notion, Logseq, etc.)
  • Scenarios requiring only a stdio local process without an HTTP server
  • Remote multi-device sync without an Obsidian Sync subscription (the remote image requires one)

Required permissions

  • Read/write access to the Obsidian vault folder (bind mount /vault, rw)
  • Persistent /data volume (search index, OAuth token DB, logs)
  • MCP_AUTH_TOKEN as Bearer token (also the JWT signing key)
  • Obsidian Sync token for headless sync in remote mode
  • Local download of embedding/reranker models (~45MB total), no external API calls

Risks and side effects

  • The server can read and write personal notes — guard MCP_AUTH_TOKEN carefully; leaking it exposes the whole vault
  • Writes to real note files; despite atomic writes and protected paths, misconfiguration can alter data
  • OAuth token DB lives on the /data volume; container compromise could expose valid sessions
  • Remote deployments expose a public port — set PUBLIC_URL and reverse proxy correctly
  • The remote image bundles proprietary obsidian-headless (not MIT-licensed); requires an active Obsidian Sync subscription

Setup

Before you start

Runtime:Docker · Node.js 20.12+

MCP_AUTH_TOKEN requiredsecret Required Bearer token for MCP client auth; generate with `openssl rand -hex 32`.
VAULT_PATH required Absolute host path to your Obsidian vault; required for local deployments.
OBSIDIAN_AUTH_TOKEN optionalsecret Obsidian Sync token for remote deployments; the CLI's `get-sync-token` command can fetch it.
Other optional settings (23)
PUBLIC_URL optional Public URL clients use to reach the server, used as OAuth issuer; set only for remote deployments.
EMBEDDING_ENABLED optional Toggles the embedding pipeline; false disables vectors and search falls back to FTS5 keywords only.
RERANK_MODE optional Cross-encoder reranking mode: blended or none.
WINDOWS_MODE optional
MEMORY_ENABLED optional
FILE_TOOLS_ENABLED optional
READONLY_MODE optional When true, hides all vault-writing tools so the server runs read-only.
DISABLED_TOOLS optional
MEMORY_DIR optional
DAILY_NOTES_FOLDER optional
DAILY_NOTES_FORMAT optional
TRUST_PROXY_HOPS optional
TRUST_FORWARDED_HOPS optional
TZ optional
LOG_LEVEL optional
LOG_DIR optional
LOG_RETENTION_DAYS optional
PROTECTED_PATHS optional
ORPHAN_EXCLUDE_FOLDERS optional
SERVICE_DOCUMENTATION_URL optional
MAX_FILE_BYTES optional
MAX_IMAGE_OUTPUT_BYTES optional
MAX_PDF_RENDER_PAGES optional

Requires Docker (or Podman, OrbStack, etc.); the CLI needs Node.js >= 20.12. Local: run npx vault-cortex@latest init — the wizard picks your vault path, generates the auth token and config, starts the server, and prints the URL (http://localhost:8000/mcp). Remote: on a VPS run npx vault-cortex@latest init --mode remote with an Obsidian Sync subscription. Manual docker compose setup is also available (image ghcr.io/aliasunder/vault-cortex). Connect Claude Code: claude mcp add --scope user --transport http vault-cortex http://localhost:8000/mcp.

Check that it works

After `npx vault-cortex@latest init` starts the server, add `http://localhost:8000/mcp` in your MCP client and confirm `vault_search` and `vault_read_note` appear in the tool list; then ask "which notes were recently modified?" to prove the connection.

Troubleshooting

  1. 401 errors: confirm the client Authorization header matches the container's MCP_AUTH_TOKEN
  2. File changes not indexed on Windows: set WINDOWS_MODE=true to enable polling
  3. claude.ai cannot reach localhost: its connectors only work with a remote (https) deployment
  4. Claude Desktop local connection: register via the mcp-remote stdio bridge in claude_desktop_config.
  5. No semantic matches in search: verify EMBEDDING_ENABLED is true
  6. Memory or model-download issues: semantic search needs ~2GiB RAM, or set EMBEDDING_ENABLED=false to fall back to FTS5

Things to try

Once connected, you can ask your AI assistant things like:

  • Search my vault for notes about hybrid search architecture and summarize the key points.
  • Append a dated entry about today's lessons learned to my memory file.
  • List all tasks that are overdue and still open.
  • Read the large architecture diagram in my vault's attachments folder and explain it.

Tools 30

vault_read_note read-only
Read a note — full body, properties, outline, or a section
vault_write_note writes
Create a note (fails if it exists; set overwrite to replace)
vault_patch_note writes
Heading-targeted edit (append, prepend, replace, insert)
vault_replace_in_note writes
Find-and-replace text in a note
vault_delete_span destructive
Delete a block of lines by short anchors, no full re-quote
vault_list_notes read-only
List notes with optional glob/folder filter
vault_delete_note destructive
Delete a note (protected paths enforced)
vault_move_note writes
Move or rename a note, rewriting links across the vault
Show 22 more tools
vault_search read-only
Hybrid search with tag/folder/property/date filters
vault_search_by_tag read-only
Find notes by tag (exact or prefix match)
vault_search_by_folder read-only
Browse notes in a folder with metadata
vault_recent_notes read-only
Recently modified or created notes
vault_list_tags read-only
All tags with usage counts
vault_list_tasks read-only
Vault-wide task index — Kanban-aware, 6 date fields, priority, folder/heading scope
vault_update_task writes
One-call status, priority, and lane changes — auto-detects done lanes on Kanban boards
vault_get_memory read-only
Read structured memory (file, section, or all)
vault_update_memory writes
Append a dated entry to a memory section
vault_delete_memory destructive
Remove a specific memory entry by date
vault_list_memory_files read-only
Discover memory files, their sections, and each file's entry policy
vault_memory_recall read-only
Entry-granular hybrid recall of a topic across memory files, oldest-first
vault_list_property_keys read-only
All property keys with sample values
vault_list_property_values read-only
Distinct values for a property key
vault_search_by_property read-only
Find notes by property key-value
vault_update_properties writes
Add or update properties without touching the body
vault_get_backlinks read-only
Notes linking to a given path
vault_get_outgoing_links read-only
Links from a given note
vault_find_orphans read-only
Notes with no incoming links
vault_read_file read-only
Read a non-markdown file — images delivered as images, canvases as readable outlines
vault_list_files read-only
Browse the vault's non-markdown files with sizes and per-extension counts
vault_get_daily_note read-only
Today's (or any date's) daily note

Use cases

Search and recall personal knowledge base content from a phone or remote client
Have an agent read session logs, synthesize lessons, and write them back to the vault
Vault-wide task triage: query by status, dates, priority; complete or reprioritize in one call
Maintain a dated, evolving memory layer of preferences and principles
Analyze the link graph and find orphaned notes
Let agents read screenshots, diagram PDFs, canvases, and other attachments

Supported clients

Claude Code
Claude Desktop
Claude.aiPartial support
CursorPartial support
OpenCode
MCP Inspector

Listed from the project's documentation, not tested by this site.

Overview

Vault Cortex is a standalone MCP server that gives any AI agent hybrid search, task management, structured memory, and read/write access to an Obsidian vault. No plugins and no running Obsidian required: one Docker container works directly with the .md files on disk. Deploy on a VPS with Obsidian Sync to access the same vault from a phone, claude.ai, or any remote MCP client, secured with OAuth 2.1. Search combines FTS5 keyword matching and vector semantic similarity via RRF fusion, refined by a cross-encoder reranker. The memory layer holds dated, append-only entries; the task layer parses both Tasks plugin emoji and Dataview inline-field formats with Kanban lane awareness; file tools read images, canvases, PDFs, and other non-markdown files. Transport is streamable-http (http://localhost:8000/mcp or <PUBLIC_URL>/mcp).

Similar servers

Source revision 18856ecce308 Data synced 2026-10-19 Read the FMRS scoring method