Skip to main content
Glama

obsidian-cli-mcp

Ein MCP-Server, der Claude und anderen MCP-Clients die volle Kontrolle über einen laufenden Obsidian-Tresor über die offizielle Obsidian-CLI (Obsidian 1.12+) gibt, mit schnellen direkten Dateisystem-Lesevorgängen, wo die Korrektheit dies erlaubt.

Begleitprojekt zu things-for-mac-mcp.

Was macht dieses Projekt anders?

Die meisten Obsidian-MCP-Server kommunizieren entweder mit einem Community-REST-Plugin oder lesen direkt den Tresor-Ordner. Ersteres erfordert die Installation und das Vertrauen in ein Plugin. Letzteres bricht stillschweigend Wikilinks, sobald es eine Datei verschiebt oder umbenennt, weil nur Obsidian jeden Link, Alias und Embed kennt, der darauf verweist.

Dieser Server leitet jede Operation nach Fähigkeit weiter:

Typische reine Dateisystem-MCPs

obsidian-cli-mcp

Volltextsuche über Tausende von Notizen

Schnell

Schnell (Dateisystem)

Verschieben oder Umbenennen einer Notiz

Unterbricht alle eingehenden Links

Linksicher (Obsidian CLI)

Backlinks, Aliase, unaufgelöste Links

Schätzung

Obsidians eigener Resolver

Bases-Abfragen, Template-Variablen

Unmöglich

Laufzeitauswertung über die App

Schreibvorgänge landen in Obsidians Index und Dateiwiederherstellung

Nein

Ja

iCloud-ausgelagerte Dateien

Als leere Notizen gelesen

Erkannt, über Obsidian gelesen

Erfordert ein Community-Plugin

Manchmal

Nein

Die Architektur spiegelt exakt das Schwesterprojekt wider:

things-for-mac-mcp

obsidian-cli-mcp

Schnelle Lesevorgänge

Direkt SQLite

Direkt Dateisystem

Autoritative Schreibvorgänge

AppleScript

Obsidian CLI

Bequeme Erstellvorgänge

URL-Schema

Obsidian CLI

Die Regel hinter der Aufteilung: Massenlesevorgänge gehen an das Dateisystem, weil sie Durchsatz benötigen, und alles, was verschiebt, umbenennt, löscht oder von Linkauflösung oder App-Zustand abhängt, geht durch die CLI, weil es Obsidians Wissen benötigt. Der Dateisystem-Adapter kann strukturell den Tresor nicht verändern, er exportiert überhaupt keine Schreibfunktion.

Voraussetzungen

  • macOS-, Windows- oder Linux-Desktop mit Obsidian 1.12 oder neuer

  • Die Obsidian-CLI aktiviert: Obsidian, Einstellungen, Allgemein, Befehlszeilenschnittstelle

  • Obsidian muss laufen. Die CLI ist ein Client für die App, kein eigenständiges Binärprogramm. Dies ist nur für den Desktop, mobil wird nicht unterstützt.

  • Node.js 18 oder neuer

Installation

git clone https://github.com/jabaho9523/obsidian-cli-mcp.git
cd obsidian-cli-mcp
npm install
npm run build

Mit einem MCP-Client verbinden

Claude (Desktop / Code)

Fügen Sie zu claude_desktop_config.json (Claude Desktop) hinzu oder führen Sie claude mcp add (Claude Code) aus:

{
  "mcpServers": {
    "obsidian": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/obsidian-cli-mcp/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT": "YourVaultName"
      }
    }
  }
}

Verwenden Sie den absoluten Pfad zu node, nicht das bloße Wort. Über die GUI gestartete Apps erben nicht das PATH Ihrer Shell, daher schlägt "command": "node" bei vielen Clients stillschweigend fehl. Finden Sie Ihren mit which node.

Setzen Sie OBSIDIAN_VAULT, wenn Sie mehr als einen Tresor haben. Andernfalls zielt die CLI auf den zuletzt fokussierten Tresor ab, was eine schreckliche Eigenschaft für automatisierte Schreibvorgänge ist. Bei einem einzelnen Tresor fixiert der Server ihn automatisch beim Start.

Konfiguration

Variable

Standardwert

Zweck

OBSIDIAN_BIN

/usr/local/bin/obsidian

Pfad zur Obsidian-CLI-Binärdatei

OBSIDIAN_VAULT

automatisch fixiert, wenn genau ein Tresor existiert

Tresorname, auf den jeder Befehl abzielt

OBSIDIAN_VAULT_PATH

automatisch über die CLI erkannt

Tresor-Ordner für den Dateisystem-Adapter

OBSIDIAN_MCP_TIMEOUT

20000

Timeout pro Befehl in ms

OBSIDIAN_MCP_ALLOW_DANGEROUS

nicht gesetzt

Auf 1 setzen, um Stufe 3-Befehle freizuschalten

OBSIDIAN_MCP_READONLY

nicht gesetzt

Auf 1 setzen, um jedes mutierende Werkzeug abzulehnen

Schutzmaßnahmen

Drei Stufen, die durchgesetzt werden, bevor die Binärdatei überhaupt gestartet wird:

  • Stufe 1, kostenlos: Lesevorgänge, Suchen und additive Schreibvorgänge (create_note, append_note, append_daily, set_property, update_task, capture).

  • Stufe 2, erfordert confirm: true im Werkzeugaufruf: delete_note, move_note, rename_note, remove_property, run_obsidian_command, und über den Passthrough: history:restore, publish:*, plugin:enable/disable/reload, theme:*, snippet:*, sync, sync:restore, reload, template:insert, workspace:save/delete. Jeder Aufruf mit einem overwrite- oder permanent-Flag wird ebenfalls auf Stufe 2 hochgestuft.

  • Stufe 3, blockiert, es sei denn, der Server läuft mit OBSIDIAN_MCP_ALLOW_DANGEROUS=1: eval, restart, plugin:install, plugin:uninstall, plugins:restrict, devtools, dev:cdp, dev:debug, dev:mobile, und delete_note mit permanent: true.

Eine ehrliche Anmerkung, was diese sind. Stufe 2 ist eine Geschwindigkeitsschwelle gegen versehentliche Aufrufe, keine Sicherheit: das aufrufende Modell kann selbst confirm: true setzen. Stufe 3 ist eine echte Grenze, weil nur derjenige, der die Serverumgebung konfiguriert, sie freischalten kann. Wenn Sie einen autonomen Agenten auf einen Tresor richten, der Ihnen wichtig ist, führen Sie ihn mit OBSIDIAN_MCP_READONLY=1, das jeden mutierenden Befehl vor dem Versand ablehnt, unabhängig von der Stufe.

Linksichere Verschiebungen und Umbenennungen

Die wichtigste Regel in diesem Projekt: Dateien werden niemals über das Dateisystem verschoben, umbenannt oder gelöscht. Obsidian aktualisiert jeden Wikilink im Tresor, wenn es die Operation durchführt. Ein einfaches mv tut das nicht.

Vorher, mit Projects/Roadmap.md, verlinkt von drei Notizen:

Weekly Review.md:   Progress on [[Roadmap]] is on track.
Team Notes.md:      See [[Roadmap#Q3]] for the plan.
Index.md:           - [[Roadmap|2026 roadmap]]

Nach move_note mit to: "Archive/2026 Roadmap.md":

Weekly Review.md:   Progress on [[2026 Roadmap]] is on track.
Team Notes.md:      See [[2026 Roadmap#Q3]] for the plan.
Index.md:           - [[2026 Roadmap|2026 roadmap]]

Alle drei Links aktualisiert, einschließlich des Überschriftenankers und des Alias, weil Obsidian die Verschiebung durchgeführt hat. Eine Dateisystemverschiebung hätte drei defekte Links und keinen Fehler hinterlassen.

Warum hybrid? Die Leistungsbegründung

Jeder CLI-Aufruf ist eine vollständige IPC-Roundtrip durch die laufende Obsidian-App. Das ist korrekt, aber langsam: Das Lesen von 2.000 Notizen über obsidian read sind 2.000 Roundtrips, Minuten Echtzeit. Das Lesen von der Festplatte ist ein einziger Verzeichnisdurchlauf, weit unter einer Sekunde auf jeder SSD.

Daher gehen Massenlesevorgänge (Suche, Auflistungen, Tag- und Eigenschaftsscans, Exporte, Zusammenfassungen) an das Dateisystem, und die CLI ist reserviert für das, was nur Obsidian beantworten kann (Links, Aliase, Bases, Templates, App-Zustand) und für jeden Schreibvorgang. Um dies in Ihrem eigenen Tresor zu vergleichen, messen Sie die Zeit von search_notes gegen den Passthrough obsidian_cli mit ["search", "query=..."].

Fehlerbehebung

"Obsidian läuft nicht." Der häufigste Fehler. Die CLI benötigt die App geöffnet und vollständig geladen. Starten Sie Obsidian und versuchen Sie es erneut.

"Konnte die Obsidian-CLI-Binärdatei nicht finden." Aktivieren Sie die CLI in Obsidian unter Einstellungen, Allgemein, Befehlszeilenschnittstelle, oder setzen Sie OBSIDIAN_BIN auf die Binärdatei.

Timeouts beim ersten Befehl. Ein kalter Obsidian-Start kann die Standardeinstellung von 20s überschreiten. Erhöhen Sie OBSIDIAN_MCP_TIMEOUT.

Notizen werden als fehlend gelesen oder der Server fällt oft auf die CLI zurück. Wenn Ihr Tresor in iCloud mit aktiviertem "Mac-Speicher optimieren" liegt, existieren ausgelagerte Dateien nur als .name.icloud-Stubs. Der Server erkennt diese und liest sie über Obsidian, das sie erneut herunterlädt, anstatt leere Notizen zu melden. Massenscans überspringen ausgelagerte Dateien und geben dies in ihrer Ausgabe an.

Schreibvorgänge landen im falschen Tresor. Sie haben mehrere Tresore und kein OBSIDIAN_VAULT gesetzt. Der Server warnt darüber auf stderr beim Start. Legen Sie einen fest.

Werkzeuge erscheinen nicht im Client. Überprüfen Sie die MCP-Protokolle des Clients und prüfen Sie das Problem mit dem absoluten Node-Pfad oben.

Auf dem neuesten Stand bleiben

git pull && npm install && npm run build

Der Server sucht beim Start nach Updates, höchstens einmal alle 24 Stunden, und speichert das Ergebnis in ~/.config/obsidian-cli-mcp/update-check.json. Er schlägt offline stillschweigend fehl und gibt eine einzelne stderr-Zeile aus, wenn eine neuere Version existiert.

Werkzeuge (insgesamt 39)

Lesewerkzeuge (18)

Tool

Adapter

Beschreibung

read_note

Dateisystem, CLI-Fallback

Liest eine Notiz anhand eines Wikilink-artigen Namens oder exakten Pfads

search_notes

Dateisystem

Volltextsuche mit Ordner-, Groß-/Kleinschreibungs-, Kontext- und Begrenzungsoptionen

list_notes

Dateisystem

Listet Dateien, gefiltert nach Ordner und Erweiterung

list_folders

Dateisystem

Listet Ordner

get_note_info

CLI

Pfad, Größe, Erstellungs- und Änderungsdaten

get_outline

Dateisystem

Überschriftenbaum mit Zeilennummern

get_backlinks

CLI

Eingehende Links, aufgelöst von Obsidian

get_outgoing_links

CLI

Ausgehende Links

get_tags

Dateisystem

Alle Tags mit Zählern, Frontmatter und Inline

get_properties

Dateisystem

Tresorweite Frontmatter-Schlüssel mit Zählern

read_property

Dateisystem

Ein Frontmatter-Schlüssel auf einer Notiz

get_vault_info

CLI

Tresorname, Pfad, Statistiken

get_recents

CLI

Kürzlich geöffnete Dateien

list_bases

CLI

Alle .base-Dateien

query_base

CLI

Führt eine Bases-Ansichtsabfrage aus, von der App ausgewertet

list_templates

CLI

Vorlagen im konfigurierten Ordner

read_template

CLI

Vorlageninhalt, optional mit aufgelösten Variablen

get_word_count

Dateisystem

Wörter und Zeichen, ohne Frontmatter

Schreibwerkzeuge (16)

Alle Schreibvorgänge gehen durch die CLI. Jeder erfordert ein explizites file- oder path-Ziel, keiner kann auf die aktuell aktive Datei zurückfallen.

Tool

Guard-Stufe

Beschreibung

create_note

1, 2 mit overwrite

Erstellt eine Notiz, optional aus einer Vorlage

append_note

1

Inhalt anhängen

prepend_note

1

Inhalt vor dem Frontmatter einfügen

read_daily

1

Heutige Tagesnotiz lesen

append_daily

1

An die heutige Tagesnotiz anhängen

prepend_daily

1

Vor die heutige Tagesnotiz einfügen

get_daily_path

1

Pfad der heutigen Tagesnotiz

set_property

1

Eine Frontmatter-Eigenschaft setzen

remove_property

2

Eine Frontmatter-Eigenschaft entfernen

move_note

2

Link-sicheres Verschieben

rename_note

2

Link-sicheres Umbenennen

delete_note

2, 3 mit permanent

In den Papierkorb verschieben oder dauerhaft löschen

list_tasks

1

Markdown-Aufgaben mit Referenzen auflisten

update_task

1

Aufgabenstatus per Referenz oder Zeile umschalten oder setzen

open_note

1

In der Obsidian-Oberfläche öffnen, nur Navigation

run_obsidian_command

2 zur Ausführung

Befehle der Befehlspalette auflisten oder ausführen, inklusive Plugin-Befehle

run_obsidian_command ist die weiteste Tür im Server: Sie erreicht jede Aktion der Befehlspalette, einschließlich derer von Community-Plugins. Sie ist bewusst freigegeben und auf Stufe 2 abgesichert.

Workflow-Tools (4)

Tool

Beschreibung

capture

Zeitgestempeltes Anhängen an die heutige Tagesnotiz, der häufigste Vorgang in der Praxis

daily_digest

Fasst einen Datumsbereich von Tagesnotizen in einem Dokument zusammen

export_notes

Exportiert einen Ordner als JSON, Markdown oder CSV, inline oder in eine Datei außerhalb des Tresors

vault_health

Verwaiste, tote Enden, unaufgelöste Links und leere Notizen in einem Bericht. Bewusst auf den Link-Graphen beschränkt

Notausstieg (1)

Tool

Beschreibung

obsidian_cli

Führt einen beliebigen CLI-Befehl aus. Nimmt args als vorgetrenntes Array von Zeichenketten entgegen, niemals als Shell-Zeichenkette, sodass der Server ohne Shell startet und Inhalt nicht aus der Zitierung ausbrechen kann. Alle Guard-Stufen gelten

MCP-Ressourcen

Die Client-Unterstützung für Ressourcen variiert, Claude Desktop zeigt sie derzeit nicht an.

Ressource

Inhalt

obsidian://vault

Tresor-Informationen

obsidian://daily

Heutige Tagesnotiz

obsidian://tags

Alle Tags mit Anzahl

obsidian://recents

Zuletzt geöffnete Dateien

obsidian://orphans

Notizen ohne eingehende Links

obsidian://note/{path}

Beliebige Notiz per tresorrelativem Pfad

MCP-Prompts

Prompt

Zweck

daily_note_review

Eine Tagesnotiz zusammenfassen, offene Aufgaben anzeigen, Folgeaktionen vorschlagen

vault_cleanup

Den Tresor-Gesundheitsbericht durchgehen und link-sichere Korrekturen vorschlagen

note_from_source

Eingefügtes Material mithilfe einer vorhandenen Vorlage in eine Notiz umwandeln

weekly_digest

Eine Woche Tagesnotizen in einer Übersichtsnotiz zusammenfassen

Architektur

src/
├── index.ts              MCP server entry, stdio transport
├── config.ts             Environment configuration
├── adapters/
│   ├── cli.ts            execFile wrapper, vault injection, error contract
│   └── filesystem.ts     Read-only vault access, iCloud stub detection
├── tools/
│   ├── common.ts         Shared note loading with CLI fallback
│   ├── read.ts           18 read tools
│   ├── write.ts          16 write tools
│   ├── workflow.ts       4 composite tools
│   └── passthrough.ts    obsidian_cli escape hatch
├── resources/
│   └── vault.ts          MCP resources
├── prompts/
│   └── workflows.ts      MCP prompts
└── utils/
    ├── guardrails.ts     Tier policy, readonly allowlist
    ├── markdown.ts       Frontmatter, headings, tags, word counts
    ├── output.ts         Truncation at 60,000 characters
    └── update-check.ts   Daily update check

Tests laufen gegen eine Stub-Binärdatei, die ihr volles argv scannt und angewiesen werden kann, fehlzuschlagen, hängen zu bleiben oder übermäßig große Ausgaben zu erzeugen, sodass die gesamte Testsuite ohne installiertes Obsidian besteht:

npm test

Support

Probleme und Funktionsanfragen: GitHub Issues.

Mehr vom Autor

Lizenz

MIT

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

View all MCP Connectors

Latest Blog Posts

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/jabaho9523/obsidian-cli-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server