Skip to content
VS Code

Vault Cortex for VS Code

io.github.aliasunder/vault-cortex

Standalone MCP server for Obsidian vaults — hybrid search, notes & files, memory, tasks, OAuth 2.1

client:VS Code transport:stdio runtime:oci

Install Vault Cortex in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "mcp-auth-token",
      "description": "MCP_AUTH_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "public-url",
      "description": "PUBLIC_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "embedding-enabled",
      "description": "EMBEDDING_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "rerank-mode",
      "description": "RERANK_MODE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "windows-mode",
      "description": "WINDOWS_MODE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "memory-enabled",
      "description": "MEMORY_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "file-tools-enabled",
      "description": "FILE_TOOLS_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "readonly-mode",
      "description": "READONLY_MODE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "disabled-tools",
      "description": "DISABLED_TOOLS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "memory-dir",
      "description": "MEMORY_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "daily-notes-folder",
      "description": "DAILY_NOTES_FOLDER",
      "password": true
    },
    {
      "type": "promptString",
      "id": "daily-notes-format",
      "description": "DAILY_NOTES_FORMAT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "trust-proxy-hops",
      "description": "TRUST_PROXY_HOPS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "trust-forwarded-hops",
      "description": "TRUST_FORWARDED_HOPS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tz",
      "description": "TZ",
      "password": true
    },
    {
      "type": "promptString",
      "id": "log-level",
      "description": "LOG_LEVEL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "log-dir",
      "description": "LOG_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "log-retention-days",
      "description": "LOG_RETENTION_DAYS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "protected-paths",
      "description": "PROTECTED_PATHS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "orphan-exclude-folders",
      "description": "ORPHAN_EXCLUDE_FOLDERS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "service-documentation-url",
      "description": "SERVICE_DOCUMENTATION_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-file-bytes",
      "description": "MAX_FILE_BYTES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-image-output-bytes",
      "description": "MAX_IMAGE_OUTPUT_BYTES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-pdf-render-pages",
      "description": "MAX_PDF_RENDER_PAGES",
      "password": true
    }
  ],
  "servers": {
    "vault-cortex": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/aliasunder/vault-cortex:0.54.2"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "${input:mcp-auth-token}",
        "PUBLIC_URL": "${input:public-url}",
        "EMBEDDING_ENABLED": "${input:embedding-enabled}",
        "RERANK_MODE": "${input:rerank-mode}",
        "WINDOWS_MODE": "${input:windows-mode}",
        "MEMORY_ENABLED": "${input:memory-enabled}",
        "FILE_TOOLS_ENABLED": "${input:file-tools-enabled}",
        "READONLY_MODE": "${input:readonly-mode}",
        "DISABLED_TOOLS": "${input:disabled-tools}",
        "MEMORY_DIR": "${input:memory-dir}",
        "DAILY_NOTES_FOLDER": "${input:daily-notes-folder}",
        "DAILY_NOTES_FORMAT": "${input:daily-notes-format}",
        "TRUST_PROXY_HOPS": "${input:trust-proxy-hops}",
        "TRUST_FORWARDED_HOPS": "${input:trust-forwarded-hops}",
        "TZ": "${input:tz}",
        "LOG_LEVEL": "${input:log-level}",
        "LOG_DIR": "${input:log-dir}",
        "LOG_RETENTION_DAYS": "${input:log-retention-days}",
        "PROTECTED_PATHS": "${input:protected-paths}",
        "ORPHAN_EXCLUDE_FOLDERS": "${input:orphan-exclude-folders}",
        "SERVICE_DOCUMENTATION_URL": "${input:service-documentation-url}",
        "MAX_FILE_BYTES": "${input:max-file-bytes}",
        "MAX_IMAGE_OUTPUT_BYTES": "${input:max-image-output-bytes}",
        "MAX_PDF_RENDER_PAGES": "${input:max-pdf-render-pages}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

Vault Cortex in other clients