OmniFocus-MCP
OmniFocus MCP Server
Сервер Model Context Protocol (MCP), который подключает OmniFocus к Claude и другим MCP-совместимым ИИ-ассистентам.

Обзор
Этот сервер связывает ИИ-ассистентов с вашей базой данных OmniFocus. В ходе естественного разговора ассистент может запрашивать, создавать, редактировать и удалять задачи и проекты — включая массовые операции. Вот что можно с ним делать:
Преобразовать PDF-файл с учебным планом в полностью специфицированный проект с задачами, тегами, датами откладывания и сроками
Превратить стенограмму встречи в список действий
Аудитировать и реорганизовывать теги, проекты и папки в разговоре
Создавать визуализации ваших задач, проектов и тегов
Обрабатывать десятки элементов за одну пакетную операцию
Related MCP server: MCP OmniFocus
Быстрый старт
Предварительные требования
macOS с установленным OmniFocus
Node.js 20 или новее (для
npx)
При первом обращении сервера к OmniFocus macOS попросит разрешить доступ к автоматизации. Предоставьте его один раз — и всё готово.
Claude Desktop
Добавьте сервер в ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"omnifocus": {
"command": "npx",
"args": ["-y", "omnifocus-mcp"]
}
}
}Затем перезапустите Claude Desktop.
Claude Code
claude mcp add omnifocus -- npx -y omnifocus-mcpДругие MCP-клиенты работают аналогично: запустите npx -y omnifocus-mcp через stdio.
Примеры диалогов
Точечные запросы:
«Покажи все мои отмеченные флагом задачи, срок которых наступает на этой неделе»
«Какие у меня следующие действия в папке „Работа“?»
«Подсчитай, сколько задач в каждом проекте»
Реорганизация:
«Я хочу, чтобы у каждой задачи был тег уровня энергии. Покажи мне список всех задач, у которых его нет, и свои предложения, какой тег добавить. Я внесу любые изменения, которые сочту нужными. Затем внеси изменения в OmniFocus.»
Захват из любого места:
«Спасибо за подробное объяснение, почему верховенство закона важно. Добавь повторяющуюся задачу в мой проект по активизму, которая напоминает мне звонить моему представителю еженедельно. Включи краткое содержание этого разговора в поле заметок.»
Работа с перспективами:
«Какие перспективы у меня доступны?»
«Покажи, что находится в моей перспективе „Входящие“»
Обработка стенограмм или PDF:
«Я вставляю стенограмму сегодняшней встречи. Проанализируй её и создай задачи в OmniFocus для всех пунктов действий, назначенных мне. Помести их в мой проект „Разработка продукта“.»
Инструменты
Сервер предоставляет 12 инструментов. Необязательные параметры отмечены.
query_omnifocus
Запрос задач, проектов или папок с точечными фильтрами — гораздо быстрее и легче, чем выгрузка всей базы данных. Полную справку см. в QUERY_TOOL_REFERENCE.md, а примеры — в QUERY_TOOL_EXAMPLES.md.
Параметр | Описание |
| Что запрашивать: |
| Комбинируются по логике И; фильтры-массивы ( |
| Возвращать только перечисленные поля — ответы остаются компактными |
| Формируют список результатов |
| Включать завершённые/отброшенные элементы (по умолчанию: false) |
| Возвращать только количество совпадений |
Доступные фильтры:
Контейнеры:
projectName(частичное совпадение без учёта регистра;"inbox"нацеливается на входящие),projectId,folderId(включая подпапки),folderName(частичное совпадение без учёта регистра, включая подпапки)Имена:
taskName(частичное совпадение без учёта регистра)Теги:
tags(точное совпадение, с учётом регистра)Статус:
status— задачи:Next,Available,Blocked,DueSoon,Overdue,Completed,Dropped; проекты:Active,OnHold,Done,DroppedДаты, ориентированные в будущее:
dueWithin,deferredUntil,plannedWithin(диапазоны),dueOn,deferOn,plannedOn(точный день). Принимают число дней,"today","tomorrow","this week","next week"или дату в формате ISOДаты, ориентированные в прошлое:
addedWithin,addedOn,completedWithin,completedOn,droppedWithin,droppedOn(фильтры завершённых/отброшенных требуютincludeCompleted: true)Флаги и прочее:
flagged,inbox,hasNote,isRepeating,reviewDue(только для проектов)
dump_database
Получить полное состояние вашей базы данных. Используйте для всестороннего анализа; для точечных запросов предпочитайте query_omnifocus.
hideCompleted(необязательно): скрыть завершённые/отброшенные задачи (по умолчанию: true)hideRecurringDuplicates(необязательно): скрыть дубликаты повторяющихся задач (по умолчанию: true)
add_omnifocus_task
Создать новую задачу.
nameprojectName(необязательно): проект, в который добавить задачу (по умолчанию — входящие)parentTaskId/parentTaskName(необязательно): вложить под существующую задачуnote,dueDate,deferDate,plannedDate,flagged,estimatedMinutes,tags(все необязательные)repeat(необязательно): сделать повторяющейся — см. Повторяющиеся элементы
add_project
Создать новый проект.
namefolderName(необязательно): папка, в которую поместить проектsequential(необязательно): должны ли задачи выполняться по порядкуnote,dueDate,deferDate,flagged,estimatedMinutes,tags,repeat(все необязательные)
edit_item
Редактировать существующую задачу или проект. Также способ перемещения элементов — задайте newProjectName, чтобы переместить задачу в проект, или ""/"inbox", чтобы отправить её во входящие.
idилиname: какой элемент редактировать (id имеет приоритет)itemType:taskилиprojectОбщие:
newName,newNote,newDueDate,newDeferDate,newFlagged,newEstimatedMinutes(даты в формате ISO; пустая строка очищает)Задачи:
newStatus(incomplete,completed,dropped,skipped—skippedтолько для повторяющихся задач),addTags,removeTags,replaceTags,newProjectName,newPlannedDateПроекты:
newProjectStatus(active,completed,dropped,onHold),newFolderName,newSequential,markReviewed(устанавливает следующую дату проверки на основе интервала проверки проекта)Повторение:
newRepeatзадаёт новое правило (та же форма, что иrepeatпри создании);newRepeat: nullочищает его
remove_item
Удалить задачу или проект.
idилиname: какой элемент удалитьitemType:taskилиproject
batch_add_items
Создать несколько задач и проектов одной операцией. Каждый элемент принимает те же поля, что и add_omnifocus_task / add_project, плюс type (task или project) и необязательные помощники иерархии:
tempId: временный идентификатор, на который могут ссылаться другие элементы того же пакетаparentTempId: вложить этот элемент подtempIdдругого элемента пакета
{
"items": [
{ "type": "project", "name": "My Project", "tempId": "proj1" },
{ "type": "task", "name": "First task", "parentTempId": "proj1" },
{ "type": "task", "name": "Parent task", "parentTempId": "proj1", "tempId": "t1" },
{ "type": "task", "name": "Subtask", "parentTempId": "t1" }
]
}batch_remove_items
Удалить несколько задач или проектов одной операцией. Каждый элемент принимает id или name, плюс itemType.
list_perspectives
Список доступных перспектив, как встроенных, так и пользовательских (пользовательские перспективы — функция OmniFocus Pro).
includeBuiltIn,includeCustom(необязательно, по умолчанию: true)
get_perspective_view
Получить элементы, видимые в указанной перспективе.
perspectiveName: например,Inbox,Flaggedили имя пользовательской перспективыlimit(необязательно, по умолчанию: 100),includeMetadata(необязательно),fields(необязательно)
list_tags
Список всех тегов с их иерархией, статусом активности и количеством задач.
includeDropped(необязательно, по умолчанию: false)
create_tag
Создать тег, при необходимости вложенный под существующий родительский.
nameparentTagName/parentTagID(необязательно; ID имеет приоритет)
Повторяющиеся элементы
add_omnifocus_task, add_project и каждый элемент в batch_add_items принимают объект repeat; edit_item принимает newRepeat. Вы описываете расписание, а сервер компилирует правило повторения ICS, так что вам никогда не придётся писать RRULE вручную.
Поле | Описание |
|
|
|
|
| Повторять каждые N единиц (по умолчанию 1) |
| Конкретные дни, например |
{ "name": "Weekly review", "repeat": { "method": "start-after-completion", "unit": "week" } }
{ "name": "Strength work", "repeat": { "method": "fixed", "unit": "week", "weekdays": ["TU","TH"] } }Выбирайте method осознанно — это поле чаще всего задают неправильно вручную. При fixed повторения появляются по расписанию независимо от того, было ли выполнено предыдущее, так что пропущенная неделя оставляет накопленный долг. При start-after-completion следующее повторение планируется от момента фактического выполнения, так что привычка просто возобновляется.
Прочитайте правило обратно с помощью query_omnifocus, используя поля repetitionRule (строка ICS) и repetitionMethod, или отфильтруйте по isRepeating.
В настоящее время не поддерживаются: позиционные месячные правила («третий вторник»), конкретные дни месяца и условия окончания (COUNT/UNTIL). Задавайте их непосредственно в OmniFocus.
Ресурсы
Ресурсы позволяют MCP-клиентам прикреплять данные OmniFocus к разговору в качестве контекста, без вызовов инструментов. В Claude Code введите @, чтобы просмотреть их; Claude Desktop и другие клиенты, поддерживающие ресурсы, могут прикреплять их напрямую. Все ресурсы возвращают JSON.
URI | Описание |
| Текущие элементы входящих |
| Повестка дня — срок сегодня, запланировано на сегодня и просрочено |
| Все отмеченные флагом элементы |
| Статистика базы данных (количество задач, просроченные, отмеченные флагом и т. д.) |
| Задачи в конкретном проекте |
| Элементы, видимые в указанной перспективе |
Два шаблонных ресурса поддерживают перечисление всех доступных значений и автодополнение параметра {name}.
Инструкции сервера и журналирование
Инструкции: во время рукопожатия MCP сервер отправляет клиенту руководство по использованию — советы по выбору инструментов (предпочитайте query_omnifocus вместо dump_database), подсказки по фильтрам и каталог ресурсов. Настройка не требуется.
Журналирование: сервер отправляет структурированные журналы через протокол журналирования MCP. Клиенты могут регулировать подробность с помощью logging/setLevel (debug, info, warning, error, ...). Время выполнения скриптов и ошибки регистрируются автоматически.
Как это работает
Сервер общается с OmniFocus через osascript, используя JXA (JavaScript for Automation) и встроенную автоматизацию OmniFocus (OmniJS), где это уместно. Он построен на официальном MCP TypeScript SDK и общается с клиентами через stdio.
Общий фоновый процесс
Запуск omnifocus-mcp запускает небольшой shim, который подключается к общему фоновому процессу, запуская его, если он ещё не работает. Каждый клиент на машине получает собственную независимую MCP-сессию, но все они работают внутри этого единственного процесса.
Это важно, когда несколько агентов одновременно используют OmniFocus. OmniFocus — это однопоточное приложение, управляемое через AppleEvents, и сервер ограничивает количество одновременных вызовов osascript. Когда каждый клиент запускал собственный сервер, этот лимит был на процесс — десять клиентов означали десять независимых бюджетов, направленных на одно приложение, что приводило к тайм-аутам AppleEvent. Общий процесс делает лимит глобальным.
Фоновый процесс прослушивает Unix-сокет в каталоге с правами 0700 (по умолчанию ~/.omnifocus-mcp/daemon-<version>.sock), поэтому доступ контролируется файловой системой — ни сетевого порта, ни токена. Он завершается сам, когда в течение idle-окна не остаётся подключённых клиентов, и ведёт журнал в daemon.log рядом с сокетом.
Имя сокета содержит версию пакета, так что обновление никогда не оставит вас на связи с фоновым процессом предыдущей версии. Сразу после обновления вы можете ненадолго увидеть два фоновых процесса: старый продолжает обслуживать уже подключённых клиентов и завершается, когда последний из них отключается. Клиенты, всё ещё подключённые к старому процессу, узнают об этом встроенным способом — пока работает более новый процесс, каждый результат инструмента содержит однострочное уведомление об обновлении, так что никому не нужно помнить о переподключении.
Конфигурация клиентов не меняется. Если фоновый процесс не может быть запущен — необычная песочница, домашний каталог только для чтения — shim переключается на запуск автономного сервера в процессе, как в более ранних версиях.
Переменные окружения
Переменная | По умолчанию | Назначение |
| не задана | Установите |
|
| Переопределяет путь к сокету, например, для запуска изолированного экземпляра. |
|
| Завершение после такого периода без трафика от клиентов. |
|
| Максимальное количество одновременных вызовов |
Дорожная карта
Поддержка MCP
promptУправление уведомлениями для проектов и задач
См. GitHub issues для запросов функций и известных проблем
Вклад
Вклад приветствуется! Пожалуйста, не стесняйтесь отправлять pull request. CI запускает проверку типов, модульные тесты и сборку для каждого PR.
npm install
npm test # unit tests
npm run build # compile to dist/
npm run test:integration # requires OmniFocus; creates and removes TEST:-prefixed itemsЛицензия
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
- AlicenseAqualityDmaintenanceA Model Context Protocol server that integrates OmniFocus with Claude Desktop, providing AI-powered access to tasks and projects for enhanced task management and weekly reviews.41,8547MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables automation and management of OmniFocus tasks, projects, and tags using natural language and programmable interfaces from VS Code, command line, or any MCP-compatible client.12MIT
- 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
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to interact with OmniFocus on macOS via JXA, supporting task, project, folder, tag, perspective, and search operations.3136MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for generating rough-draft project plans from natural-language prompts.
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/themotionmachine/OmniFocus-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server