OmniFocus MCP Server
OmniFocus MCP Server
Ein Model-Context-Protocol-Server (MCP), der KI-Assistenten die Interaktion mit OmniFocus unter macOS über JXA (JavaScript for Automation) ermöglicht.
Funktionen
Dieser MCP-Server bietet Zugriff auf OmniFocus-Funktionen:
Aufgabenverwaltung
Posteingangsaufgaben auflisten – Aufgaben im Posteingang anzeigen und filtern (einschließlich Multi-Tag-Filterung)
Aufgaben erstellen – Neue Aufgaben mit vollständiger Eigenschaftsunterstützung hinzufügen (Fälligkeitsdaten, geplante Daten, Tags, Notizen, Unteraufgaben, Wiederholung)
Aufgaben aktualisieren – Name, Notiz, Daten, Markierung, Schätzung, Wiederholung ändern oder eine Aufgabe in ein anderes Projekt verschieben
Aufgaben abschließen/verwerfen – Aufgaben als erledigt oder verworfen markieren, einzeln oder in Stapeln
Aufgaben löschen – Eine Aufgabe dauerhaft entfernen
Aufgabennnotizen aktualisieren – Notiz einer Aufgabe ersetzen, leeren oder ergänzen
Fällige Aufgaben abrufen – Aufgaben finden, die innerhalb eines Zeitrahmens fällig sind
Geplante Aufgaben abrufen – Aufgaben finden, die innerhalb eines Zeitrahmens geplant sind
Markierte Aufgaben abrufen – Alle markierten Elemente auflisten
Tags zu Aufgaben hinzufügen/entfernen – Aufgaben-Tags verwalten, einzeln oder in Stapeln
Projektverwaltung
Projekte auflisten – Projekte mit Statusfilterung anzeigen
Projektaufgaben abrufen – Alle Aufgaben eines Projekts auflisten
Projekte erstellen – Neue Projekte mit Ordnerplatzierung, Status, Daten, sequenziellem Modus, Überprüfungsintervall
Projekte aktualisieren – Name, Notiz, Status, Markierung, Daten, sequenziellen Modus, Überprüfungsintervall ändern
Projekte löschen – Ein Projekt und seine Aufgaben entfernen
Projektnotizen aktualisieren – Notiz eines Projekts ersetzen, leeren oder ergänzen
Zu überprüfende Projekte abrufen – Projekte finden, die überprüft werden müssen, optional mit ihren unvollständigen Aufgaben
Projekt als überprüft markieren – Überprüfungsstatus und nächstes Überprüfungsdatum eines Projekts aktualisieren
Stapelweise als überprüft markieren – Mehrere Projekte auf einmal effizient überprüfen
Organisation
Ordner auflisten – Ordnerhierarchie anzeigen
Ordner erstellen/umbenennen/löschen – Ordnerbaum verwalten (einschließlich verschachtelter Ordner)
Tags auflisten – Alle Tags anzeigen
Perspektiven auflisten – Integrierte und benutzerdefinierte Perspektiven anzeigen
Perspektivenaufgaben abrufen – Aufgaben auflisten, die in einer bestimmten Perspektive angezeigt werden
Suche
Universelle Suche – Suche über Aufgaben, Projekte, Ordner und Tags
Sicherheitseigenschaften
Kein stiller Gewinner bei doppelten Namen. OmniFocus erlaubt es, dass zwei Projekte (oder Aufgaben) denselben Namen tragen. Namenssuchen erfassen jedes Vorkommen und schlagen bei mehr als einem mit den passenden IDs fehl, sodass eine Umbenennung, Verschiebung oder Löschung niemals das falsche Element treffen kann, während Erfolg gemeldet wird.
Mutationen werden verifiziert. Operationen, bei denen JXA stillschweigend fehlschlagen kann (insbesondere das Verschieben einer Aufgabe zwischen Projekten), lesen das Ergebnis im selben Skript zurück, sodass eine fehlgeschlagene Verschiebung als Fehler statt als Erfolg gemeldet wird.
Related MCP server: OmniFocus MCP Server
Voraussetzungen
macOS (OmniFocus ist nur für macOS/iOS verfügbar, und dieser Server verwendet JXA)
OmniFocus 3+ installiert
Node.js 18+
Automatisierungsberechtigungen für Ihre Terminal-/Client-App aktiviert
Installation
Klonen oder laden Sie dieses Repository herunter:
cd omnifocus-mcp-serverAbhängigkeiten installieren:
npm installTypeScript kompilieren:
npm run buildKonfigurieren Sie Ihren MCP-Client für die Verwendung des Servers (siehe Konfiguration unten)
Konfiguration
Claude Desktop
Fügen Sie Ihrer Claude-Desktop-Konfigurationsdatei (~/Library/Application Support/Claude/claude_desktop_config.json) Folgendes hinzu:
{
"mcpServers": {
"omnifocus": {
"command": "/opt/homebrew/bin/node",
"args": ["/path/to/omnifocus-mcp-server/dist/index.js"]
}
}
}Verwenden Sie einen absoluten Pfad zur node-Binärdatei. Ein bloßes "node" wird gegen die PATH-Variable der GUI-Sitzung aufgelöst, die weder Homebrew noch die Shims eines Versionsmanagers enthält, sodass der Server mit einem Fehler im Stil von „Server nicht erreichbar" nicht startet, obwohl er von Ihrem Terminal aus einwandfrei läuft. Finden Sie Ihren Pfad mit which node.
Andere MCP-Clients
Der Server verwendet standardmäßig den stdio-Transport. Konfigurieren Sie Ihren Client daher so, dass er Folgendes startet:
node /path/to/omnifocus-mcp-server/dist/index.jsFernzugriff (HTTP-Transport)
Für Remote-Clients – vor allem für benutzerdefinierte Connectors von claude.ai, über die die Claude-iOS-App MCP-Server erreicht – kann der Server als Streamable-HTTP-Endpunkt ausgeführt werden:
MCP_TRANSPORT=http \
MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
node /path/to/omnifocus-mcp-server/dist/index.jsUmgebungsvariablen:
Variable | Standard | Zweck |
|
| Auf |
|
| Port, auf dem gelauscht wird |
|
| Bind-Adresse (Loopback beibehalten; über einen Tunnel verfügbar machen) |
| — | Erforderliches gemeinsames Geheimnis; der Server weigert sich, ohne dieses zu starten |
| — | Öffentliche HTTPS-Origin, unter der der Server erreichbar ist (z. B. |
|
| Beendet ein hängendes JXA-Skript (gilt für beide Transporte) |
Der MCP-Endpunkt ist /mcp. Die Authentifizierung akzeptiert entweder einen Authorization: Bearer <token>-Header oder das Token als Pfadsegment (/mcp/<token>) für Clients, die keine benutzerdefinierten Header senden können. GET /health ist nicht authentifiziert.
Von claude.ai / der iOS-App aus erreichen. Benutzerdefinierte Connectors verbinden sich aus der Cloud von Anthropic (nicht von Ihrem Gerät), daher muss der Endpunkt über HTTPS öffentlich erreichbar sein. Ein Cloudflare Tunnel oder ein Tailscale Funnel funktionieren beide dafür – in beiden Fällen stellt ein lokaler Prozess eine ausgehende Verbindung her, sodass keine Ports geöffnet werden. (Einfaches Tailscale ohne Funnel funktioniert nicht: Das erreicht nur Ihr eigenes Tailnet, und die Cloud von Anthropic ist dort nicht enthalten.) Optional können Sie den Zugriff in einer Cloudflare-WAF-Regel auf den ausgehenden IP-Bereich von Anthropic (160.79.104.0/21) beschränken.
Die Connectors-Oberfläche von claude.ai und Claude Desktop (im Gegensatz zu einer rohen MCP-Konfiguration / einem direkten API-Client) führt immer einen vollständigen OAuth-Handshake durch, bevor sie einen Remote-Server aufruft – sie akzeptiert das statische Token nicht allein, selbst wenn es in der URL eingebettet ist. Setzen Sie MCP_PUBLIC_URL auf die öffentliche Origin Ihres Tunnels, um eine selbst ausgestellte OAuth-Ebene zu aktivieren, die dies erfüllt und den Zugriff dennoch mit demselben statischen Geheimnis absichert (siehe oauth.ts / CLAUDE.md für Details). Wenn dies gesetzt ist, fügen Sie den Connector unter Einstellungen → Connectors mit der Pfad-Token-URL hinzu (https://your-tunnel-host/mcp/<token>) – der Schritt „Verbinden" schließt den OAuth-Handshake automatisch ab. Wenn Ihr Tunnel / auch an einen anderen lokalen Dienst weiterleitet, stellen Sie sicher, dass /authorize, /token, /register und /.well-known/* ebenfalls auf diesen Server gemappt sind, sonst kommen die OAuth-Anfragen nie hier an.
Der Mac muss wach bleiben und OmniFocus muss laufen (caffeinate -s oder Amphetamine).
Sitzungssemantik – nur ein einzelner Client. Der HTTP-Transport bedient jeweils eine Sitzung: Ein neues initialize ersetzt die vorherige Sitzung. Jeder Tool-Aufruf ist zustandslos, und ein spezifikationskonformer Client initialisiert neu, wenn er für eine nicht mehr existierende Sitzung eine 404 erhält. Ein einzelner Client, der sequenziell aufruft, funktioniert also einwandfrei. Diese 404 deckt auch den Fall ab, dass der Server überhaupt keine Sitzung hält – was nach einem Neustart des Servers bei jedem Client der Fall ist – sie initialisieren neu, statt den Endpunkt als tot zu behandeln.
Zwei Clients gleichzeitig tun das nicht. Reproduziert durch das gleichzeitige Auslösen von zwei initialize→tools/list-Sequenzen am öffentlichen Endpunkt: Einer erhält konsistent eine 404. Das zugrunde liegende MCP-SDK bindet einen einzelnen Transport an die gemeinsame Serverinstanz, sodass die verlierende Sitzung verdrängt wird und ihre laufende Anfrage entweder eine 404 erhält oder hängt. Die Behebung erfordert eine McpServer-Instanz pro Sitzung statt des aktuellen Musters der Registrierung auf einem Singleton; dies ist derzeit nicht geplant. Details finden Sie in CLAUDE.md.
Fehlerbehebung bei einem Client, der „keine Verbindung" meldet. Clients fassen jeden Remote-Fehler in einer vagen Meldung zusammen. Lesen Sie daher das Protokoll dieses Servers (StandardErrorPath Ihres Launch-Agents), nicht die Formulierung des Clients – der Statuscode sagt, welche von drei unabhängigen Ursachen vorliegt:
Was das Protokoll zeigt | Bedeutung | Lösung |
| Das Token in der URL des Clients ist falsch oder abgeschnitten |
|
| Gleiche Ursache, aus Sicht der OAuth-Seite. Ein | Wie oben |
| Normale Wiederherstellung nach einem Neustart oder einer Sitzungsübernahme | Nichts; der Client initialisiert sich selbst |
| Funktioniert. Der Clientname identifiziert, welcher Client es ist | — |
Wenn im Protokoll überhaupt nichts erscheint, hat die Anfrage diesen Server nie erreicht: Prüfen Sie die Pfadzuordnungen des Tunnels, nicht diesen Code.
Berechtigungen
Beim ersten Gebrauch fordert macOS Sie auf, den Automatisierungszugriff zu erlauben:
Gehen Sie zu Systemeinstellungen → Sicherheit & Datenschutz → Datenschutz → Automatisierung
Aktivieren Sie die Berechtigung für Ihr Terminal oder Claude Desktop, OmniFocus zu steuern
Tool-Referenz
Alle 31 Tools sind unten aufgeführt, gruppiert nach Bereich.
omnifocus_list_inbox
Listet Aufgaben im Posteingang auf, optional nach Tags gefiltert.
{
"includeCompleted": false,
"limit": 50,
"tags": ["Work", "Urgent"],
"tagMatchMode": "all"
}tagMatchMode ist "all" (Aufgabe hat alle aufgeführten Tags, Standard), "any" (mindestens eines) oder "none" (keines davon). Es gilt nur, wenn tags angegeben ist. Dieselben beiden Parameter funktionieren bei omnifocus_get_due_tasks, omnifocus_get_flagged_tasks und omnifocus_get_planned_tasks.
omnifocus_list_projects
Listet Projekte mit Filterung auf.
{
"status": "active",
"folderName": "Work",
"limit": 50
}omnifocus_get_project_tasks
Ruft alle Aufgaben ab, die zu einem Projekt gehören.
{
"projectId": "abc123",
"includeCompleted": false,
"limit": 100
}omnifocus_create_project
Erstellt ein Projekt, optional innerhalb eines Ordners.
{
"name": "Website redesign",
"note": "Q1 initiative",
"folderName": "Work",
"dueDate": "2024-03-31T17:00:00",
"deferDate": "2024-01-15T09:00:00",
"flagged": false,
"sequential": false,
"status": "active",
"reviewIntervalDays": 7
}status ist "active" (Standard), "on hold", "done" oder "dropped". sequential: false (Standard) ergibt ein paralleles Projekt.
omnifocus_update_project
Aktualisiert Projekteigenschaften. Identifizierung über projectId oder projectName (ID gewinnt).
{
"projectId": "abc123",
"name": "Website redesign v2",
"status": "on hold",
"flagged": true,
"dueDate": null,
"sequential": true,
"reviewIntervalDays": 14
}Übergib null für note, dueDate oder deferDate, um sie zu leeren. Ein Projekt kann nicht in einen anderen Ordner verschoben werden (JXA-Einschränkung).
omnifocus_delete_project
Löscht ein Projekt und seine Aufgaben. Identifizierung über projectId oder projectName (ID gewinnt).
{
"projectId": "abc123"
}omnifocus_list_folders
Listet alle Ordner auf.
{
"status": "active",
"limit": 50
}omnifocus_create_folder
Erstellt einen Ordner, entweder auf oberster Ebene oder verschachtelt.
{
"name": "Clients",
"parentFolderName": "Work"
}omnifocus_update_folder
Benennt einen Ordner um. Identifizierung über folderId oder folderName (ID gewinnt). Ein Ordner kann nicht in einen anderen Ordner verschoben werden (JXA-Einschränkung).
{
"folderName": "Clients",
"name": "Key clients"
}omnifocus_delete_folder
Löscht einen Ordner und alles darin. Identifizierung über folderId oder folderName (ID gewinnt).
{
"folderId": "abc123"
}omnifocus_list_tags
Listet alle Tags auf.
{
"status": "active",
"limit": 50
}omnifocus_list_perspectives
Listet Perspektiven auf (integrierte und benutzerdefinierte).
{
"limit": 50
}omnifocus_get_perspective_tasks
Ruft Aufgaben ab, die in einer bestimmten Perspektive angezeigt werden.
{
"perspectiveName": "Next",
"limit": 50
}omnifocus_create_task
Erstellt eine neue Aufgabe.
{
"name": "Review quarterly report",
"note": "Check all sections",
"projectName": "Work",
"dueDate": "2024-12-31T17:00:00",
"deferDate": "2024-12-01T09:00:00",
"plannedDate": "2024-12-15T09:00:00",
"flagged": true,
"estimatedMinutes": 60,
"tagNames": ["Review", "Important"],
"parentTaskId": "xyz789",
"recurrence": {
"frequency": "weekly",
"interval": 1,
"daysOfWeek": ["Monday", "Thursday"],
"repeatFrom": "due-date"
}
}Geplantes Datum vs. Fälligkeitsdatum:
dueDate: Wann die Aufgabe abgeschlossen sein muss (Frist)plannedDate: Wann du vorhast, an der Aufgabe zu arbeiten (Planung)Diese Unterscheidung ist entscheidend, um Fristen von geplanter Arbeitszeit zu trennen
Wiederholung: frequency ist "daily", "weekly", "monthly" oder "yearly". Verwende daysOfWeek für wöchentlich, dayOfMonth (1-31) für monatlich, monthOfYear (1-12) für jährlich. repeatFrom ist "due-date" (Standard) oder "completion-date".
Teilaufgaben: Übergib parentTaskId, um die Aufgabe als Unteraufgabe einer vorhandenen Aufgabe zu erstellen.
omnifocus_update_task
Aktualisiert eine vorhandene Aufgabe. Identifizierung über taskId oder taskName (ID gewinnt).
{
"taskId": "abc123",
"name": "Review quarterly report (final)",
"note": null,
"dueDate": "2024-12-20T17:00:00",
"flagged": true,
"estimatedMinutes": 45,
"projectName": "Work"
}Übergib
nullfürnote,dueDate,deferDateoderplannedDate, um sie zu leeren;estimatedMinutes: 0löscht die Schätzung.projectId/projectNameverschiebt die Aufgabe in dieses Projekt (Teilaufgaben ziehen mit). Die Verschiebung wird anschließend überprüft, sodass ein Fehlschlag als Fehler gemeldet wird und nicht als falscher Erfolg.recurrenceakzeptiert dasselbe Objekt wiecreate_task;recurrence: nulloderclearRecurrence: truedeaktiviert die Wiederholung.
omnifocus_delete_task
Löscht eine Aufgabe. Identifizierung über taskId oder taskName (ID gewinnt).
{
"taskId": "abc123"
}omnifocus_update_task_note
Ersetzt, leert oder ergänzt die Notiz einer Aufgabe. Identifizierung über taskId oder taskName (ID gewinnt).
{
"taskId": "abc123",
"note": "Added after the call.",
"append": true
}Ein leerer note-String leert die Notiz.
omnifocus_complete_task
Markiert eine Aufgabe als abgeschlossen oder verworfen. Du kannst die Aufgabe entweder über ID oder Namen identifizieren.
{
"taskId": "abc123",
"action": "complete"
}Oder über den Aufgabennamen:
{
"taskName": "Write documentation",
"action": "complete"
}Die Aktion kann "complete" (Standard) oder "drop" sein. Wenn sowohl taskId als auch taskName angegeben sind, hat taskId Priorität.
Beim Verwerfen einer wiederkehrenden Aufgabe wird zuerst die Wiederholungsregel gelöscht, sodass die Serie tatsächlich endet, anstatt zur nächsten Instanz weiterzurollen.
omnifocus_batch_complete_task
Schließt bis zu 100 Aufgaben per ID in einem Aufruf ab oder verwirft sie.
{
"taskIds": ["id1", "id2", "id3"],
"action": "complete"
}omnifocus_add_tag_to_task
Fügt einer Aufgabe ein Tag hinzu. Du kannst die Aufgabe entweder über ID oder Namen identifizieren.
{
"taskId": "abc123",
"tagName": "Urgent"
}Oder über den Aufgabennamen:
{
"taskName": "Write report",
"tagName": "Urgent"
}Wenn sowohl taskId als auch taskName angegeben sind, hat taskId Priorität.
omnifocus_remove_tag_from_task
Entfernt ein Tag von einer Aufgabe. Du kannst die Aufgabe entweder über ID oder Namen identifizieren.
{
"taskId": "abc123",
"tagName": "Urgent"
}Oder über den Aufgabennamen:
{
"taskName": "Old task",
"tagName": "Done"
}Wenn sowohl taskId als auch taskName angegeben sind, hat taskId Priorität.
omnifocus_batch_add_tag
Fügt bis zu 100 Aufgaben per ID ein vorhandenes Tag hinzu.
{
"taskIds": ["id1", "id2", "id3"],
"tagName": "Urgent"
}omnifocus_batch_remove_tag
Entfernt ein Tag von bis zu 100 Aufgaben per ID.
{
"taskIds": ["id1", "id2", "id3"],
"tagName": "Urgent"
}omnifocus_update_project_note
Ersetzt, leert oder ergänzt die Notiz eines Projekts. Identifizierung über projectId oder projectName (ID gewinnt).
{
"projectName": "Website redesign",
"note": "Kickoff moved to March.",
"append": false
}omnifocus_search
Durchsucht OmniFocus.
{
"query": "report",
"searchType": "all",
"limit": 20
}omnifocus_get_due_tasks
Ruft Aufgaben ab, die innerhalb eines Zeitraums fällig sind.
{
"daysAhead": 7,
"includeOverdue": true,
"limit": 50
}omnifocus_get_flagged_tasks
Ruft markierte Aufgaben ab.
{
"includeCompleted": false,
"limit": 50
}omnifocus_get_planned_tasks
Ruft Aufgaben ab, die innerhalb eines Zeitraums geplant sind.
{
"daysAhead": 7,
"includeOverdue": true,
"limit": 50
}omnifocus_get_projects_for_review
Ruft Projekte ab, die basierend auf ihrem nächsten Überprüfungsdatum überprüft werden müssen. Perfekt für GTD-Praktiker, die den Überprüfungsworkflow befolgen.
{
"daysAhead": 0,
"status": "active",
"limit": 50,
"includeTasks": true,
"taskLimit": 50
}Parameter:
daysAhead: Wie viele Tage im Voraus geschaut werden soll (0 = nur überfällige Überprüfungen)status: Filter nach Projektstatus ("active", "done", "dropped", "onHold", "all")limit: Maximale Anzahl zurückzugebender Projekte (1-500)includeTasks: Unvollständige Aufgaben jedes Projekts in das Ergebnis aufnehmen (Standard false) — das macht aus einem Überprüfungsdurchgang einen einzigen Aufruf statt eines Folgeaufrufs pro ProjekttaskLimit: Maximale Anzahl Aufgaben pro Projekt, wennincludeTaskstrue ist (1-200, Standard 50)
Jedes Projekt gibt außerdem reviewInterval und lastReviewDate zurück.
omnifocus_mark_project_reviewed
Markiert ein Projekt als überprüft und aktualisiert sein nächstes Überprüfungsdatum. Du kannst das Projekt entweder über ID oder Namen identifizieren.
{
"projectId": "abc123"
}Oder über den Projektnamen:
{
"projectName": "Weekly Review"
}Mit benutzerdefiniertem Überprüfungsintervall:
{
"projectName": "Work Project",
"reviewIntervalDays": 14
}Parameter:
projectIdoderprojectName: Identifiziert das Projekt (ID hat Priorität)reviewIntervalDays(optional): Benutzerdefiniertes Überprüfungsintervall in Tagen. Wenn nicht angegeben, wird das vorhandene Überprüfungsintervall des Projekts verwendet.
omnifocus_batch_mark_reviewed
Markiert mehrere Projekte in einem effizienten Vorgang als überprüft.
{
"projectIds": ["id1", "id2", "id3"]
}Mit benutzerdefiniertem Überprüfungsintervall für alle:
{
"projectIds": ["id1", "id2", "id3"],
"reviewIntervalDays": 7
}Parameter:
projectIds: Array von Projekt-IDs, die als überprüft markiert werden sollen (1-100 Projekte)reviewIntervalDays(optional): Benutzerdefiniertes Überprüfungsintervall, das auf alle Projekte angewendet werden soll
Gibt eine Zusammenfassung zurück mit:
Anzahl erfolgreicher Überprüfungen
Anzahl der Fehler
Vollständige Projektdaten für erfolgreiche Überprüfungen
Fehlerdetails für etwaige Fehler
Datumsformate
Alle Daten verwenden das ISO-8601-Format: YYYY-MM-DDTHH:mm:ss
Beispiele:
2024-12-31T17:00:00- 31. Dezember 2024 um 17:00 Uhr2024-06-15T09:00:00- 15. Juni 2024 um 09:00 Uhr
Fehlerbehandlung
Der Server liefert klare Fehlermeldungen für häufige Probleme:
OmniFocus läuft nicht: Starte zuerst OmniFocus
Zugriff verweigert: Aktiviere die Automatisierungsberechtigungen in den Systemeinstellungen
Element nicht gefunden: Die angegebene ID existiert nicht
Ungültige Parameter: Überprüfe Format und Werte der Parameter
Entwicklung
Build
npm run buildWatch-Modus
npm run devTests
npm test # All unit tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report (thresholds enforced: 80% lines, 75% branches)Die Integrationstests in src/__tests__/integration.test.ts werden standardmäßig übersprungen: Sie erfordern ein laufendes OmniFocus und verändern deine echte Datenbank.
Manuell testen
Nach dem Build kannst du testen mit:
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | node dist/index.jsÄnderungen an einem laufenden Server anwenden (wichtig)
MCP-Clients rufen die Tool-Liste einmal beim Verbinden ab und speichern sie für die Sitzung im Cache. npm run build allein aktualisiert einen bereits verbundenen Client nicht — Node führt kein Hot-Reload durch, und der Client ruft das Schema nicht erneut ab. Nach Änderungen an Tools/Schemas musst du sowohl den Server neu starten als auch jeden Client neu verbinden lassen:
Neu erstellen:
npm run buildStarte den Serverprozess neu, damit er das neue
dist/lädt:LaunchAgent (HTTP-Transport):
launchctl kickstart -k gui/$(id -u)/com.sanderrobijns.omnifocus-mcpÜberprüfe, dass er das neue Schema ausliefert:
lsof -nP -iTCP:3000 -sTCP:LISTENsollte eine frisch gestartete PID zeigen.
Verbinde jeden Client neu, damit er
tools/listerneut abruft:Claude Code / Cowork: starte eine neue Sitzung (eine laufende Sitzung behält ihr gecachtes Schema für ihre gesamte Lebensdauer).
Claude Desktop: beende die App und öffne sie erneut (oder schalte den Server aus/ein).
claude.ai / Claude iOS benutzerdefinierter Connector: synchronisiere den Connector in Einstellungen → Connectors erneut (er cached die Tool-Liste auf Connector-Ebene).
Bis sich der Client neu verbindet, zeigt er weiterhin das alte Schema, auch wenn der Server bereits das neue ausliefert.
Lizenz
MIT
Danksagungen
Erstellt mit:
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 Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that integrates with OmniFocus to enable Claude (or other MCP-compatible AI assistants) to interact with your tasks and projects.71,073236MIT
- AlicenseAqualityFmaintenanceAn MCP server that provides full read/write access to OmniFocus, enabling AI assistants to manage tasks, projects, folders, tags, and perspectives via 51 tools, resources, and prompts.513618MIT
- FlicenseNot gradedqualityBmaintenanceA production-grade MCP server that exposes OmniFocus as structured task infrastructure for AI agents, enabling read, write, and filter operations on tasks and projects via natural language.6
- AlicenseNot gradedqualityCmaintenanceMCP server that gives AI assistants full control over OmniFocus on macOS, including tasks, projects, tags, folders, perspectives, forecast, notifications, and review workflows.42MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
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/estrenuo/omnifocus-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server