MCP-Server
Mindwtr bietet einen optionalen MCP-Server (Model Context Protocol). Damit können Sie KI-Agenten wie Claude Desktop, Claude Code, OpenAI Codex oder Gemini CLI mit Ihrer lokalen Mindwtr-Datenbank, der lokalen API der Desktop-App oder einem selbst gehosteten Mindwtr-Cloud-Endpunkt verbinden.
Das eigenständige Hilfsprogramm verwendet standardmäßig stdio.
Implementierungsreferenz: apps/mcp-server/README.md. Falls diese README vom aktuellen Servercode oder den erzeugten MCP-Werkzeugschemas abweicht, sind Code und Schemas maßgeblich.
App-Binärdateien und MCP-Hilfsprogramm
Das eigenständige MCP-Hilfsprogramm wird weiterhin als mindwtr-mcp veröffentlicht und ist im öffentlichen MCP Registry aufgeführt.
Sie müssen nicht die gesamte App aus dem Quellcode ausführen, um MCP zu verwenden. Verwenden Sie die normale Desktop-App für Ihre Aufgaben und lassen Sie dann Ihren MCP-Client mindwtr-mcp über npx starten, oder installieren Sie es global mit npm. Verweisen Sie das Hilfsprogramm auf die lokale Datei mindwtr.db der Desktop-App oder verwenden Sie das unten beschriebene Local-API-Backend.
Die Standardpfade der Desktop-Datenbank stehen unten unter Standardspeicherorte der Datenbank. Binärdateien für Mobilgeräte stellen keinen lokalen MCP-Server bereit.
Integriertes Desktop-MCP
Die Desktop-App enthält einen MCP-Server unter Einstellungen → Integrationen → Lokaler MCP-Server (erweitert). Er läuft innerhalb der App und nutzt dieselben internen Operationen wie die Local API. Node, npm, Bun oder ein separates Hilfsprogramm sind nicht erforderlich, und die Local API kann ausgeschaltet bleiben. MCP ist standardmäßig deaktiviert und schreibgeschützt.
Aktivieren Sie den Server und lassen Sie Mindwtr laufen. Beim Schließen in den Infobereich bleibt er verfügbar; das Deaktivieren von MCP oder Beenden der App stoppt ihn. Clients müssen authentifiziertes Streamable HTTP unterstützen. Der Standardendpunkt lautet:
http://127.0.0.1:8722/mcpVerfügbar ab v1.3.7: Die folgenden Steuerelemente ergänzen das Kopieren der Codex-Konfiguration, einen einstellbaren Port und separate Schreibberechtigungen. Frühere Versionen verwenden einen festen Port und einen einzelnen Schalter Änderungen erlauben.
Codex verbinden
Wählen Sie Für Codex kopieren und fügen Sie das kopierte TOML in ~/.codex/config.toml ein. Wenn diese Datei bereits mcp_servers.mindwtr enthält, ersetzen Sie diesen Eintrag, statt einen zweiten hinzuzufügen. Behalten Sie Ihre übrige Konfiguration bei. Mindwtr kopiert den Text; es bearbeitet keine Codex-Dateien.
Die kopierte Konfiguration hat die folgende Form mit Ihrem aktuellen Endpunkt und Token:
[mcp_servers.mindwtr]
url = "http://127.0.0.1:8722/mcp"
[mcp_servers.mindwtr.http_headers]
Authorization = "Bearer <token from Mindwtr>"Starten Sie Ihren Codex-Client nach einer Konfigurationsänderung neu oder verbinden Sie ihn erneut. Verbindungsdaten kopieren liefert JSON für Clients, die mcpServers verwenden; reine stdio-Clients benötigen weiterhin das eigenständige Hilfsprogramm.
Berechtigungen und Port
Bearbeiten von Aufgaben und Projekten erlauben ermöglicht das Erstellen, Bearbeiten, Abschließen und Wiederherstellen von Aufgaben sowie das Erstellen oder Bearbeiten von Projekten. Aktivieren Sie unter Erweitert bei Bedarf Archivieren erlauben und Löschen erlauben separat. Jede Berechtigung ist unabhängig, und bei einer neuen Installation sind alle ausgeschaltet. Bestehende Installationen, in denen Änderungen erlauben aktiviert war, behalten ihre bisherige Löschberechtigung; Sie können diese ausschalten, ohne Bearbeitungen zu deaktivieren. Das Archivieren erfordert eine ausdrückliche neue Freigabe.
Das integrierte Werkzeug mindwtr_archive_task archiviert über die bestehende Operation der App. Es schließt eine Aufgabe nicht ab und erzeugt nicht deren nächste Wiederholung. Eine Aktualisierung, die gewöhnliche Bearbeitungen mit Änderungen an Archivierung oder Abbruch kombiniert, erfordert beide Berechtigungen. Beim Löschen handelt es sich um eine weiche Löschung. Diese Einstellungen gelten für den integrierten Server, nicht für das eigenständige Hilfsprogramm oder die separate Local API.
Unter Erweitert können Sie außerdem einen Port von 1024 bis 65535 wählen. Speichern Sie ihn und kopieren Sie die aktualisierten Verbindungsdaten für Ihren Client. Wenn ein anderer Prozess den Port belegt, wählen Sie einen freien Port oder beheben Sie den Konflikt und wählen Sie Erneut versuchen. Der Server bindet immer an 127.0.0.1.
Verbundene KI-Clients können die über diese Werkzeuge bereitgestellten Daten lesen und an ihren Anbieter senden. Halten Sie das kopierte Token geheim. Beim Erneuern werden bestehende Clients getrennt und benötigen das neue Token.
Dieser Endpunkt dient Clients auf demselben Computer. Er bietet keinen entfernten ChatGPT-Zugriff, Tunnel oder gehosteten Dienst. Mobile Apps stellen ihn nicht bereit.
Voraussetzungen
Diese Voraussetzungen gelten für das eigenständige Hilfsprogramm.
- Node.js 22+ für Installationen ohne Compiler: Die SQLite-Abhängigkeit liefert vorkompilierte Binärdateien für Node 22 und neuer. Node 20 kann den Server weiterhin ausführen, benötigt für die Installation aber C++-Buildwerkzeuge.
- Bei reinen API-Installationen können Sie das optionale SQLite-Addon mit
--omit=optionalweglassen. - npm oder einen anderen Node-Package-Runner für das veröffentlichte Paket
mindwtr-mcp - eine lokale Mindwtr-Datenbank (
mindwtr.db) für den SQLite-Modus, eine laufende Local API der Desktop-App und ihr Bearer-Token für den API-Modus oder eine selbst gehostete Mindwtr-Cloud-URL und ein Bearer-Token für den Cloud-Modus - Bun nur, wenn Sie das Hilfsprogramm aus dem Quellbaum ausführen
Im SQLite-Modus mit npm 12 müssen Sie das Installationsskript der SQLite-Abhängigkeit freigeben. Sonst kann die Installation erfolgreich sein, der Start aber wegen fehlender nativer Bindings scheitern. Erlauben Sie bei npx oder globalen Installationen nur better-sqlite3:
npx --allow-scripts=better-sqlite3 -y mindwtr-mcp --db "/path/to/mindwtr.db"
npm install -g --allow-scripts=better-sqlite3 mindwtr-mcpFügen Sie in MCP-Konfigurationen mit npx den Eintrag "--allow-scripts=better-sqlite3" vor "mindwtr-mcp" in args ein. Bei einer vorhandenen projektlokalen Installation führen Sie im Projekt zuerst npm install-scripts approve better-sqlite3, dann npm rebuild better-sqlite3 aus. Prüfen Sie die Abhängigkeit vor der Freigabe; erlauben Sie nicht pauschal alle Skripte.
Standardspeicherorte der Datenbank
- Linux:
~/.local/share/mindwtr/mindwtr.db - Linux (Snap):
~/snap/mindwtr/current/.local/share/mindwtr/mindwtr.db - macOS:
~/Library/Application Support/mindwtr/data/mindwtr.db - Windows:
%APPDATA%\mindwtr\data\mindwtr.db
Zusätzlicher macOS-Pfad für sandboxed Builds:
~/Library/Containers/tech.dongdongbh.mindwtr/Data/Library/Application Support/mindwtr/data/mindwtr.db
Die macOS- und Windows-Pfade oben gelten für v1.3.2 und neuer. Vor v1.3.2 lag die Datenbank direkt im Ordner mindwtr, zum Beispiel %APPDATA%\mindwtr\mindwtr.db. Unter Linux hat sich nichts geändert.
Sie können den lokalen Datenbankspeicherort überschreiben mit:
--db /path/to/mindwtr.db- Umgebungsvariable:
MINDWTR_DB_PATHoderMINDWTR_DB
Verwenden Sie für den selbst gehosteten Cloud-Modus:
--cloud-url https://mindwtr.example.comoderMINDWTR_MCP_CLOUD_URL--cloud-token <token>oderMINDWTR_MCP_CLOUD_TOKEN- optional
--cloud-allow-insecure-http=truefür vertrauenswürdige private HTTP-Bereitstellungen
Einrichtung und Konfiguration
Beim eigenständigen Hilfsprogramm führen MCP-Clients den Server als Unterprozess aus. Sie geben ihnen den Befehl und übergeben Argumente.
Empfohlener installationsfreier Befehl für MCP-Clients:
{
"command": "npx",
"args": [
"-y",
"mindwtr-mcp",
"--db",
"/path/to/mindwtr.db"
]
}Das Paket ist standardmäßig schreibgeschützt. Fügen Sie --write nur hinzu, wenn ein KI-Client ausdrücklich Mindwtr-Daten hinzufügen, aktualisieren, erledigen oder löschen können soll.
Local-API-Modus der Desktop-App
Erfordert mindwtr-mcp 1.1.11 oder neuer.
Aktivieren Sie die Local API der Desktop-App in den Einstellungen und kopieren Sie ihr Bearer-Token. Lassen Sie die App und die API laufen. Dieses Backend verwendet die REST-Endpunkte der App und öffnet niemals eine Datenbank oder greift auf SQLite zurück.
Lassen Sie bei einer reinen API-Installation das optionale native SQLite-Addon weg:
npm install -g --omit=optional mindwtr-mcpKonfigurieren Sie Ihren MCP-Client so, dass er das Token über seine Umgebung übergibt, statt es in Befehlszeilenargumenten anzugeben:
{
"command": "mindwtr-mcp",
"args": ["--api-url", "http://127.0.0.1:3456"],
"env": {
"MINDWTR_MCP_API_TOKEN": "<token from desktop settings>"
}
}Verwenden Sie den in den Einstellungen angezeigten Port. MINDWTR_MCP_API_URL kann --api-url ersetzen. URLs müssen die wörtliche Adresse 127.0.0.1 oder [::1] verwenden und dürfen keine Zugangsdaten, Pfade, Abfragen oder Fragmente enthalten; Weiterleitungen werden abgelehnt. Kombinieren Sie API-Optionen nicht mit Cloud-/--db-Optionen. Vorhandene Umgebungsvariablen für Datenbankpfade werden im API-Modus ignoriert.
Schreibzugriffe bleiben deaktiviert, solange sie nicht ausdrücklich mit --write aktiviert werden. Wenn die App geschlossen oder das Token ungültig ist, gibt das Hilfsprogramm einen Fehler zurück. Ein Schreibzugriff mit Zeitüberschreitung kann die App bereits erreicht haben: Prüfen Sie die Aufgabe vor einem erneuten Versuch, da das Hilfsprogramm Schreibzugriffe nicht automatisch wiederholt.
| MCP-Funktion | Unterstützung durch die Local API der Desktop-App |
|---|---|
| Aufgaben auflisten/abrufen | Unterstützt, einschließlich erweiterter Suchoperatoren, Datumsfilter, Sortierung und Paginierung |
| Aufgaben erstellen | Expliziter Titel und Felder; quickAdd ist nicht verfügbar |
| Aufgaben aktualisieren/erledigen/löschen/wiederherstellen | Über die entsprechenden API-Endpunkte unterstützt; Änderungen zu einem endgültigen Status können nicht als gewöhnliche Bearbeitungen übermittelt werden |
| Projekte auflisten/abrufen/erstellen/aktualisieren/löschen | Für die grundlegenden Projektfelder der API unterstützt: Titel, Farbe, Status, Bereich und sequenzielles Verhalten |
| Bereiche auflisten | Unterstützt |
| Abschnitte, verwaltete Personen, Schreibzugriffe auf Bereiche | Nicht verfügbar; diese Werkzeuge werden im API-Modus ausgeblendet |
GTD-Verfügbarkeit view | Nicht verfügbar, da die API den erforderlichen Abschnitts-Snapshot nicht bereitstellt |
| Anhangslinks ersetzen | Nicht verfügbar, da die API keine bedingten Anhangsaktualisierungen bereitstellt |
Andere nicht unterstützte Felder werden vor einem Schreibzugriff abgelehnt. Auch die Einschränkungen der Desktop-API bei Wiederholungen gelten; einige wiederkehrende Aufgaben müssen in der App erledigt werden. Dieses Backend verspricht keine vollständige Gleichwertigkeit mit den SQLite-/Cloud-Werkzeugen.
--api-url wählt die Datenquelle des Hilfsprogramms aus. --http legt dagegen fest, wie sich ein MCP-Client mit dem Hilfsprogramm verbindet; es kann mit jedem Backend verwendet werden und hat ein separates Authentifizierungstoken.
Self-Hosted-Cloud-Modus
Verwenden Sie den Cloud-Modus, wenn Sie Ihren eigenen Mindwtr-Cloud-Server betreiben und MCP-Werkzeuge nutzen möchten, ohne eine lokale SQLite-Datei bereitzustellen:
npx -y mindwtr-mcp \
--cloud-url "https://mindwtr.example.com" \
--cloud-token "$MINDWTR_TOKEN"Alternativ verwenden Sie Umgebungsvariablen in der Konfiguration eines MCP-Clients:
{
"command": "npx",
"args": ["-y", "mindwtr-mcp"],
"env": {
"MINDWTR_MCP_CLOUD_URL": "https://mindwtr.example.com",
"MINDWTR_MCP_CLOUD_TOKEN": "your-token"
}
}Der Cloud-Modus liest den aktuellen Schnappschuss von /v1/data aus Ihrem selbst gehosteten Cloud-Server und stellt Lesewerkzeuge für Aufgaben, Projekte, Abschnitte, Bereiche und Personen bereit. Mit --write laufen Schreibvorgänge für Aufgaben, Projekte, Abschnitte und Bereiche über die ressourcenspezifischen REST-Endpunkte des Cloud-Servers (POST /v1/tasks, PATCH /v1/tasks/:id usw.). Dadurch erhält jede Änderung dieselbe Validierung und Revisionsverfolgung wie Änderungen aus Ihren Apps. Ohne --write geben Schreibwerkzeuge read_only zurück. Personenänderungen und die Wiederherstellung gelöschter Aufgaben sind im Cloud-Modus noch nicht verfügbar. Verwenden Sie dafür das lokale Datenbankbackend.
Das Aktualisieren von Link-Anhängen über MCP im Cloud-Modus erfordert Mindwtr Cloud 1.2.8 oder neuer. Der Helfer verwendet bedingte Schreibzugriffe, um Datei-Anhänge zu erhalten, die ein anderer Client geändert hat, und versucht die Aktualisierung bei gleichzeitigen Änderungen bis zu dreimal. Liefert dein Server keinen ETag für den Datensatz, aktualisiere ihn zuerst; der Helfer lehnt die Änderung ab, ohne zu schreiben. Änderungen einzelner anderer Felder und das Erstellen von Aufgaben oder Projekten funktionieren wie bisher.
Dies ist nicht der blockierte gehostete Mehrmandanten-Connector. Sie betreiben den Cloud-Server und das MCP-Hilfsprogramm weiterhin selbst; Mindwtr betreibt keinen Dienst, der die Aufgabendaten aller Benutzer speichert.
Für eine globale Installation verwenden Sie stattdessen:
npm install -g mindwtr-mcp
mindwtr-mcp --db "/path/to/mindwtr.db"Wichtige Argumente
--db "/path/to/mindwtr.db": Pfad zu Ihrer SQLite-Datenbank für den lokalen Modus.--write: Aktiviert Schreibvorgänge (hinzufügen, aktualisieren, erledigen, löschen) im lokalen oder Cloud-Modus. Ohne dieses Flag ist der Server schreibgeschützt.--cloud-url "https://mindwtr.example.com": Verwendet statt einer lokalen Datenbank einen selbst gehosteten Mindwtr-Cloud-Endpunkt.--cloud-token "<token>": Bearer-Token für den selbst gehosteten Cloud-Endpunkt.--cloud-allow-insecure-http=true: Erlaubt vertrauenswürdige private HTTP-Cloud-URLs, wenn Sie bewusst ohne HTTPS arbeiten.
1. Claude Desktop
Fügen Sie der Konfigurationsdatei von Claude Desktop einen Servereintrag hinzu.
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mindwtr": {
"command": "npx",
"args": [
"-y",
"mindwtr-mcp",
"--db",
"~/.local/share/mindwtr/mindwtr.db",
"--write"
]
}
}
}Hinweis: Ersetzen Sie den DB-Pfad durch den tatsächlichen Pfad Ihrer lokalen Mindwtr-Datenbank.
2. Claude Code (CLI)
Sie können den Server über die CLI hinzufügen:
claude mcp add mindwtr -- \
npx -y mindwtr-mcp --db "/path/to/mindwtr.db" --write3. OpenAI Codex (CLI/IDE-Erweiterung)
Codex liest die MCP-Serverkonfiguration aus ~/.codex/config.toml. In einem vertrauenswürdigen Projekt können Sie auch eine projektbezogene .codex/config.toml verwenden. Codex CLI und IDE-Erweiterung verwenden dieselbe Konfiguration.
Befehlszeile:
codex mcp add mindwtr -- \
npx -y mindwtr-mcp \
--db "/path/to/mindwtr.db"Fügen Sie --write nur hinzu, wenn Codex lokale Mindwtr-Daten verändern können soll:
codex mcp add mindwtr -- \
npx -y mindwtr-mcp \
--db "/path/to/mindwtr.db" --writeFühren Sie in der Codex-TUI /mcp aus, um zu prüfen, ob der Server aktiv ist.
Manuelle Konfiguration:
[mcp_servers.mindwtr]
command = "npx"
args = [
"-y",
"mindwtr-mcp",
"--db",
"/path/to/mindwtr.db"
]Mit Schreibzugriff:
[mcp_servers.mindwtr]
command = "npx"
args = [
"-y",
"mindwtr-mcp",
"--db",
"/path/to/mindwtr.db",
"--write"
]4. Gemini CLI
Gemini CLI verwendet settings.json (Benutzer: ~/.gemini/settings.json oder Projekt: .gemini/settings.json).
Befehlszeile:
gemini mcp add mindwtr \
npx -y mindwtr-mcp \
--db "/path/to/mindwtr.db" --writeManuelle Konfiguration:
{
"mcpServers": {
"mindwtr": {
"command": "npx",
"args": [
"-y",
"mindwtr-mcp",
"--db",
"/path/to/mindwtr.db",
"--write"
]
}
}
}5. Gemini-App (benutzerdefinierte Apps)
Die Gemini-Web- und Mobil-Apps können sich per URL mit einem entfernten MCP-Server verbinden („benutzerdefinierte Apps" auf gemini.google.com). Das funktioniert mit mindwtr-mcp im HTTP-Modus: Hosten Sie den Server unter einer Adresse, die Googles Server erreichen können (eine öffentliche HTTPS-URL hinter einem Reverse-Proxy; Gemini verbindet sich von Googles Seite aus, localhost funktioniert daher nicht), und fügen Sie diese URL zusammen mit Ihrem Bearer-Token als benutzerdefinierte App hinzu.
6. Google Antigravity
Antigravity (Googles agentische IDE) liest lokale MCP-Server aus einer JSON-Konfigurationsdatei; einen CLI-Befehl zum Hinzufügen gibt es nicht. Öffnen Sie die Datei im Agent-Seitenpanel über MCP Servers -> Manage MCP Servers -> View raw config, oder bearbeiten Sie sie direkt:
- Aktuelle Versionen:
~/.gemini/config/mcp_config.json(pro Workspace:.agents/mcp_config.json) - Ältere Versionen:
~/.gemini/antigravity/mcp_config.json(Windows:%USERPROFILE%\.gemini\antigravity\mcp_config.json)
{
"mcpServers": {
"mindwtr": {
"command": "npx",
"args": [
"-y",
"mindwtr-mcp",
"--db",
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\mindwtr\\data\\mindwtr.db",
"--write"
]
}
}
}Ersetzen Sie den Pfad durch den lokalen Datenbankpfad Ihrer Plattform (Windows-Pfade brauchen in JSON doppelte Backslashes). Lassen Sie --write für reinen Lesezugriff weg. Starten Sie Antigravity neu und prüfen Sie, ob mindwtr in den MCP-Server-Einstellungen erscheint. Antigravitys lokale MCP-Konfiguration ist unabhängig von der settings.json der Gemini CLI und von den benutzerdefinierten Apps der Gemini-App.
Fernzugriff (HTTP)
Erfordert eine
mindwtr-mcp-Version neuer als 1.1.1 (oder die Ausführung aus dem Quellcode).
Standardmäßig spricht der Server stdio. Mit --http stellt er stattdessen einen Streamable-HTTP-MCP-Endpunkt bereit, sodass sich entfernte MCP-Clients per URL verbinden können. Der HTTP-Modus funktioniert mit allen drei Backends (lokale SQLite-Datenbank, Local API der Desktop-App oder selbst gehostete Cloud).
mindwtr-mcp --http --http-token "$(openssl rand -hex 32)" --db "/path/to/mindwtr.db"Flags (alle haben MINDWTR_MCP_HTTP*-Umgebungsvariablen als Äquivalent):
| Flag | Umgebungsvariable | Bedeutung |
|---|---|---|
--http | MINDWTR_MCP_HTTP | Aktiviert den HTTP-Modus. Wird auch durch jedes der folgenden Flags impliziert. |
--http-token <token> | MINDWTR_MCP_HTTP_TOKEN | Erforderlich, sobald der HTTP-Modus aktiv ist; mindestens 16 Zeichen. Erzeugen Sie eines mit openssl rand -hex 32. Ohne Token startet der Server nicht. |
--http-host <host> | MINDWTR_MCP_HTTP_HOST | Bind-Adresse, Standard 127.0.0.1. |
--http-port <port> | MINDWTR_MCP_HTTP_PORT | Bind-Port, Standard 8722. |
Der integrierte MCP-Server der Desktop-App nutzt ebenfalls Port 8722. Wenn er aktiv ist, geben Sie mit --http-port einen anderen Port an, zum Beispiel --http-port 8723.
Der MCP-Endpunkt ist POST /mcp und verlangt bei jeder Anfrage Authorization: Bearer <token>. GET /healthz liefert ohne Authentifizierung 200 ok für Reverse-Proxy-Healthchecks. Anfragen ohne gültiges Token erhalten 401; wiederholte Authentifizierungsfehler führen zu 429 mit einem Retry-After-Header. Anfragekörper über 1 MiB erhalten 413. Im HTTP-Modus läuft der Server, solange er lauscht (stdio wird nicht verbunden), und das --write-/Nur-Lese-Verhalten bleibt unverändert.
Eingebautes TLS oder Rate-Limiting für authentifizierte Anfragen gibt es nicht. Um den Server über localhost hinaus zugänglich zu machen, stellen Sie einen Reverse-Proxy (Caddy, nginx) für HTTPS davor und geben Sie die resultierende https://-URL samt Token an den entfernten MCP-Client.
Manuell ausführen
Normalerweise müssen Sie dies nicht manuell ausführen (das übernimmt der MCP-Client), für Tests kann es jedoch nützlich sein.
Aus npm
# Read-only
npx -y mindwtr-mcp --db "/path/to/mindwtr.db"
# With write access
npx -y mindwtr-mcp --db "/path/to/mindwtr.db" --writeAus dem Quellcode (Bun)
# Read-only
bun run mindwtr:mcp -- --db "/path/to/mindwtr.db"
# With write access
bun run mindwtr:mcp -- --db "/path/to/mindwtr.db" --writeBauen und ausführen (Node)
# Build
bun run --filter mindwtr-mcp build
# Run
node apps/mcp-server/dist/cli.js --db "/path/to/mindwtr.db"Migration: Werkzeugumbenennung (mindwtr.* → mindwtr_*)
Werkzeugnamen verwenden jetzt Unterstriche, etwa mindwtr_list_tasks. Ältere Namen mit Punkten werden nicht mehr dokumentiert.
Verfügbare Werkzeuge
Nach dem Verbinden kann der KI-Agent auf diese Werkzeuge zugreifen. Standardmäßig ist der Server schreibgeschützt; übergeben Sie --write, um Schreibwerkzeuge zu aktivieren. Für den Schreibzugriff wird ausschließlich --write unterstützt (keine alternativen Aliase).
| Werkzeug | Vorgang | Erfordert --write |
|---|---|---|
mindwtr_list_tasks | Aufgaben auflisten | Nein |
mindwtr_list_projects | Projekte auflisten | Nein |
mindwtr_get_project | Ein Projekt abrufen | Nein |
mindwtr_list_sections | Abschnitte auflisten | Nein |
mindwtr_get_section | Einen Abschnitt abrufen | Nein |
mindwtr_list_areas | Bereiche auflisten | Nein |
mindwtr_list_people | Personen auflisten | Nein |
mindwtr_get_person | Eine Person abrufen | Nein |
mindwtr_get_task | Eine Aufgabe nach ID abrufen | Nein |
mindwtr_add_task | Aufgabe erstellen | Ja |
mindwtr_update_task | Aufgabe aktualisieren | Ja |
mindwtr_complete_task | Als erledigt markieren | Ja |
mindwtr_delete_task | Aufgabe vorläufig löschen | Ja |
mindwtr_restore_task | Aufgabe wiederherstellen | Ja |
mindwtr_add_project | Projekt erstellen | Ja |
mindwtr_update_project | Projekt aktualisieren | Ja |
mindwtr_delete_project | Projekt vorläufig löschen | Ja |
mindwtr_add_section | Abschnitt erstellen | Ja |
mindwtr_update_section | Abschnitt aktualisieren | Ja |
mindwtr_delete_section | Abschnitt vorläufig löschen | Ja |
mindwtr_add_area | Bereich erstellen | Ja |
mindwtr_update_area | Bereich aktualisieren | Ja |
mindwtr_delete_area | Bereich vorläufig löschen | Ja |
mindwtr_add_person | Person erstellen | Ja |
mindwtr_update_person | Person aktualisieren | Ja |
mindwtr_rename_person | Person umbenennen | Ja |
mindwtr_delete_person | Person vorläufig löschen | Ja |
Lesewerkzeuge
mindwtr_list_tasks: Aufgaben mit Filtern auflisten (Status, Projekt, Datumsbereich, Suche,isFocusedTodayfür den heutigen Fokus,viewfür die GTD-Verfügbarkeit).mindwtr_list_projects: Alle Projekte auflisten.mindwtr_get_project: Details eines bestimmten Projekts anhand der ID abrufen.mindwtr_list_sections: Projektabschnitte auflisten, optional nach Projekt gefiltert.mindwtr_get_section: Details eines bestimmten Abschnitts anhand der ID abrufen.mindwtr_list_areas: Alle Bereiche auflisten.mindwtr_list_people: Verwaltete Personendatensätze auflisten.mindwtr_get_person: Details einer bestimmten Person anhand der ID abrufen.mindwtr_get_task: Details einer bestimmten Aufgabe anhand der ID abrufen.
Schreibwerkzeuge (erfordern --write)
Schreibwerkzeuge funktionieren sowohl mit der lokalen Datenbank als auch einem selbst gehosteten Cloud-Backend, mit zwei Ausnahmen im Cloud-Modus: Werkzeuge zum Schreiben von Personen und mindwtr_restore_task geben dort einen eindeutigen Fehler zurück, weil die Cloud-API noch keine Endpunkte dafür besitzt.
mindwtr-mcp erlaubt es, einen vorhandenen Link zu einer Netzwerkfreigabe beim Aktualisieren einer Aufgabe oder eines Projekts beizubehalten oder umzubenennen. Lassen Sie die URI exakt unverändert und verwenden Sie dieselbe Anhang-ID, oder lassen Sie die ID weg, um den Link anhand der URI zuzuordnen. Der Link muss auf demselben Element noch aktiv sein. MCP lehnt neue Links zu Netzwerkfreigaben, geänderte Netzwerkfreigabe-URIs und das Wiederherstellen gelöschter Links zu Netzwerkfreigaben weiterhin ab.
mindwtr_add_task: Erstellt eine neue Aufgabe. Unterstützt natürlichsprachlichesquickAdd(z. B. „Buy milk @errands /due:tomorrow“). Unterstützt außerdem Link-Anhänge überattachments.mindwtr_update_task: Aktualisiert eine vorhandene Aufgabe einschließlich Planungsfeldern wiedueDate,startTime,reviewAtundisFocusedToday(Felder können mitnullgeleert werden).attachmentssetzt die Link-Anhänge: Die übergebene Liste ist die vollständige Liste der Links, nicht aufgeführte Links werden entfernt, Dateianhänge bleiben unberührt, undnullentfernt alle Links.mindwtr_complete_task: Markiert eine Aufgabe als erledigt.mindwtr_delete_task: Löscht eine Aufgabe vorläufig.mindwtr_restore_task: Stellt eine vorläufig gelöschte Aufgabe wieder her.mindwtr_add_project: Erstellt ein neues Projekt, einschließlich optionalemstartDate,dueDateundreviewAt. Nimmt außerdem Link-Anhänge überattachmentsentgegen.mindwtr_update_project: Aktualisiert ein Projekt, einschließlich optionalemstartDate,dueDateundreviewAt. Link-Anhänge inattachmentsfolgen derselben Regel der vollständigen Liste wie beim Aktualisieren einer Aufgabe.mindwtr_delete_project: Löscht ein Projekt vorläufig.mindwtr_add_section: Erstellt einen Abschnitt innerhalb eines Projekts.mindwtr_update_section: Aktualisiert einen Projektabschnitt.mindwtr_delete_section: Löscht einen Projektabschnitt vorläufig. Aufgaben in diesem Abschnitt bleiben erhalten und werden von Core in „kein Abschnitt“ verschoben.mindwtr_add_area: Erstellt einen neuen Bereich.mindwtr_update_area: Aktualisiert einen Bereich.mindwtr_delete_area: Löscht einen Bereich vorläufig.mindwtr_add_person: Erstellt eine verwaltete Person für Zuständigkeiten und Aufgaben im Status Warten.mindwtr_update_person: Aktualisiert die Metadaten einer verwalteten Person.mindwtr_rename_person: Benennt eine verwaltete Person um und aktualisiert optional exakt übereinstimmende Aufgabenzuweisungen.mindwtr_delete_person: Löscht eine verwaltete Person vorläufig, ohne Aufgabenzuweisungen zu entfernen.
Schemahinweis:
- Schreibwerkzeuge für Aufgaben umfassen
dueDate,startTimeundreviewAt(bei Aktualisierung). - Schreibwerkzeuge für Projekte umfassen sowohl
dueDateals auchreviewAt. - Schreibwerkzeuge für Personen umfassen
name,note,referenceLinkund optionale Aktualisierungen von Zuweisungen beim Umbenennen. - Die genauen maßgeblichen Eingaben finden Sie in apps/mcp-server/README.md.
Berechtigungsmatrix
Verwenden Sie diese Matrix, um zu entscheiden, ob der Server schreibgeschützt oder mit --write ausgeführt werden soll.
| Werkzeug | Datenzugriff | Änderungsart | Schreibgeschützter Modus | Modus --write |
|---|---|---|---|---|
mindwtr_list_tasks | Aufgabenzeilen (gefiltert) | Keine | Erlaubt | Erlaubt |
mindwtr_list_projects | Projektzeilen | Keine | Erlaubt | Erlaubt |
mindwtr_get_project | Einzelnes Projekt nach ID | Keine | Erlaubt | Erlaubt |
mindwtr_list_sections | Abschnittszeilen | Keine | Erlaubt | Erlaubt |
mindwtr_get_section | Einzelner Abschnitt nach ID | Keine | Erlaubt | Erlaubt |
mindwtr_list_areas | Bereichszeilen | Keine | Erlaubt | Erlaubt |
mindwtr_list_people | Personenzeilen | Keine | Erlaubt | Erlaubt |
mindwtr_get_person | Einzelne Person nach ID | Keine | Erlaubt | Erlaubt |
mindwtr_get_task | Einzelne Aufgabe nach ID | Keine | Erlaubt | Erlaubt |
mindwtr_add_task | Aufgabentabelle | Einfügen | Verweigert | Erlaubt |
mindwtr_update_task | Aufgabentabelle | Aktualisieren | Verweigert | Erlaubt |
mindwtr_complete_task | Aufgabentabelle | Status aktualisieren | Verweigert | Erlaubt |
mindwtr_delete_task | Aufgabentabelle | Vorläufig löschen | Verweigert | Erlaubt |
mindwtr_restore_task | Aufgabentabelle | Vorläufige Löschung aufheben | Verweigert | Erlaubt |
mindwtr_add_project | Projekttabelle | Einfügen | Verweigert | Erlaubt |
mindwtr_update_project | Projekttabelle | Aktualisieren | Verweigert | Erlaubt |
mindwtr_delete_project | Projekttabelle | Vorläufig löschen | Verweigert | Erlaubt |
mindwtr_add_section | Abschnittstabelle | Einfügen | Verweigert | Erlaubt |
mindwtr_update_section | Abschnittstabelle | Aktualisieren | Verweigert | Erlaubt |
mindwtr_delete_section | Abschnittstabelle | Vorläufig löschen | Verweigert | Erlaubt |
mindwtr_add_area | Bereichstabelle | Einfügen | Verweigert | Erlaubt |
mindwtr_update_area | Bereichstabelle | Aktualisieren | Verweigert | Erlaubt |
mindwtr_delete_area | Bereichstabelle | Vorläufig löschen | Verweigert | Erlaubt |
mindwtr_add_person | Personentabelle | Einfügen | Verweigert | Erlaubt |
mindwtr_update_person | Personentabelle | Aktualisieren | Verweigert | Erlaubt |
mindwtr_rename_person | Personentabelle/Aufgaben | Umbenennen/Verweise aktualisieren | Verweigert | Erlaubt |
mindwtr_delete_person | Personentabelle | Vorläufig löschen | Verweigert | Erlaubt |
Praktische Hinweise:
- Verwenden Sie für Erkundung und Berichte standardmäßig den schreibgeschützten Modus.
- Aktivieren Sie
--writenur für Backends, bei denen Sie dem KI-Client Bearbeitungen anvertrauen: eine lokale Datenbank oder Ihren eigenen Cloud-Server. - Bevorzugen Sie bei Agentenabläufen eine ausdrückliche Bestätigung vor Lösch-/Erledigungsvorgängen.
Beispiele für fortgeschrittene Nutzung
1) Geführte wöchentliche Durchsicht
mindwtr_list_tasksmitstatus: "waiting"undstatus: "someday".- Festgefahrene Einträge nach Projekt zusammenfassen.
- Für ausgewählte Einträge
mindwtr_update_taskaufrufen, umreviewAtzu setzen.
2) Eingangssichtung
mindwtr_list_tasksmitstatus: "inbox"undsortBy: "createdAt".- Jede Aufgabe mit
mindwtr_update_taskklassifizieren (next,waiting,referenceusw.). - Fehlende Metadaten (Projekt, Kontexte, Tags) in einem zweiten Durchlauf hinzufügen.
3) Sicheres Muster für massenhaftes Abschließen
Für potenziell destruktive Automatisierungen:
- Lesephase ausführen: nur IDs der Kandidaten auflisten.
- Bestätigungszusammenfassung anzeigen (Anzahl und Titel).
- Schreibvorgänge (
complete_task/delete_task) erst nach ausdrücklicher Zustimmung des Benutzers ausführen. - IDs für ein Zurücksetzen über
restore_taskaufbewahren.
4) Schnellerfassung mit natürlicher Sprache
Verwenden Sie mindwtr_add_task und quickAdd:
{
"quickAdd": "Follow up with Alex +Hiring @work #ops /due:tomorrow 10am"
}Verwenden Sie dies für schnelle Erfassungsabläufe, bei denen Parserbefehle effizienter sind, als jedes Feld einzeln zu setzen.
Werkzeugreferenz
Alle Werkzeuge geben JSON im Feld content.text zurück. Parsen Sie das JSON, um die eigentlichen Nutzdaten abzurufen.
Betriebsgrenzen
Diese Grenzen sind hilfreich, wenn Sie Mindwtr in Agentenabläufe einbinden:
mindwtr_list_tasksverwendet standardmäßiglimit: 200und begrenztlimitauf500.- Aufgabentitel sind bei der MCP-Validierung zum Erstellen/Aktualisieren von Aufgaben auf
500Zeichen begrenzt. - Schnelleingaben sind beim Erstellen von MCP-Aufgaben auf
2000Zeichen begrenzt, entsprechend der Schnelleingabegrenze der Cloud-Aufgaben-API. - Die SQLite-Schicht verwendet ein
busy_timeoutvon 5 Sekunden, sodass eine gesperrte Datenbank fehlschlagen sollte, statt unbegrenzt zu warten.
Wenn Sie mehr als 500 Aufgaben benötigen, blättern Sie mit limit und offset, statt eine einzige unbegrenzte Antwort zu erwarten.
mindwtr_list_tasks
Eingabefelder
status:inbox | next | waiting | someday | reference | done | archived | allprojectId: stringincludeDeleted: booleanlimit: numberoffset: numbersearch: stringdueDateFrom: ISO date or datetime string (compared by calendar date)dueDateTo: ISO date or datetime string (compared by calendar date)isFocusedToday: booleanview:available | deferred | blocked— GTD-Verfügbarkeit.available= jetzt machbar (eine nächste Aktion oder eine Aufgabe, deren Überprüfungsdatum fällig ist, in einem aktiven Projekt, nach einem etwaigen Startdatum und nicht hinter einem früheren Schritt eines sequenziellen Projekts wartend).deferred= das Startdatum liegt noch in der Zukunft.blocked= ein früherer Schritt eines sequenziellen Projekts belegt den Platz.sortBy:updatedAt | createdAt | dueDate | title | prioritysortOrder:asc | desc
Beispiel
{
"status": "next",
"limit": 20,
"offset": 0,
"sortBy": "updatedAt",
"sortOrder": "desc"
}Antwort
{
"tasks": [
{
"id": "task-uuid",
"title": "Follow up with design",
"status": "next",
"updatedAt": "2026-01-25T03:45:57.246Z"
}
]
}mindwtr_list_projects
Eingabefelder
- none
Antwort
{
"projects": [
{
"id": "project-uuid",
"title": "Mindwtr",
"status": "active"
}
]
}mindwtr_get_project
Eingabefelder
id: string (project UUID)includeDeleted: boolean (optional)
Beispiel
{ "id": "project-uuid" }mindwtr_list_sections
Eingabefelder
projectId: string (optional)includeDeleted: boolean (optional)
Antwort
{
"sections": [
{
"id": "section-uuid",
"projectId": "project-uuid",
"title": "Planning"
}
]
}mindwtr_get_section
Eingabefelder
id: string (section UUID)includeDeleted: boolean (optional)
Beispiel
{ "id": "section-uuid" }mindwtr_list_areas
Eingabefelder
- none
Antwort
{
"areas": [
{
"id": "area-uuid",
"name": "Work"
}
]
}mindwtr_list_people
Eingabefelder
includeDeleted: boolean (optional)
Antwort
{
"people": [
{
"id": "person-uuid",
"name": "Alex"
}
]
}mindwtr_get_person
Eingabefelder
id: string (person UUID)includeDeleted: boolean (optional)
Beispiel
{ "id": "person-uuid" }mindwtr_get_task
Eingabefelder
id: string (task UUID)includeDeleted: boolean (optional)
Beispiel
{ "id": "task-uuid" }mindwtr_add_task (write)
Eingabefelder
title: string (required ifquickAddomitted)quickAdd: string (required iftitleomitted)status:inbox | next | waiting | someday | reference | done | archivedprojectId: stringsectionId: stringdueDate: ISO stringstartTime: ISO stringrecurrence: Wiederholungsobjekt oder RFC-5545-RRULE-Zeichenfolgecontexts: string[]tags: string[]description: stringpriority:low | medium | high | urgentenergyLevel:low | medium | highassignedTo: stringtimeEstimate:5min | 10min | 15min | 30min | 1hr | 2hr | 3hr | 4hr | 4hr+- Weitere beschreibbare Felder:
areaId,reviewAt,taskMode,relativeStartOffset,showFutureRecurrence,pushCount,checklist,textDirection,location,isFocusedToday,timeSpentMinutes,suppressMindwtrReminders,repeatReminderMinutes,attachments
Beispiel
{
"quickAdd": "Send invoice +Acme /due:tomorrow 9am #finance"
}mindwtr_update_task (write)
Eingabefelder
id: string (task UUID)title,status,projectId,sectionId,areaId,dueDate,startTime,contexts,tags,description,priority,energyLevel,assignedTo,timeEstimate,reviewAt,taskMode,relativeStartOffset,showFutureRecurrence,pushCount,checklist,textDirection,location,isFocusedToday,timeSpentMinutes,suppressMindwtrReminders,repeatReminderMinutes,order,boardOrder,focusOrder,attachmentsrecurrence: Wiederholungsobjekt, RFC-5545-RRULE-Zeichenfolge odernullzum Leeren
Hinweise
- Verwenden Sie
null, um nullable Felder zu leeren. Dies gilt für Aufgabenfelder wieprojectId,dueDate,startTime,contextsundtags; Projektfelder wieareaId,startDate,dueDate,reviewAtundsupportNotes;descriptionvon Abschnitten;colorundiconvon Bereichen sowienoteundreferenceLinkvon Personen.
Beispiel
{
"id": "task-uuid",
"status": "waiting",
"reviewAt": "2026-01-27T09:00:00.000Z"
}mindwtr_complete_task (write)
Eingabefelder
id: string (task UUID)
mindwtr_delete_task (write)
Eingabefelder
id: string (task UUID)
mindwtr_restore_task (write)
Eingabefelder
id: string (task UUID)
mindwtr_add_project (write)
Eingabefelder
title: stringcolor: string (optional)status:active | someday | waiting | archived(optional)areaId: string ornullisSequential: boolean (optional)isFocused: boolean (optional)startDate: ISO string ornulldueDate: ISO string ornullreviewAt: ISO string ornullsupportNotes: string ornull
mindwtr_update_project (write)
Eingabefelder
id: string (project UUID)title,color,status,areaId,isSequential,isFocused,startDate,dueDate,reviewAt,supportNotes,attachments
mindwtr_delete_project (write)
Eingabefelder
id: string (project UUID)
mindwtr_add_section (write)
Eingabefelder
projectId: stringtitle: stringdescription: string ornull(optional)order: number (optional)isCollapsed: boolean (optional)
mindwtr_update_section (write)
Eingabefelder
id: string (section UUID)title,description,order,isCollapsed
mindwtr_delete_section (write)
Eingabefelder
id: string (section UUID)
mindwtr_add_area (write)
Eingabefelder
name: stringcolor: string (optional)icon: string (optional)
mindwtr_update_area (write)
Eingabefelder
id: string (area UUID)name,color,icon
mindwtr_delete_area (write)
Eingabefelder
id: string (area UUID)
mindwtr_add_person (write)
Eingabefelder
name: stringnote: string ornull(optional)referenceLink: string ornull(optional)
mindwtr_update_person (write)
Eingabefelder
id: string (person UUID)name,note,referenceLink
mindwtr_rename_person (write)
Eingabefelder
id: string (person UUID)name: stringupdateTasks: boolean (optional)
mindwtr_delete_person (write)
Eingabefelder
id: string (person UUID)
Hinweise zum Ausgabeformat
- Werkzeugausgaben sind JSON-Strings und keine strukturierten MCP-Werte. Ihr Client sollte
content[0].textparsen. - Aufgaben-/Projekt-IDs sind UUIDs aus der lokalen SQLite-Datenbank.
- Daten sind ISO-8601-Strings (UTC).
Sicherheit und Hinweise
- Parallelität (lokaler SQLite-Modus): Der Server verwendet den SQLite-WAL-Modus und wiederholt vorübergehende Sperrkonflikte, indem er den Schreibvorgang mit aktuellen Daten erneut ausführt. Der Client muss nur erneut versuchen, wenn diese Versuche ausgeschöpft sind.
- Gemeinsame Logik: Schreibvorgänge verwenden die gemeinsame Bibliothek
@mindwtr/core, damit Geschäftsregeln durchgesetzt werden. - Keep-Alive: Im stdio-Modus bleibt der Server aktiv, solange stdin geöffnet ist. Im HTTP-Modus bleibt er aktiv, solange der Listener läuft.
cancelledAt
Task und Project unterstützen cancelledAt, einen optionalen ISO-Zeitstempel mit Zeitzone. Er archiviert die Verpflichtung als abgebrochen. Die Aufgabe erhält kein completedAt und erzeugt keine weitere Wiederholung. Beim Projekt bleiben erledigte Schritte erhalten; die übrigen Aktionen werden abgebrochen. Aktualisieren Sie vor der Synchronisierung alle schreibenden Clients. Siehe GTD-Workflow.
cancelledAt: null allein entfernt nur die Abbruchkennzeichnung. Zum Reaktivieren setzen Sie ausdrücklich einen nicht archivierten status.
Fehlerbehebung
- „Command not found“: Verwenden Sie
npx -y mindwtr-mcpin MCP-Clientkonfigurationen oder installieren Sie das Paket global mitnpm install -g mindwtr-mcp. - Client-Verbindungsprobleme: Stellen Sie sicher, dass Sie in Ihrer MCP-Clientkonfiguration NICHT
bun runals Befehl verwenden, da dadurch zusätzlicher Text ausgegeben werden kann. Bevorzugen Sienpx -y mindwtr-mcp; führen Sie bei ausgechecktem Quellcodebundirekt mit der Quelldatei odernodemit der gebauten Datei aus.