NestDaddy

Obsidian MCP Server

io.github.maxkuminov/obsidian-mcp · v1.5.0

Self-hosted agent memory in an Obsidian vault: hybrid search, link graph, tasks, safe writes, OAuth

Connect Runs on your machine

Terminal
claude mcp add obsidian-mcp -e DATABASE_URL=<DATABASE_URL> -e VAULT_PATH=<VAULT_PATH> -e SECRET_KEY=<SECRET_KEY> -e MCP_HOSTNAME=<MCP_HOSTNAME> -e EMBEDDING_PROVIDER=<EMBEDDING_PROVIDER> -e OLLAMA_URL=<OLLAMA_URL> -e OPENAI_API_KEY=<OPENAI_API_KEY> -e TEI_URL=<TEI_URL> -e TEI_EMBEDDING_MODEL=<TEI_EMBEDDING_MODEL> -e TEI_EMBED_BATCH_SIZE=<TEI_EMBED_BATCH_SIZE> -e TEI_API_KEY=<TEI_API_KEY> -- docker run -i --rm ghcr.io/maxkuminov/obsidian-mcp:v1.5.0
claude_desktop_config.json
{
  "mcpServers": {
    "obsidian-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.5.0"
      ],
      "env": {
        "DATABASE_URL": "<DATABASE_URL>",
        "VAULT_PATH": "<VAULT_PATH>",
        "SECRET_KEY": "<SECRET_KEY>",
        "MCP_HOSTNAME": "<MCP_HOSTNAME>",
        "EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
        "OLLAMA_URL": "<OLLAMA_URL>",
        "OPENAI_API_KEY": "<OPENAI_API_KEY>",
        "TEI_URL": "<TEI_URL>",
        "TEI_EMBEDDING_MODEL": "<TEI_EMBEDDING_MODEL>",
        "TEI_EMBED_BATCH_SIZE": "<TEI_EMBED_BATCH_SIZE>",
        "TEI_API_KEY": "<TEI_API_KEY>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "obsidian-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.5.0"
      ],
      "env": {
        "DATABASE_URL": "<DATABASE_URL>",
        "VAULT_PATH": "<VAULT_PATH>",
        "SECRET_KEY": "<SECRET_KEY>",
        "MCP_HOSTNAME": "<MCP_HOSTNAME>",
        "EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
        "OLLAMA_URL": "<OLLAMA_URL>",
        "OPENAI_API_KEY": "<OPENAI_API_KEY>",
        "TEI_URL": "<TEI_URL>",
        "TEI_EMBEDDING_MODEL": "<TEI_EMBEDDING_MODEL>",
        "TEI_EMBED_BATCH_SIZE": "<TEI_EMBED_BATCH_SIZE>",
        "TEI_API_KEY": "<TEI_API_KEY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "obsidian-mcp": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/maxkuminov/obsidian-mcp:v1.5.0"
      ],
      "env": {
        "DATABASE_URL": "<DATABASE_URL>",
        "VAULT_PATH": "<VAULT_PATH>",
        "SECRET_KEY": "<SECRET_KEY>",
        "MCP_HOSTNAME": "<MCP_HOSTNAME>",
        "EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
        "OLLAMA_URL": "<OLLAMA_URL>",
        "OPENAI_API_KEY": "<OPENAI_API_KEY>",
        "TEI_URL": "<TEI_URL>",
        "TEI_EMBEDDING_MODEL": "<TEI_EMBEDDING_MODEL>",
        "TEI_EMBED_BATCH_SIZE": "<TEI_EMBED_BATCH_SIZE>",
        "TEI_API_KEY": "<TEI_API_KEY>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
DATABASE_URL
Required, secret
PostgreSQL 16 + pgvector (0.8.0+) connection URL for the app's NON-superuser role, e.g. postgresql+asyncpg://obsidian_mcp:<password>@postgres:5432/obsidian_mcp. A superuser role or a CHANGE_ME password is refused at startup.
VAULT_PATH
Required
Path of the Obsidian vault inside the container (mount your vault read-write there).
SECRET_KEY
Required, secret
itsdangerous signer for cookies/sessions. Generate with `openssl rand -hex 32`; the app refuses to start on a placeholder.
MCP_HOSTNAME
Required
Public hostname your reverse proxy routes to. Also derives BASE_URL, ALLOWED_ORIGINS and ALLOWED_HOSTS as https://<MCP_HOSTNAME> unless those are set explicitly.
EMBEDDING_PROVIDER
Optional
Embedding provider: `ollama` (self-hosted, default), `openai` (bring your own key) or `tei` (Hugging Face Text Embeddings Inference, native /embed). Switching after deploy requires `make reset-embeddings`.
OLLAMA_URL
Optional
Ollama endpoint serving bge-m3 (used when EMBEDDING_PROVIDER=ollama). Must be https or loopback unless EMBEDDING_ALLOW_PLAINTEXT is set.
OPENAI_API_KEY
Optional, secret
OpenAI (or OpenAI-compatible) API key for text-embedding-3-* (required when EMBEDDING_PROVIDER=openai; the server refuses to start without it).
TEI_URL
Optional
TEI endpoint (used when EMBEDDING_PROVIDER=tei). Must be https or loopback unless EMBEDDING_ALLOW_PLAINTEXT is set.
TEI_EMBEDDING_MODEL
Optional
Must equal the model_id the TEI server reports at GET /info, exactly (a local path included); a different value refuses startup. A change needs `make reset-embeddings`.
TEI_EMBED_BATCH_SIZE
Optional
Inputs per TEI /embed request (1-256). A value above the server's max_client_batch_size refuses startup.
TEI_API_KEY
Optional, secret
Bearer token for a TEI server started with --api-key; sent only to TEI_URL (/embed, /info, the panel's /health). Empty means no Authorization header.

Details

Packageghcr.io/maxkuminov/obsidian-mcp:v1.5.0 (OCI, streamable-http)
First published13 Nov 2026
Last updated13 Nov 2026
Registry nameio.github.maxkuminov/obsidian-mcp

More productivity servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.