obsidian-cli-mcp
obsidian-cli-mcp
obsidian-cli-mcp ist ein MCP-Server für die offizielle Obsidian-CLI. Er stellt Obsidian-Vault-Suche, Notiz-, Aufgaben-, Datei-, Link- und native Canvas-Operationen für einen MCP-Client bereit. Der Server ersetzt Obsidian nicht: Die CLI leitet Anfragen an die laufende Obsidian-Desktop-App weiter.
Der Standardtransport ist lokales stdio. Remote Streamable HTTP ist als erweiterte, separat abgesicherte Einrichtung verfügbar; für die lokale Nutzung ist es nicht erforderlich.
Anforderungen
macOS mit installierter und laufender Obsidian Desktop-App.
Die offizielle Obsidian-CLI in Obsidian aktiviert: Einstellungen → Allgemein → Befehlszeilenschnittstelle, dann
obsidianin IhremPATHregistrieren.Node.js 18 oder neuer, um das veröffentlichte Paket auszuführen. Bun wird nur benötigt, um diesen Quellcode-Checkout zu erstellen oder zu entwickeln.
Dieses Projekt erfordert die Desktop-CLI. Es unterstützt obsidian-headless nicht. Die Obsidian-App muss geöffnet bleiben, während der MCP-Server verwendet wird.
Überprüfen Sie zuerst die Obsidian-Seite:
command -v obsidian
obsidian version
obsidian vaultSchnellstart mit npm
Starten Sie das veröffentlichte Paket v0.4.1 aus einem beliebigen Verzeichnis:
npx --yes --package=@dariuscodes/obsidian-cli-mcp@0.4.1 obsidian-cli-mcpDer Befehl spricht MCP über stdio und wartet auf einen MCP-Client. Er druckt absichtlich keine Protokolldaten auf das Terminal. Diagnosen gehen an stderr.
Für einen Quellcode-Checkout stattdessen:
git clone https://github.com/DariusCorvus/obsidian-cli-mcp.git
cd obsidian-cli-mcp
bun install --frozen-lockfile
bun run build
node dist/main.jsFür die lokale Standardkonfiguration sind kein Vault-Name, Vault-Pfad, Token, Cloudflare-Konto, LaunchAgent oder Konfigurationsdatei erforderlich. Der Server verwendet den aktiven Vault, den Obsidian über die offizielle CLI bereitstellt.
Einen MCP-Client verbinden
Für einen Client, der eine mcpServers-Konfiguration akzeptiert, verwenden Sie den npm-Befehl:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"--yes",
"--package=@dariuscodes/obsidian-cli-mcp@0.4.1",
"obsidian-cli-mcp"
]
}
}
}Wenn der Client Ihr Shell-PATH nicht erbt, ersetzen Sie npx durch den absoluten Pfad, der von command -v npx ausgegeben wird. Für einen Quellcode-Checkout verwenden Sie command: "node" und args: ["/absolute/path/to/obsidian-cli-mcp/dist/main.js"].
Starten Sie den Client nach der Änderung seiner MCP-Konfiguration neu. Die erste nützliche Sequenz ist:
Rufen Sie
vault_searchmit einer Abfrage auf, die in Ihrem Vault vorhanden sein sollte, z. B.{ "query": "meeting", "limit": 10 }.Übergeben Sie einen zurückgegebenen Pfad an
note_read, z. B.{ "path": "<path returned by vault_search>" }.Vorschau einer sicheren Notizänderung, bevor Sie sie anwenden:
{ "name": "MCP smoke note", "content": "Created after reviewing the plan.", "dryRun": true }Dies ist ein
note_create-Aufruf. Er gibt die geplante Aktion und den genauen CLI-Befehl zurück, ohne den Vault zu verändern. Verwenden SiedryRun: falsenur, nachdem Sie den Plan überprüft haben.dryRunist eine Vorschau, keine Autorisierungsgrenze.Für Canvas: Vorschau einer nativen Canvas-Datei und eines Textknotens:
{ "path": "MCP smoke.canvas", "nodes": [ { "id": "hello", "type": "text", "x": 0, "y": 0, "width": 320, "height": 180, "text": "Hello from MCP" } ], "dryRun": true }Dies ist ein
canvas_create-Aufruf. Überprüfen Sie den Plan und rufen Sie ihn dann mitdryRun: falseauf, wenn Sie die Datei erstellen möchten. Verwenden Siecanvas_read, um danach das native.canvas-JSON zu inspizieren. Canvas-Tools bewahren unbekannte Felder, validieren Knoten-/Kantenreferenzen und erfordern keine beliebige Auswertung.
Konfiguration und sichere Standardeinstellungen
Eine leere oder fehlende Konfiguration ist für einen Vanilla-Obsidian-Vault verwendbar. Die optionale .obsidianmcprc.yaml wird aus dem Arbeitsverzeichnis des Servers ermittelt. Für Clients mit unvorhersehbarem Arbeitsverzeichnis setzen Sie OBSIDIAN_MCP_CONFIG auf einen expliziten Konfigurationsdateipfad.
Die Standardrichtlinie ist bewusst lokal und begrenzt:
Der v0.4.0-Server stellt kein generisches
obsidian_eval-Tool bereit.eval.enabledist standardmäßigfalse; interne feste Eval-Snippets, die von einigen sicheren Operationen verwendet werden, sind keine vom Benutzer bereitgestellte JavaScript-Ausweichmöglichkeit.Importe aus beliebigen lokalen Dateien sind deaktiviert, bis
imports.allowedRootsexplizit konfiguriert ist. URLs werden nie abgerufen..obsidian,.git,.trash,.Trash,Trashund.DS_Store-Pfadsegmente sind standardmäßig blockiert. Fügen Siepaths.allowfür einen engeren Vault-Bereich hinzu und fügen Sie projektspezifischepaths.deny-Präfixe für sensiblere Inhalte hinzu.Mutationen legen
dryRunoffen.file_deleteerfordertconfirm: trueundnote_deleteverwendet standardmäßig den Obsidian-Papierkorb; dauerhaftes Löschen erfordert die explizite Konfigurationdelete.mode: hard.Git-Autocommit ist standardmäßig deaktiviert.
Schreibgeschützte Voreinstellung
Verwenden Sie eine explizite Zulassungsliste, wenn ein MCP-Client den Vault nur inspizieren soll:
tools:
allow:
- vault_search
- note_read
- note_list
- vault_tags
- unresolved_links
- tasks_list
- note_diff
- backlinks_get
- outlinks_get
- file_read_binary_metadata
- canvas_readSichere lokale Voreinstellung
Die Standardeinstellung hat sichere lokale Schutzmaßnahmen, ist aber nicht schreibgeschützt. Für eine explizite sichere lokale Oberfläche, die normale Notizbearbeitung und Canvas-Erstellung erlaubt, aber Löschung, Dateiimporte, Dateilebenszyklusoperationen und beliebige Auswertung weglässt:
tools:
allow:
- vault_search
- note_read
- note_list
- vault_tags
- unresolved_links
- tasks_list
- note_diff
- backlinks_get
- outlinks_get
- canvas_read
- canvas_create
- canvas_upsert_nodes
- canvas_upsert_edges
- canvas_add_node
- canvas_add_edge
- canvas_auto_layout
- canvas_open
- note_create
- note_append
- note_set_frontmatter
- note_replace_range
- note_insert_at
- note_replace
- note_insert
- daily_open
- daily_append
- task_create
- task_update
delete:
mode: trash
eval:
enabled: false
imports:
allowedRoots: []Vollständige vertrauenswürdige lokale Voreinstellung
Lassen Sie tools.allow weg, um die vollständige integrierte Tool-Oberfläche bereitzustellen, während die standardmäßig geschützten Pfade, Papierkorblöschung, deaktivierte Importe und deaktiviertes obsidian_eval beibehalten werden. Wenn Importe benötigt werden, konfigurieren Sie nur ein dediziertes lokales Quellverzeichnis:
imports:
allowedRoots:
- /absolute/path/to/approved-imports
maxBytes: 26214400
collision: increment
delete:
mode: trash
eval:
enabled: falseSiehe docs/configuration.md für alle Felder und examples/ für Notizorganisations-Voreinstellungen.
Lokales stdio versus Remote-HTTP
Lokales stdio startet einen Serverprozess direkt vom MCP-Client. Es ist die empfohlene Installation: Es gibt keinen lauschenden Socket, keine Remote-Authentifizierung, kein Cloudflare-Setup und keinen öffentlichen Endpunkt.
Streamable HTTP ist ein optionaler erweiterter Modus für einen Client, der kein lokales stdio verwenden kann. Es bindet nur an Loopback und weigert sich zu starten, ohne entweder Cloudflare Access JWT-Validierung oder ein starkes Capability-Token. Platzieren Sie es hinter einem TLS-, authentifizierten Reverse-Proxy oder Tunnel; binden Sie es nicht an 0.0.0.0. Siehe docs/remote-cloudflare.md für das generische erweiterte Setup und seine Sicherheitsabwägungen.
Tool-Oberfläche
Der Standardserver bewirbt 42 reguläre Tools:
Lesen:
vault_search,note_read,note_list,vault_tags,unresolved_links,tasks_list,note_diff,backlinks_get,outlinks_get,file_read_binary_metadata,canvas_read.Schreiben und Workflow:
note_create,note_append,note_set_frontmatter,daily_open,daily_append,note_replace_range,note_insert_at,note_replace,note_insert,task_create,task_update,note_transition.Dateien und Anhänge:
file_import,attachment_import,note_attach,attachment_embed,file_move,file_rename,file_delete,note_rename,note_move,folder_create,note_delete.Canvas:
canvas_create,canvas_upsert_nodes,canvas_upsert_edges,canvas_remove,canvas_open,canvas_add_node,canvas_add_edge,canvas_auto_layout.
Alle mutierenden Tools akzeptieren dryRun. Tool-Anmerkungen identifizieren schreibgeschützte und destruktive Operationen für kompatible MCP-Clients.
Einschränkungen und Sicherheit
Obsidian Desktop muss ausgeführt werden, seine offizielle CLI muss aktiviert sein und der aktive Vault muss für diese Desktop-Sitzung verfügbar sein. Dieser Server ist keine Sandbox und unterstützt obsidian-headless nicht.
Vault-Inhalte sind nicht vertrauenswürdige Daten. Notizen, Canvas-Text, Aufgabentext und Suchergebnisse können Prompt-Injection-Anweisungen enthalten; ein MCP-Client sollte sie als Daten behandeln und niemals Anweisungen befolgen, die in einem Vault gefunden werden, nur weil sie von einem Tool zurückgegeben wurden. Tool-Ausgaben können auch sensible Vault-Inhalte enthalten, verbinden Sie sich daher nur mit Clients, denen Sie vertrauen.
Lesen Sie SECURITY.md, bevor Sie Remote-HTTP, Importe, hartes Löschen oder eine breite Mutations-Zulassungsliste aktivieren. Melden Sie Sicherheitsprobleme privat, wie dort beschrieben.
Entwicklung und CI
Der Quellcode-Checkout verwendet Bun, während die veröffentlichte Binärdatei auf Node läuft:
bun install
bun run typecheck
bun test
bun run build:schema
bun run build
bun run smoke:stdio
git diff --check
npm pack --dry-run --jsonDer Offline-Studio-Smoke-Test überprüft den Einstiegspunkt des gebauten Pakets, MCP-Initialize, tools/list, die erwartete Tool-Oberfläche und das Fehlen von obsidian_eval. Der echte Obsidian-Smoke-Test ist separat und erfordert eine Benutzersitzung mit laufendem Obsidian:
OBSIDIAN_CLI_BINARY=obsidian \
OBSIDIAN_MCP_CONFIG=/absolute/path/to/your/config.yaml \
OBSIDIAN_MCP_VAULT="your-vault-name" \
bun run smoke:liveGitHub Actions führt nur Offline-Gates aus; es hängt nicht von Obsidian Desktop oder einem echten Vault auf einem gehosteten Runner ab.
Lizenz
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dariuscorvus/obsidian-cli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server