← Index

Markdown Vault MCP

io.github.pvliesdonk/markdown-vault-mcp·v1.27.1·Search
Quality Score
95
/100

Markdown vault MCP server with FTS5 + semantic search and frontmatter indexing

§01  Install
Claude Desktop (uvx)
{
  "mcpServers": {
    "markdown-vault-mcp": {
      "command": "uvx",
      "args": [
        "markdown-vault-mcp"
      ],
      "env": {
        "MARKDOWN_VAULT_MCP_SOURCE_DIR": "/data/vault",
        "MARKDOWN_VAULT_MCP_READ_ONLY": "true",
        "FASTMCP_LOG_LEVEL": "INFO",
        "MARKDOWN_VAULT_MCP_EVENT_STORE_URL": "file:///data/state/events",
        "MARKDOWN_VAULT_MCP_SERVER_NAME": "markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_STATE_PATH": "/data/state",
        "MARKDOWN_VAULT_MCP_INDEX_PATH": "<markdown_vault_mcp_index_path>",
        "MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH": "<markdown_vault_mcp_embeddings_path>",
        "MARKDOWN_VAULT_MCP_INDEXED_FIELDS": "<markdown_vault_mcp_indexed_fields>",
        "MARKDOWN_VAULT_MCP_REQUIRED_FIELDS": "<markdown_vault_mcp_required_fields>",
        "MARKDOWN_VAULT_MCP_EXCLUDE": "<markdown_vault_mcp_exclude>",
        "MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER": "<markdown_vault_mcp_embedding_provider>",
        "OPENAI_API_KEY": "<your-openai_api_key>",
        "MARKDOWN_VAULT_MCP_OLLAMA_MODEL": "nomic-embed-text",
        "MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY": "false",
        "OLLAMA_HOST": "http://localhost:11434",
        "MARKDOWN_VAULT_MCP_GIT_TOKEN": "<your-markdown_vault_mcp_git_token>",
        "MARKDOWN_VAULT_MCP_GIT_REPO_URL": "<markdown_vault_mcp_git_repo_url>",
        "MARKDOWN_VAULT_MCP_GIT_USERNAME": "x-access-token",
        "MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME": "markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL": "noreply@markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S": "30",
        "MARKDOWN_VAULT_MCP_GIT_LFS": "true",
        "MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S": "600",
        "MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS": "<markdown_vault_mcp_attachment_extensions>",
        "MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB": "10",
        "MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER": "_templates",
        "MARKDOWN_VAULT_MCP_PROMPTS_FOLDER": "<markdown_vault_mcp_prompts_folder>",
        "MARKDOWN_VAULT_MCP_BEARER_TOKEN": "<your-markdown_vault_mcp_bearer_token>",
        "MARKDOWN_VAULT_MCP_AUTH_MODE": "<markdown_vault_mcp_auth_mode>",
        "MARKDOWN_VAULT_MCP_BASE_URL": "<markdown_vault_mcp_base_url>",
        "MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL": "<markdown_vault_mcp_oidc_config_url>",
        "MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID": "<markdown_vault_mcp_oidc_client_id>",
        "MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET": "<your-markdown_vault_mcp_oidc_client_secret>",
        "MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY": "<your-markdown_vault_mcp_oidc_jwt_signing_key>",
        "MARKDOWN_VAULT_MCP_OIDC_AUDIENCE": "<markdown_vault_mcp_oidc_audience>",
        "MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES": "openid",
        "MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN": "false",
        "MARKDOWN_VAULT_MCP_APP_DOMAIN": "<markdown_vault_mcp_app_domain>",
        "PUID": "1000",
        "PGID": "1000"
      }
    }
  }
}
Claude Desktop (Docker)
{
  "mcpServers": {
    "markdown-vault-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/pvliesdonk/markdown-vault-mcp:v1.27.1"
      ],
      "env": {
        "MARKDOWN_VAULT_MCP_SOURCE_DIR": "/data/vault",
        "MARKDOWN_VAULT_MCP_READ_ONLY": "true",
        "FASTMCP_LOG_LEVEL": "INFO",
        "MARKDOWN_VAULT_MCP_EVENT_STORE_URL": "file:///data/state/events",
        "MARKDOWN_VAULT_MCP_SERVER_NAME": "markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_STATE_PATH": "/data/state",
        "MARKDOWN_VAULT_MCP_INDEX_PATH": "<markdown_vault_mcp_index_path>",
        "MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH": "<markdown_vault_mcp_embeddings_path>",
        "MARKDOWN_VAULT_MCP_INDEXED_FIELDS": "<markdown_vault_mcp_indexed_fields>",
        "MARKDOWN_VAULT_MCP_REQUIRED_FIELDS": "<markdown_vault_mcp_required_fields>",
        "MARKDOWN_VAULT_MCP_EXCLUDE": "<markdown_vault_mcp_exclude>",
        "MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER": "<markdown_vault_mcp_embedding_provider>",
        "OPENAI_API_KEY": "<your-openai_api_key>",
        "MARKDOWN_VAULT_MCP_OLLAMA_MODEL": "nomic-embed-text",
        "MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY": "false",
        "OLLAMA_HOST": "http://localhost:11434",
        "MARKDOWN_VAULT_MCP_GIT_TOKEN": "<your-markdown_vault_mcp_git_token>",
        "MARKDOWN_VAULT_MCP_GIT_REPO_URL": "<markdown_vault_mcp_git_repo_url>",
        "MARKDOWN_VAULT_MCP_GIT_USERNAME": "x-access-token",
        "MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME": "markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL": "noreply@markdown-vault-mcp",
        "MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S": "30",
        "MARKDOWN_VAULT_MCP_GIT_LFS": "true",
        "MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S": "600",
        "MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS": "<markdown_vault_mcp_attachment_extensions>",
        "MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB": "10",
        "MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER": "_templates",
        "MARKDOWN_VAULT_MCP_PROMPTS_FOLDER": "<markdown_vault_mcp_prompts_folder>",
        "MARKDOWN_VAULT_MCP_BEARER_TOKEN": "<your-markdown_vault_mcp_bearer_token>",
        "MARKDOWN_VAULT_MCP_AUTH_MODE": "<markdown_vault_mcp_auth_mode>",
        "MARKDOWN_VAULT_MCP_BASE_URL": "<markdown_vault_mcp_base_url>",
        "MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL": "<markdown_vault_mcp_oidc_config_url>",
        "MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID": "<markdown_vault_mcp_oidc_client_id>",
        "MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET": "<your-markdown_vault_mcp_oidc_client_secret>",
        "MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY": "<your-markdown_vault_mcp_oidc_jwt_signing_key>",
        "MARKDOWN_VAULT_MCP_OIDC_AUDIENCE": "<markdown_vault_mcp_oidc_audience>",
        "MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES": "openid",
        "MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN": "false",
        "MARKDOWN_VAULT_MCP_APP_DOMAIN": "<markdown_vault_mcp_app_domain>",
        "PUID": "1000",
        "PGID": "1000"
      }
    }
  }
}
§02  Environment variables
MARKDOWN_VAULT_MCP_SOURCE_DIR
required

Absolute path to the markdown vault directory

MARKDOWN_VAULT_MCP_READ_ONLY

Disable write tools

FASTMCP_LOG_LEVEL

Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG

MARKDOWN_VAULT_MCP_EVENT_STORE_URL

Event store backend for HTTP session persistence (file:///path or memory://)

MARKDOWN_VAULT_MCP_SERVER_NAME

MCP server name shown to clients

MARKDOWN_VAULT_MCP_STATE_PATH

Directory for index and embeddings state files

MARKDOWN_VAULT_MCP_INDEX_PATH

Path to the FTS5 SQLite index file

MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH

Path to the numpy embeddings file

MARKDOWN_VAULT_MCP_INDEXED_FIELDS

Comma-separated frontmatter fields to index for search

MARKDOWN_VAULT_MCP_REQUIRED_FIELDS

Comma-separated frontmatter fields required on every document

MARKDOWN_VAULT_MCP_EXCLUDE

Comma-separated glob patterns to exclude from indexing

MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER

Embedding provider to use

OPENAI_API_KEY
secret

OpenAI API key (required when MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER=openai)

MARKDOWN_VAULT_MCP_OLLAMA_MODEL

Ollama embedding model name

MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY

Force CPU-only inference for Ollama

OLLAMA_HOST

Ollama server base URL

MARKDOWN_VAULT_MCP_GIT_TOKEN
secret

Git authentication token for push/pull

MARKDOWN_VAULT_MCP_GIT_REPO_URL

Remote git repository URL for managed mode

MARKDOWN_VAULT_MCP_GIT_USERNAME

Git username for token auth

MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME

Git committer name

MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL

Git committer email

MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S

Seconds to wait before pushing (batches writes)

MARKDOWN_VAULT_MCP_GIT_LFS

Enable Git LFS support

MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S

Seconds between periodic git pulls (0 to disable)

MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS

Comma-separated allowed attachment extensions, or * for all

MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB

Maximum attachment size in MB (0 for unlimited)

MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER

Folder name for note templates within the vault

MARKDOWN_VAULT_MCP_PROMPTS_FOLDER

Path to user-defined MCP prompt templates

MARKDOWN_VAULT_MCP_BEARER_TOKEN
secret

Bearer token for authentication

MARKDOWN_VAULT_MCP_AUTH_MODE

OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.

MARKDOWN_VAULT_MCP_BASE_URL

Public base URL of this server (required for OIDC)

MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL

OIDC discovery endpoint URL

MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID

OIDC client ID

MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET
secret

OIDC client secret

MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY
secret

Signing key for OIDC session JWTs (critical on Linux/Docker)

MARKDOWN_VAULT_MCP_OIDC_AUDIENCE

Expected OIDC token audience

MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES

Space-separated required OIDC scopes

MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN

Verify access token JWT instead of id_token

MARKDOWN_VAULT_MCP_APP_DOMAIN

Override Claude app domain for MCP Apps iframe sandboxing

MARKDOWN_VAULT_MCP_SOURCE_DIR

Path to the vault directory inside the container

MARKDOWN_VAULT_MCP_READ_ONLY

Disable write tools

FASTMCP_LOG_LEVEL

Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG

MARKDOWN_VAULT_MCP_EVENT_STORE_URL

Event store backend for HTTP session persistence (file:///path or memory://)

MARKDOWN_VAULT_MCP_SERVER_NAME

MCP server name shown to clients

MARKDOWN_VAULT_MCP_STATE_PATH

Directory for index and embeddings state files

MARKDOWN_VAULT_MCP_INDEX_PATH

Path to the FTS5 SQLite index file

MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH

Path to the numpy embeddings file

MARKDOWN_VAULT_MCP_INDEXED_FIELDS

Comma-separated frontmatter fields to index for search

MARKDOWN_VAULT_MCP_REQUIRED_FIELDS

Comma-separated frontmatter fields required on every document

MARKDOWN_VAULT_MCP_EXCLUDE

Comma-separated glob patterns to exclude from indexing

MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER

Embedding provider to use

OPENAI_API_KEY
secret

OpenAI API key (required when MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER=openai)

MARKDOWN_VAULT_MCP_OLLAMA_MODEL

Ollama embedding model name

MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY

Force CPU-only inference for Ollama

OLLAMA_HOST

Ollama server base URL

MARKDOWN_VAULT_MCP_GIT_TOKEN
secret

Git authentication token for push/pull

MARKDOWN_VAULT_MCP_GIT_REPO_URL

Remote git repository URL for managed mode

MARKDOWN_VAULT_MCP_GIT_USERNAME

Git username for token auth

MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME

Git committer name

MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL

Git committer email

MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S

Seconds to wait before pushing (batches writes)

MARKDOWN_VAULT_MCP_GIT_LFS

Enable Git LFS support

MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S

Seconds between periodic git pulls (0 to disable)

MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS

Comma-separated allowed attachment extensions, or * for all

MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB

Maximum attachment size in MB (0 for unlimited)

MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER

Folder name for note templates within the vault

MARKDOWN_VAULT_MCP_PROMPTS_FOLDER

Path to user-defined MCP prompt templates

PUID

Run as this UID (Docker entrypoint)

PGID

Run as this GID (Docker entrypoint)

MARKDOWN_VAULT_MCP_BEARER_TOKEN
secret

Bearer token for authentication

MARKDOWN_VAULT_MCP_AUTH_MODE

OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.

MARKDOWN_VAULT_MCP_BASE_URL

Public base URL of this server (required for OIDC)

MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL

OIDC discovery endpoint URL

MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID

OIDC client ID

MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET
secret

OIDC client secret

MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY
secret

Signing key for OIDC session JWTs (critical on Linux/Docker)

MARKDOWN_VAULT_MCP_OIDC_AUDIENCE

Expected OIDC token audience

MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES

Space-separated required OIDC scopes

MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN

Verify access token JWT instead of id_token

MARKDOWN_VAULT_MCP_APP_DOMAIN

Override Claude app domain for MCP Apps iframe sandboxing

§03  MCP Quality Score  ·  methodology
freshness
25
completeness
20
installability
25
documentation
15
stability
10
§04  Alternatives in Search