Markdown Vault MCP✓
io.github.pvliesdonk/markdown-vault-mcp · v1.27.1
{}server.json
The full server descriptor as registered with IndusMCP.
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.pvliesdonk/markdown-vault-mcp",
"description": "Markdown vault MCP server with FTS5 + semantic search and frontmatter indexing",
"title": "Markdown Vault MCP",
"repository": {
"url": "https://github.com/pvliesdonk/markdown-vault-mcp",
"source": "github"
},
"version": "1.27.1",
"websiteUrl": "https://pvliesdonk.github.io/markdown-vault-mcp/",
"packages": [
{
"registryType": "pypi",
"identifier": "markdown-vault-mcp",
"version": "1.27.1",
"runtimeHint": "uvx",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Absolute path to the markdown vault directory",
"isRequired": true,
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_SOURCE_DIR"
},
{
"description": "Disable write tools",
"format": "boolean",
"default": "true",
"name": "MARKDOWN_VAULT_MCP_READ_ONLY"
},
{
"description": "Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG",
"default": "INFO",
"choices": [
"DEBUG",
"INFO",
"WARNING",
"ERROR"
],
"name": "FASTMCP_LOG_LEVEL"
},
{
"description": "Event store backend for HTTP session persistence (file:///path or memory://)",
"default": "file:///data/state/events",
"name": "MARKDOWN_VAULT_MCP_EVENT_STORE_URL"
},
{
"description": "MCP server name shown to clients",
"default": "markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_SERVER_NAME"
},
{
"description": "Directory for index and embeddings state files",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_STATE_PATH"
},
{
"description": "Path to the FTS5 SQLite index file",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_INDEX_PATH"
},
{
"description": "Path to the numpy embeddings file",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH"
},
{
"description": "Comma-separated frontmatter fields to index for search",
"name": "MARKDOWN_VAULT_MCP_INDEXED_FIELDS"
},
{
"description": "Comma-separated frontmatter fields required on every document",
"name": "MARKDOWN_VAULT_MCP_REQUIRED_FIELDS"
},
{
"description": "Comma-separated glob patterns to exclude from indexing",
"name": "MARKDOWN_VAULT_MCP_EXCLUDE"
},
{
"description": "Embedding provider to use",
"choices": [
"openai",
"ollama",
"fastembed",
"fastembed-gpu"
],
"name": "MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER"
},
{
"description": "OpenAI API key (required when MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER=openai)",
"isSecret": true,
"name": "OPENAI_API_KEY"
},
{
"description": "Ollama embedding model name",
"default": "nomic-embed-text",
"name": "MARKDOWN_VAULT_MCP_OLLAMA_MODEL"
},
{
"description": "Force CPU-only inference for Ollama",
"format": "boolean",
"default": "false",
"name": "MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY"
},
{
"description": "Ollama server base URL",
"default": "http://localhost:11434",
"name": "OLLAMA_HOST"
},
{
"description": "Git authentication token for push/pull",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_GIT_TOKEN"
},
{
"description": "Remote git repository URL for managed mode",
"name": "MARKDOWN_VAULT_MCP_GIT_REPO_URL"
},
{
"description": "Git username for token auth",
"default": "x-access-token",
"name": "MARKDOWN_VAULT_MCP_GIT_USERNAME"
},
{
"description": "Git committer name",
"default": "markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME"
},
{
"description": "Git committer email",
"default": "noreply@markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL"
},
{
"description": "Seconds to wait before pushing (batches writes)",
"format": "number",
"default": "30",
"name": "MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S"
},
{
"description": "Enable Git LFS support",
"format": "boolean",
"default": "true",
"name": "MARKDOWN_VAULT_MCP_GIT_LFS"
},
{
"description": "Seconds between periodic git pulls (0 to disable)",
"format": "number",
"default": "600",
"name": "MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S"
},
{
"description": "Comma-separated allowed attachment extensions, or * for all",
"name": "MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS"
},
{
"description": "Maximum attachment size in MB (0 for unlimited)",
"format": "number",
"default": "10",
"name": "MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB"
},
{
"description": "Folder name for note templates within the vault",
"default": "_templates",
"name": "MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER"
},
{
"description": "Path to user-defined MCP prompt templates",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_PROMPTS_FOLDER"
},
{
"description": "Bearer token for authentication",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_BEARER_TOKEN"
},
{
"description": "OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.",
"name": "MARKDOWN_VAULT_MCP_AUTH_MODE"
},
{
"description": "Public base URL of this server (required for OIDC)",
"name": "MARKDOWN_VAULT_MCP_BASE_URL"
},
{
"description": "OIDC discovery endpoint URL",
"name": "MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL"
},
{
"description": "OIDC client ID",
"name": "MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID"
},
{
"description": "OIDC client secret",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET"
},
{
"description": "Signing key for OIDC session JWTs (critical on Linux/Docker)",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY"
},
{
"description": "Expected OIDC token audience",
"name": "MARKDOWN_VAULT_MCP_OIDC_AUDIENCE"
},
{
"description": "Space-separated required OIDC scopes",
"default": "openid",
"name": "MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES"
},
{
"description": "Verify access token JWT instead of id_token",
"format": "boolean",
"default": "false",
"name": "MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN"
},
{
"description": "Override Claude app domain for MCP Apps iframe sandboxing",
"name": "MARKDOWN_VAULT_MCP_APP_DOMAIN"
}
]
},
{
"registryType": "oci",
"identifier": "ghcr.io/pvliesdonk/markdown-vault-mcp:v1.27.1",
"transport": {
"type": "streamable-http",
"url": "http://localhost:{--port}/mcp"
},
"packageArguments": [
{
"description": "Port for the HTTP transport",
"default": "8000",
"type": "named",
"name": "--port"
}
],
"environmentVariables": [
{
"description": "Path to the vault directory inside the container",
"format": "filepath",
"default": "/data/vault",
"name": "MARKDOWN_VAULT_MCP_SOURCE_DIR"
},
{
"description": "Disable write tools",
"format": "boolean",
"default": "true",
"name": "MARKDOWN_VAULT_MCP_READ_ONLY"
},
{
"description": "Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG",
"default": "INFO",
"choices": [
"DEBUG",
"INFO",
"WARNING",
"ERROR"
],
"name": "FASTMCP_LOG_LEVEL"
},
{
"description": "Event store backend for HTTP session persistence (file:///path or memory://)",
"default": "file:///data/state/events",
"name": "MARKDOWN_VAULT_MCP_EVENT_STORE_URL"
},
{
"description": "MCP server name shown to clients",
"default": "markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_SERVER_NAME"
},
{
"description": "Directory for index and embeddings state files",
"format": "filepath",
"default": "/data/state",
"name": "MARKDOWN_VAULT_MCP_STATE_PATH"
},
{
"description": "Path to the FTS5 SQLite index file",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_INDEX_PATH"
},
{
"description": "Path to the numpy embeddings file",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH"
},
{
"description": "Comma-separated frontmatter fields to index for search",
"name": "MARKDOWN_VAULT_MCP_INDEXED_FIELDS"
},
{
"description": "Comma-separated frontmatter fields required on every document",
"name": "MARKDOWN_VAULT_MCP_REQUIRED_FIELDS"
},
{
"description": "Comma-separated glob patterns to exclude from indexing",
"name": "MARKDOWN_VAULT_MCP_EXCLUDE"
},
{
"description": "Embedding provider to use",
"choices": [
"openai",
"ollama",
"fastembed",
"fastembed-gpu"
],
"name": "MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER"
},
{
"description": "OpenAI API key (required when MARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER=openai)",
"isSecret": true,
"name": "OPENAI_API_KEY"
},
{
"description": "Ollama embedding model name",
"default": "nomic-embed-text",
"name": "MARKDOWN_VAULT_MCP_OLLAMA_MODEL"
},
{
"description": "Force CPU-only inference for Ollama",
"format": "boolean",
"default": "false",
"name": "MARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLY"
},
{
"description": "Ollama server base URL",
"default": "http://localhost:11434",
"name": "OLLAMA_HOST"
},
{
"description": "Git authentication token for push/pull",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_GIT_TOKEN"
},
{
"description": "Remote git repository URL for managed mode",
"name": "MARKDOWN_VAULT_MCP_GIT_REPO_URL"
},
{
"description": "Git username for token auth",
"default": "x-access-token",
"name": "MARKDOWN_VAULT_MCP_GIT_USERNAME"
},
{
"description": "Git committer name",
"default": "markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_GIT_COMMIT_NAME"
},
{
"description": "Git committer email",
"default": "noreply@markdown-vault-mcp",
"name": "MARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL"
},
{
"description": "Seconds to wait before pushing (batches writes)",
"format": "number",
"default": "30",
"name": "MARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_S"
},
{
"description": "Enable Git LFS support",
"format": "boolean",
"default": "true",
"name": "MARKDOWN_VAULT_MCP_GIT_LFS"
},
{
"description": "Seconds between periodic git pulls (0 to disable)",
"format": "number",
"default": "600",
"name": "MARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_S"
},
{
"description": "Comma-separated allowed attachment extensions, or * for all",
"name": "MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONS"
},
{
"description": "Maximum attachment size in MB (0 for unlimited)",
"format": "number",
"default": "10",
"name": "MARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MB"
},
{
"description": "Folder name for note templates within the vault",
"default": "_templates",
"name": "MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER"
},
{
"description": "Path to user-defined MCP prompt templates",
"format": "filepath",
"name": "MARKDOWN_VAULT_MCP_PROMPTS_FOLDER"
},
{
"description": "Run as this UID (Docker entrypoint)",
"format": "number",
"default": "1000",
"name": "PUID"
},
{
"description": "Run as this GID (Docker entrypoint)",
"format": "number",
"default": "1000",
"name": "PGID"
},
{
"description": "Bearer token for authentication",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_BEARER_TOKEN"
},
{
"description": "OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.",
"name": "MARKDOWN_VAULT_MCP_AUTH_MODE"
},
{
"description": "Public base URL of this server (required for OIDC)",
"name": "MARKDOWN_VAULT_MCP_BASE_URL"
},
{
"description": "OIDC discovery endpoint URL",
"name": "MARKDOWN_VAULT_MCP_OIDC_CONFIG_URL"
},
{
"description": "OIDC client ID",
"name": "MARKDOWN_VAULT_MCP_OIDC_CLIENT_ID"
},
{
"description": "OIDC client secret",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_OIDC_CLIENT_SECRET"
},
{
"description": "Signing key for OIDC session JWTs (critical on Linux/Docker)",
"isSecret": true,
"name": "MARKDOWN_VAULT_MCP_OIDC_JWT_SIGNING_KEY"
},
{
"description": "Expected OIDC token audience",
"name": "MARKDOWN_VAULT_MCP_OIDC_AUDIENCE"
},
{
"description": "Space-separated required OIDC scopes",
"default": "openid",
"name": "MARKDOWN_VAULT_MCP_OIDC_REQUIRED_SCOPES"
},
{
"description": "Verify access token JWT instead of id_token",
"format": "boolean",
"default": "false",
"name": "MARKDOWN_VAULT_MCP_OIDC_VERIFY_ACCESS_TOKEN"
},
{
"description": "Override Claude app domain for MCP Apps iframe sandboxing",
"name": "MARKDOWN_VAULT_MCP_APP_DOMAIN"
}
]
}
],
"_meta": {
"dev.indusmcp/source": "official-registry-mirror",
"dev.indusmcp/synced": "2026-05-12"
}
}