Self-hosted agent memory in an Obsidian vault: hybrid search, link graph, tasks, safe writes, OAuth
Connect Runs on your machine
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
{
"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>"
}
}
}
}
{
"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>"
}
}
}
}
{
"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
| Name | Description |
|---|---|
DATABASE_URLRequired, 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_PATHRequired | Path of the Obsidian vault inside the container (mount your vault read-write there). |
SECRET_KEYRequired, secret | itsdangerous signer for cookies/sessions. Generate with `openssl rand -hex 32`; the app refuses to start on a placeholder. |
MCP_HOSTNAMERequired | 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_PROVIDEROptional | 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_URLOptional | Ollama endpoint serving bge-m3 (used when EMBEDDING_PROVIDER=ollama). Must be https or loopback unless EMBEDDING_ALLOW_PLAINTEXT is set. |
OPENAI_API_KEYOptional, secret | OpenAI (or OpenAI-compatible) API key for text-embedding-3-* (required when EMBEDDING_PROVIDER=openai; the server refuses to start without it). |
TEI_URLOptional | TEI endpoint (used when EMBEDDING_PROVIDER=tei). Must be https or loopback unless EMBEDDING_ALLOW_PLAINTEXT is set. |
TEI_EMBEDDING_MODELOptional | 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_SIZEOptional | Inputs per TEI /embed request (1-256). A value above the server's max_client_batch_size refuses startup. |
TEI_API_KEYOptional, 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
| Package | ghcr.io/maxkuminov/obsidian-mcp:v1.5.0 (OCI, streamable-http) |
| First published | 13 Nov 2026 |
| Last updated | 13 Nov 2026 |
| Registry name | io.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.
