Skip to main content
Glama
JonHollander

Obsidian Vault MCP Server

by JonHollander

Obsidian + Claude via Cloudflare

Greifen Sie von Claude (Web, Desktop, Code) aus auf Ihren Obsidian-Vault zu, indem Sie einen MCP-Server auf Cloudflare Workers + Containern verwenden.

Kein NAS, kein Docker Compose, keine Tunnel. Einfach Cloudflare-Infrastruktur mit dem Agents SDK für einen ordnungsgemäßen MCP-Server.

Architektur

Obsidian (phone, desktop)
        │
        │ Obsidian Sync (your existing subscription)
        ▼
Cloudflare Container (Node.js 22)
   runs `ob sync --continuous`
   serves vault files over HTTP API
        ▲
        │ container fetch (native)
        │
Cloudflare Worker (MCP server via Agents SDK)
   tools: list, read, search, write, append, delete
   auth via bearer token (or OAuth / Cloudflare Access)
        ▲
        │ MCP over Streamable HTTP
        │
Claude (web, desktop, Code)

Der Container ist die einzige Quelle der Wahrheit. Er führt obsidian-headless aus, um mit Obsidian Sync zu synchronisieren, und stellt eine HTTP-API für Dateivorgänge bereit. Der Worker leitet alle MCP-Tool-Aufrufe an die API des Containers weiter.

Related MCP server: obsidianMCP

MCP-Tools

Tool

Beschreibung

list_notes

Listet alle Markdown-Notizen mit Pfaden, Größen und Daten auf

read_note

Liest den vollständigen Inhalt einer Notiz anhand des Pfads

search_notes

Volltextsuche über alle Notizen mit Snippets

write_note

Erstellt oder überschreibt eine Notiz

append_to_note

Hängt Text an eine bestehende Notiz an (oder erstellt sie)

delete_note

Löscht eine Notiz

create_folder

Erstellt einen Ordner (mit übergeordneten Verzeichnissen)

delete_folder

Löscht einen Ordner (leer oder rekursiv)

list_folders

Listet direkte Unterordner an einem Pfad auf

Voraussetzungen

  • Cloudflare-Konto mit Workers Paid-Plan ($5/Monat)

  • Aktives Obsidian Sync-Abonnement

  • Node.js 22+ auf Ihrer Workstation

  • wrangler CLI: npm install -g wrangler

Einrichtung

0. Wrangler-Anmeldung

wrangler login

Alle erforderlichen Scopes werden standardmäßig gewährt.

1. Obsidian-Authentifizierungstoken generieren

Einmaliger Schritt auf Ihrer Workstation:

npm install -g obsidian-headless

ob login
# Enter email, password, MFA code if enabled

ob sync-list-remote
# Note your vault name

2. Umgebung konfigurieren

Kopieren Sie die Beispiel-Umgebungsdatei und tragen Sie Ihre Werte ein:

cp .dev.vars.example .dev.vars

Bearbeiten Sie .dev.vars mit Ihren Obsidian-Anmeldedaten und einem optionalen MCP-Authentifizierungstoken. Diese Datei wird von wrangler dev für die lokale Entwicklung und vom Setup-Skript verwendet, um Geheimnisse an Cloudflare zu übertragen. Sie ist bereits in .gitignore enthalten.

3. Bereitstellung

Führen Sie das Setup-Skript aus, um alle Geheimnisse zu übertragen und die Bereitstellung durchzuführen:

./scripts/setup.sh

Oder führen Sie die Schritte einzeln aus:

./scripts/setup.sh secrets         # Push secrets to Cloudflare
./scripts/setup.sh validate        # Check prerequisites
./scripts/setup.sh deploy          # Validate + install deps + deploy + restart container
./scripts/setup.sh status          # Check sync container health
./scripts/setup.sh restart         # Restart sync container
./scripts/setup.sh container-logs  # View sync container logs

Ihr MCP-Server ist live unter: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

4. Claude verbinden

Claude.ai (Web)

Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen:

  • URL: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp?token=YOUR_MCP_AUTH_TOKEN

  • Lassen Sie die OAuth-Felder leer — das Token in der URL übernimmt die Authentifizierung

Claude Code

claude mcp add \
  --transport http \
  --scope user \
  obsidian-vault \
  https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

Claude Desktop

Fügen Sie dies zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "obsidian-vault": {
      "url": "https://obsidian-mcp.<your-subdomain>.workers.dev/mcp"
    }
  }
}

Wie Daten fließen

Sie bearbeiten eine Notiz auf Ihrem Telefon:

  1. Obsidian Sync überträgt die Änderung

  2. ob sync --continuous des Containers lädt sie in /vault herunter

  3. Wenn Claude das nächste Mal liest oder sucht, leitet der Worker die Anfrage an die HTTP-API des Containers weiter, die direkt aus /vault liest

Claude erstellt eine Notiz:

  1. Der Worker empfängt den MCP-Aufruf write_note

  2. Der Worker leitet ihn an die HTTP-API des Containers weiter

  3. Der Container schreibt die Datei in /vault

  4. ob sync erkennt die neue Datei und überträgt sie über Obsidian Sync

  5. Sie erscheint auf Ihrem Telefon und Desktop

Entwicklung

# Local dev (MCP server only, no container)
npm run dev

# Deploy
npm run deploy

Kosten

Dienst

Nutzung

Kosten

Workers Paid Plan

Bereits bezahlt

$5/Monat (deckt alles ab)

Container

1 Instanz, meist im Leerlauf

Im Workers-Plan enthalten

Zusätzliche Gesamtkosten

$0

Projektstruktur

obsidian-mcp/
├── src/
│   └── index.ts              # MCP server (Agents SDK, proxies to container)
├── sync-container/
│   ├── Dockerfile            # Headless sync container image
│   ├── entrypoint.sh         # Auth, sync startup
│   └── server.js             # HTTP API for vault file operations
├── scripts/
│   └── setup.sh              # Push secrets, deploy
├── .dev.vars.example         # Template for env vars / secrets
├── wrangler.jsonc            # Worker + Container config
└── package.json

Nächste Schritte

Diese Punkte dienen als Übungen, um das Setup für Ihre Bedürfnisse zu härten:

Authentifizierungshärtung

Die enthaltene Authentifizierung (MCP_AUTH_TOKEN-Geheimnis) unterstützt sowohl Authorization: Bearer-Header als auch ?token=-Abfrageparameter. Der URL-Token-Ansatz ist praktisch für Claude.ai-Connectors, bei denen benutzerdefinierte Header nicht immer verfügbar sind.

Für geteilte oder öffentliche Bereitstellungen sollten Sie stärkere Optionen in Betracht ziehen:

  • Cloudflare Access: Platzieren Sie Zero Trust Access vor dem Worker für identitätsbasierte SSO mit Audit-Logs ohne Codeänderungen

  • OAuth: Integrieren Sie workers-oauth-provider für GitHub/Google-OAuth-Flows

Container-Authentifizierung

Prüfen Sie, ob obsidian-headless --token oder umgebungsvariablenbasierte Authentifizierung für ob login unterstützt, um interaktive Eingabeaufforderungen zu vermeiden. Falls nicht, speichern Sie die Authentifizierungssitzung nach einer einmaligen interaktiven Anmeldung und stellen Sie sie beim Container-Start wieder her.

Resilienz bei Container-Neustarts

Die ob sqlite-Zustandsdatei befindet sich auf dem flüchtigen Container-Datenträger. Ein Neustart löst eine vollständige Neusynchronisierung aus. Lösung: Fügen Sie einen SIGTERM-Trap in entrypoint.sh hinzu, der die Zustandsdatei speichert und beim Start wiederherstellt.

Suchleistung

Die Brute-Force-Suche liest jede .md-Datei pro Abfrage — bei weniger als 500 Dateien ist das in Ordnung. Für größere Vaults erstellen Sie einen Suchindex in D1 oder Workers KV.

Anhänge

Derzeit wird nur auf .md gefiltert. Erweitern Sie dies, um Bilder, PDFs und andere Vault-Anhänge mit zusätzlichen Tools zu unterstützen.

Fehlerbehebung

Docker muss laufen — Der Sync-Container erfordert Docker. Führen Sie docker info zur Überprüfung aus. Der validate-Unterbefehl prüft dies automatisch.

Zwei PasswörterOBSIDIAN_PASSWORD ist Ihr Obsidian-Kontopasswort (das für die Anmeldung bei obsidian.md verwendet wird). VAULT_PASSWORD ist das separate Ende-zu-Ende-Verschlüsselungspasswort, das in Obsidian → Sync → Verschlüsselung festgelegt wurde. Lassen Sie VAULT_PASSWORD leer, wenn Ihr Vault keine E2EE verwendet.

Bereitstellung startet Container nicht neuwrangler deploy startet laufende Container nicht neu. Das Setup-Skript erledigt dies automatisch. Wenn Sie manuell bereitstellen, starten Sie mit ./scripts/setup.sh restart neu.

Container-Logs nicht in wrangler tail — Container-stdout wird nicht über wrangler tail gestreamt. Verwenden Sie stattdessen ./scripts/setup.sh container-logs.

Komponentenreferenz

Komponente

Funktion

obsidian-headless

Offizielle Obsidian-CLI, synchronisiert Vaults ohne Benutzeroberfläche

McpAgent (Agents SDK)

Verwaltet MCP-Transport, Sitzungen, Authentifizierung

McpServer (MCP SDK)

Tool-Registrierung, JSON-RPC-Protokoll

Cloudflare Containers

Führt den Sync-Prozess parallel zum Worker aus

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    This MCP server enables Claude to interact with an Obsidian vault for persistent, structured memory, providing tools for note creation, semantic search, graph traversal, and session memory.
    18
    9 npm
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides Claude with read, search, and write access to an Obsidian vault through MCP tools.
    6,209 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bidirectional MCP server that connects Claude with an Obsidian vault, enabling note management, full-text search, graph traversal, and daily notes operations.
    2,545 npm
    MIT