littlebearapps/outlook-assistant

littlebearapps/outlook-assistant

от littlebearapps
MCP-сервер для Outlook, подключающий AI-ассистентов к вашей электронной почте, календарю и контактам. Поддерживает личные Outlook.com и корпоративные Microsoft 365 — поиск, отправку, экспорт писем,...

Outlook Assistant

Outlook Assistant

MCP server for Outlook email, calendar, and contacts — let your AI assistant manage your inbox directly from the conversation.

npm version npm downloads CI CodeQL License: MIT Glama score

Outlook Assistant connects AI assistants to your Microsoft Outlook account through the Model Context Protocol. Ask your AI assistant to search your inbox, send emails, schedule meetings, manage contacts, and configure mailbox settings — without leaving the conversation. Works with Claude, GitHub Copilot, Cursor, Windsurf, and any MCP-compatible client.

Works with personal Outlook.com and work/school Microsoft 365 accounts.


Outlook Assistant Demo — searching emails, reading, and drafting a reply
Search inbox → read & summarise → draft a reply — all from the conversation

What you can do
  • 📨 Search and read emails — find messages by sender, subject, date, or keywords; read full threads with conversation grouping; batch flag, move, export, or categorise multiple emails at once
  • 🛡️ Send emails with safety controls — dry-run preview, pre-send mail tips (out-of-office, mailbox full, delivery restrictions), session rate limiting, and recipient allowlist to prevent mistakes
  • ✏️ Draft emails for review — create, update, and send drafts; reply and forward as drafts; preview before saving with dry-run mode
  • 📅 Manage your calendar — view upcoming events, look back at past ones or find them by date range and subject, schedule meetings with attendees, update, decline or cancel events
  • 📦 Export emails — save individual messages to Markdown, EML, JSON, or CSV; export full conversation threads to MBOX or HTML; bulk-export search results in one call
  • 🔍 Investigate email headers — full raw header access (DKIM, SPF, DMARC, delivery chain, X-Mailer, X-Originating-IP) for phishing investigation and compliance review
  • 🗂️ Organise your inbox — create nested folders (addressable by path), set up inbox rules, colour-code with categories, manage Focused Inbox — all work together for complete inbox automation
  • 🔄 Track inbox changes — delta sync detects new, modified, and deleted emails since your last check, with tokens for incremental polling
  • 👥 Manage contacts — search your contact book and organisational directory, create and update contact records
  • ⚙️ Configure settings — set out-of-office auto-replies, working hours, and time zone
  • 📬 Access shared mailboxes — read and organise team inboxes and service accounts, including custom subfolders and nested folder paths; enumerate, read, and search the folder tree (best-effort — listings flag any branches skipped due to depth limits or per-folder errors), move/flag/categorise messages, and manage folders (work/school Microsoft 365 accounts; opt-in via OUTLOOK_SHARED_MAILBOX). Sending, drafts, replies, and forwards from a shared mailbox are not supported — those operations always act on the signed-in user's own mailbox
  • 🏢 Find meeting rooms — search by building, floor, capacity, AV equipment, and wheelchair accessibility (Microsoft 365)

Часто задаваемые вопросы

Инструменты были проиндексированы:
access-shared-mailboxтолько чтениеидемпотентныйвнешний мир

Перечисляет письма или папки в общем почтовом ящике, к которому есть доступ у вошедшего пользователя (только чтение). Возвращает сообщения из sharedMailbox (псевдоним email) и folder (по умолчанию inbox) с полями id/subject/from/receivedDateTime/preview, в том же виде, что и режим списка в search-emails. folder принимает стандартное имя (inbox, sent, archive…), пользовательское или локализованное отображаемое имя (например, Archiv), вложенный путь (например, Inbox/Vendors/Acme), либо можно передать сырой folderId. listFolders: true перечисляет дерево папок общего ящика (имена, пути, ID, количество), чтобы найти пользовательские подпапки перед их чтением. Требует, чтобы ящик был делегирован вошедшему пользователю в Exchange (настраивает администратор). outputVerbosity задаёт число полей, а count (по умолчанию 25, максимум 50) - размер страницы. Для поиска и фильтров по общему ящику используйте search-emails с указанным sharedMailbox. Пользовательские и локализованные имена, вложенные пути и listFolders требуют включённой на сервере настройки OUTLOOK_SHARED_MAILBOX (только для рабочих и учебных аккаунтов); без неё folder должен быть стандартным именем или ID папки.

Общий почтовый ящик

Параметры
  • countnumber

    Количество писем для получения (по умолчанию: 25, максимум: 50)

  • emailstring

    Псевдоним для sharedMailbox (более интуитивное имя для того же значения).

  • folderstring

    Папка для чтения (по умолчанию: inbox). Принимает общеизвестное имя, пользовательское/локализованное отображаемое имя или вложенный путь вроде Inbox/Subfolder.

  • folderIdstring

    Точный ID папки Graph для чтения (например, из listFolders). Пропускает разрешение имени; имеет приоритет над folder.

  • listFoldersboolean

    Перечисляет полное дерево папок общего почтового ящика (имена, пути, идентификаторы, количество элементов) вместо чтения сообщений.

  • outputVerbosityenum

    Уровень детализации вывода (по умолчанию: стандартный)

  • sharedMailboxstring

    Email-адрес общего почтового ящика (обязательно)

apply-categoryидемпотентный

Помечает или снимает пометку с писем с помощью мастер-категорий (тех, что созданы через manage-category). action=set (по умолчанию) заменяет набор категорий письма на переданный массив categories. action=add добавляет категории к тем, что уже стоят на письме. action=remove удаляет только указанные категории, остальные оставляет. Принимает либо messageId (одно письмо), либо messageIds (пакетно: по одному запросу на письмо). categories сопоставляются по отображаемому имени - имена уже должны быть в мастер-списке целевого почтового ящика. Для своего ящика сначала создайте их через manage-category; для общего ящика имена уже должны там существовать (manage-category управляет только мастер-списком аккаунта, под которым выполнен вход). Передайте sharedMailbox (или псевдоним email), чтобы размечать письма в общем/делегированном ящике (по умолчанию: аккаунт, под которым выполнен вход; требует Mail.ReadWrite.Shared + делегированный доступ). Возвращает подтверждение по каждому письму.

Применяет категории

Параметры
  • actionenum

    set (заменить все), add (добавить), remove (удалить конкретные). По умолчанию: set

  • categoriesstring[]обязательный

    Отображаемые названия категорий для применения/удаления (обязательно)

  • emailstring

    Псевдоним для sharedMailbox.

  • messageIdstring
  • messageIdsstring[]
  • sharedMailboxstring

    Адрес электронной почты общего/делегированного почтового ящика, сообщения которого нужно распределить по категориям (по умолчанию: учётная запись, под которой выполнен вход). Требует делегированного доступа + Mail.ReadWrite.Shared. Только для рабочих/учебных учётных записей; нужна серверная настройка включения OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с подсказками по настройке).

attachmentsвнешний мир

Просматривает или получает вложения из писем. action=list (по умолчанию) возвращает метаданные всех вложений в сообщении messageId (id, name, contentType, size, isInline) - только чтение. action=view возвращает встроенное содержимое вложений text/JSON/XML по attachmentId; для бинарных типов требуется скачивание. action=download сохраняет вложение под новым уникальным именем в outputDir (по умолчанию системная временная папка, создаётся автоматически; должна находиться внутри временной папки, ~/Downloads, ~/Documents или OUTLOOK_EXPORT_DIR) и возвращает путь к сохранённому файлу. messageId обязателен для всех действий; attachmentId обязателен для view/download. Если messageId пришёл из общего или делегированного почтового ящика, передайте тот же sharedMailbox (или псевдоним email) - идентификаторы вложений привязаны к сообщению и иначе не сработают через /me. Используйте outputVerbosity, чтобы управлять количеством полей в списке.

Вложения

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: список)

  • attachmentIdstring

    Идентификатор вложения (action=view/download, обязательно)

  • emailstring

    Псевдоним для sharedMailbox.

  • messageIdstringобязательный

    ID сообщения электронной почты (обязательно)

  • outputDirstring

    Абсолютный каталог (или ~/…), куда сохранять файл (action=download, по умолчанию: системный временный каталог). Создаётся автоматически, если его нет. Должен находиться внутри системного временного каталога, ~/Downloads, ~/Documents или OUTLOOK_EXPORT_DIR, без папок, имена которых начинаются с точки.

  • savePathstring

    Устаревший псевдоним для outputDir. Будет удалён в одном из будущих релизов.

  • sharedMailboxstring

    Адрес электронной почты общего/делегированного почтового ящика, которому принадлежит messageId. Обязателен, когда сообщение пришло из общего почтового ящика. Требует доступа делегата + Mail.Read.Shared. Только для рабочих или учебных аккаунтов; нужна включенная на сервере настройка OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с подсказками по настройке).

auth

Управляет аутентификацией с Microsoft Graph API. action=status (по умолчанию) возвращает текущее состояние аутентификации, обновляя истёкший токен доступа, пока токен обновления ещё действителен (~90 дней); сначала необходимо вызвать его для проверки перед другими инструментами. action=authenticate запускает вход: method: "device-code" (по умолчанию, работает без графического интерфейса) возвращает код + URL, который должен посетить пользователь; method: "browser" использует локальный сервер аутентификации на :3333 (сначала необходимо запустить npm run auth-server). force: true повторно аутентифицирует поверх существующей действительной сессии. Если вход сообщает, что OUTLOOK_CLIENT_ID не настроен, необходимо запросить у пользователя его Azure Application (client) ID и передать его как clientId. action=device-code-complete завершает вход по device-code, как только браузер покажет, что вход выполнен успешно. action=about возвращает версию сервера, настроенную аудиторию, список областей и другие диагностические данные. Токены сохраняются в ~/.outlook-assistant-tokens.json и переживают перезапуски сервера.

Аутентификация

Параметры
  • actionenum

    Действие для выполнения (по умолчанию: status)

  • clientIdstring

    Необязательный, только для action=authenticate. Идентификатор Azure Application (client) ID пользователя (GUID со страницы Overview регистрации приложения). Сохраняется в ~/.outlook-assistant-config.json и с этого момента используется; это не секрет. Переменная окружения OUTLOOK_CLIENT_ID имеет приоритет, если задана.

  • forceboolean

    Принудительно выполняет повторную аутентификацию, даже если пользователь уже аутентифицирован (только action=authenticate).

  • methodenum

    Метод аутентификации для action=authenticate. device-code (по умолчанию): сервер аутентификации не требуется, работает удаленно. browser: традиционный редирект OAuth через порт 3333.

create-eventвнешний мир

Создаёт новое событие в календаре по умолчанию вошедшего пользователя. Возвращает созданное событие с его id, webLink и (если есть участники) автоматически сгенерированный URL онлайн-встречи: участники получают приглашения при сохранении, поэтому сначала передайте dryRun: true, чтобы посмотреть, кто будет приглашён (и сколько из них внешних), ничего не создавая. Когда задан OUTLOOK_ALLOWED_RECIPIENTS, каждый участник должен быть разрешён, иначе ничего не создаётся. Время использует настроенный часовой пояс (по умолчанию Australia/Melbourne; переопределяется с помощью OUTLOOK_DEFAULT_TIMEZONE); опустите суффикс Z, чтобы отправить местное время. Используйте manage-event action=update, чтобы изменить событие после создания, или manage-event action=cancel/delete, чтобы удалить его. Реальные создания учитываются в лимите сессии (OUTLOOK_MAX_CREATE_EVENT_PER_SESSION, иначе OUTLOOK_MAX_EMAILS_PER_SESSION); 0 отклоняет каждое создание.

Создаёт событие календаря.

Параметры
  • attendeesstring | object[]

    Attendees: строки с email-адресами (обязательные участники) или объекты {email, type}, где type - 'required', 'optional' или 'resource' (комната или оборудование)

  • bodystring

    Необязательное содержимое для события.

  • dryRunboolean

    Только предпросмотр: ничего не создаётся и приглашения не отправляются. Показывает, кого пригласят и сколько из них внешние (по умолчанию false).

  • endstringобязательный

    Время окончания события в формате ISO 8601

  • startstringобязательный

    Время начала события в формате ISO 8601

  • subjectstringобязательный

    Тема мероприятия

draftвнешний мир

Жизненный цикл черновика для сценариев проверки перед отправкой (деструктивные действия: охватывает send и delete). action=create сохраняет новый черновик и возвращает его id (dryRun: true показывает предпросмотр без сохранения; checkRecipients: true сначала запускает mail-tips). action=update правит черновик по id (меняются только переданные поля). action=send отправляет черновик и учитывается в лимите сессии send-email (0 отклоняет каждую отправку). action=delete перемещает черновик в Recoverable Items (восстановим в течение ограниченного времени). update/send/delete отклоняют любой id, который не относится к неотправленному черновику. action=reply/reply-all создаёт черновик ответа из сообщения id (comment добавляет текст в начало; не вместе с body). action=forward создаёт черновик пересылки (нужны id и to). Список разрешённых получателей (OUTLOOK_ALLOWED_RECIPIENTS) применяется к create/update/forward, к текущим to/cc/bcc черновика при отправке и к reply/reply-all, черновик которых удаляется, если получатель не разрешён. Возвращает черновик при create/update/reply/forward; статус при send/delete.

Операции с черновиками

Параметры
  • actionenumобязательный

    Выполняемое действие (обязательно).

  • bccstring

    Адреса email для скрытой копии, разделенные запятыми

  • bodystring

    Тело письма (простой текст или HTML)

  • ccstring

    Адреса электронной почты для копии (CC), разделённые запятыми.

  • checkRecipientsboolean

    Проверяет получателей на наличие автоответов и ограничений доставки перед сохранением (action=create, default: false)

  • commentstring

    Текст комментария для ответа/пересылки (добавляется перед исходным сообщением). Нельзя комбинировать с телом.

  • dryRunboolean

    Только предпросмотр (action=create): показывает черновик, не сохраняя его. Другие действия отклоняют dryRun и ничего не меняют. По умолчанию false.

  • idstring

    ID черновика или сообщения. Обязателен для update/send/delete/reply/reply-all/forward. update/send/delete требуют ID черновика; reply/reply-all/forward принимают любой ID сообщения.

  • importanceenum

    Важность электронной почты (по умолчанию: обычная)

  • subjectstring

    Тема письма.

  • tostring

    Адреса электронной почты получателей через запятую (необязательно для создания/обновления, обязательно для пересылки)

exportвнешний мир

Экспортирует письма в файлы. target=message (по умолчанию) экспортирует одно письмо по id (mime/eml/markdown/json/csv) в savePath: каталог (или путь, оканчивающийся на /, создаётся, если его нет) получает новое уникальное имя файла; путь к файлу создаётся заново, а существующий файл заменяется только при overwrite: true. target=messages пакетно экспортирует emailIds или совпадения по searchQuery/query в outputDir, не более 100 писем за вызов. target=conversation экспортирует цепочку (до 1000 писем) по conversationId в outputDir (eml/mbox/markdown/json/html/csv; order: "reverse" для порядка от новых к старым). target=mime возвращает необработанный MIME RFC-822 для id (headersOnly, base64, maxSize, по умолчанию 1MB). Записывает файлы только в системный временный каталог (по умолчанию), ~/Downloads, ~/Documents или OUTLOOK_EXPORT_DIR, никогда в имена, начинающиеся с точки. Передавайте sharedMailbox (псевдоним email), когда идентификаторы приходят из общего почтового ящика. includeAttachments по умолчанию true для одного письма, false для пакетного экспорта.

Экспортирует письма

Параметры
  • base64boolean

    Возвращает данные в кодировке base64 (target=mime)

  • conversationIdstring

    Conversation ID (target=conversation, обязательный)

  • emailstring

    Псевдоним для sharedMailbox.

  • emailIdsstring[]

    ID писем для экспорта (target=messages). Не более 100 за вызов: всё, что выходит за первые 100, отбрасывается, и результат сообщает, сколько именно.

  • formatenum

    Формат экспорта. Допустимые значения зависят от target: target=message принимает mime/eml/markdown/json/csv (mbox и html - только для conversation). target=conversation принимает eml/mbox/markdown/json/html/csv. target=messages (batch) принимает mime/eml/markdown/json (один файл на сообщение) или csv (один файл). mime - псевдоним eml (те же байты RFC822, расширение .eml на диске).

  • headersOnlyboolean

    Только заголовки MIME, без тела (target=mime)

  • idstring

    Идентификатор электронного письма (target=message/mime, обязательный)

  • includeAttachmentsboolean

    Включать вложения (по умолчанию: true для одиночного, false для пакетного)

  • maxSizenumber

    Максимальный размер содержимого в байтах (target=mime, по умолчанию: 1 МБ)

  • orderenum

    Порядок сообщений (target=conversation, по умолчанию: хронологический)

  • outputDirstring

    Абсолютный выходной каталог или каталог, начинающийся с ~/ (target=messages - обязательный; target=message/conversation - по умолчанию: системный временный каталог). Должен находиться внутри системного временного каталога, ~/Downloads, ~/Documents или OUTLOOK_EXPORT_DIR.

  • overwriteboolean

    Заменяет существующий файл по пути savePath (target=message, default: false). Никогда не заменяет символическую ссылку, файл с жёсткой ссылкой, dotfile или файл в dot-каталоге внутри разрешённой папки.

  • querystring

    Сокращение для свободного поиска (target=messages). Эквивалентно передаче searchQuery: { subject: <query> }. Удобный псевдоним для вызывающих кода, используемый для поиска писем.

  • savePathstring

    Абсолютный путь к файлу или каталогу, либо путь, начинающийся с ~/ (target=message). Относительные пути отклоняются. Должен находиться внутри системного каталога временных файлов, ~/Downloads, ~/Documents или OUTLOOK_EXPORT_DIR. Существующий файл не заменяется, если только overwrite не равен true.

  • searchQueryobject

    Ищет письма (target=messages, альтернатива emailIds)

  • sharedMailboxstring

    Адрес электронной почты общего/делегированного почтового ящика, из которого нужно экспортировать (по умолчанию: учётная запись, под которой выполнен вход). Применяется ко всем целям (message/messages/conversation/mime): передавайте его всегда, когда id(s)/conversationId/searchQuery относятся к общему ящику. Требует делегированного доступа + Mail.Read.Shared. Только для рабочих или учебных аккаунтов; нужен включаемый на сервере параметр OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с инструкцией по настройке).

  • targetenum

    Цель экспорта (по умолчанию: сообщение)

find-meeting-roomsтолько чтениеидемпотентный

Находит доступные для бронирования переговорные комнаты в организации пользователя через конечную точку Graph rooms (только чтение). Возвращает ресурсы комнат с полями displayName, emailAddress, building, floor, capacity и bookingType — подходит для передачи в create-event в качестве участников. Фильтрует по query (совпадение с именем/email), building, floor или минимальному capacity. Возвращает пустой список для личных аккаунтов (конечная точка rooms работает только в M365). Используйте outputVerbosity, чтобы управлять количеством полей.

Переговорные комнаты

Параметры
  • buildingstring

    Фильтровать по названию здания

  • capacitynumber

    Минимальная требуемая емкость.

  • floornumber

    按楼层号筛选

  • outputVerbosityenum

    Уровень детализации вывода (по умолчанию: стандартный)

  • querystring

    Поисковый запрос (название комнаты, email)

folders

Управляет почтовыми папками. Папку можно указать по имени, по пути со слэшами для вложенных папок (например, Inbox/Clients/Acme, без учёта регистра) или по ID; простое имя сначала ищет уникальную папку верхнего уровня, а потом вложенные (при неоднозначном имени возвращает варианты). action=list (по умолчанию) возвращает дерево с путём и id каждой папки (includeItemCounts, includeChildren). action=create создаёт name в корне или в parentFolder/parentFolderId. action=move перемещает emailIds в targetFolder/targetFolderId. action=stats возвращает общее число писем и число непрочитанных для folder или folderId. action=delete удаляет папку (folderName/путь или folderId) вместе со всем содержимым, включая вложенные папки. Пропускает «Удалённые» и документы Graph - пути восстановления у них нет, поэтому сначала передайте dryRun: true, чтобы посмотреть, что потеряете. Защищённые папки (Inbox, Sent Items и т. д.) удалить нельзя. Каждое действие принимает sharedMailbox (алиас email), чтобы работать в общей или делегированной почте (по умолчанию: в своей).

Почтовые папки

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: список)

  • dryRunboolean

    Только предпросмотр (action=delete): ничего не удаляется. Показывает папку и сколько элементов и подпапок будет потеряно. Остальные действия отклоняют dryRun и ничего не меняют. По умолчанию false.

  • emailstring

    Псевдоним для sharedMailbox.

  • emailIdsstring

    Список идентификаторов писем через запятую для перемещения (action=move, обязательно)

  • folderstring

    Имя папки или путь (inbox, sent, "Triage/Delete" и т.д.). По умолчанию: inbox (action=stats)

  • folderIdstring

    Идентификатор папки (действие=stats/delete)

  • folderNamestring

    Имя папки или путь для удаления — преобразуется в ID (action=delete). Нельзя удалить защищенные папки (Входящие, Черновики, Отправленные и т.д.)

  • includeChildrenboolean

    Включать вложенные папки в иерархию (action=list)

  • includeItemCountsboolean

    Включает подсчет общего количества и непрочитанных элементов (action=list)

  • namestring

    Название папки для создания (action=create, обязательно)

  • outputVerbosityenum

    Уровень детализации вывода (action=stats, по умолчанию: standard)

  • parentFolderstring

    Имя или путь родительской папки (например, "Clients/Acme"); по умолчанию используется корень (action=create)

  • parentFolderIdstring

    Parent folder ID — альтернатива parentFolder для однозначной адресации (action=create)

  • sharedMailboxstring

    Адрес электронной почты целевого общего/делегированного почтового ящика (все действия; по умолчанию: учётная запись, под которой выполнен вход). Требуется делегированный доступ и Mail.Read.Shared (список/статистика) или Mail.ReadWrite.Shared (создание/перемещение/удаление). Только для рабочих/учебных учётных записей; нужно включить на сервере настройку OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с подсказками по настройке).

  • sourceFolderstring

    Игнорируется: action=move перемещает каждое письмо по ID из любого места, где оно находится. Принимается для старых вызывающих.

  • targetFolderstring

    Имя или путь папки назначения, например "Triage/Delete" (action=move; или используйте targetFolderId)

  • targetFolderIdstring

    ID папки назначения: альтернатива параметру targetFolder для однозначного/вложенного указания цели (action=move)

get-mail-tipsтолько чтениеидемпотентныйвнешний мир

Предварительная проверка получателя через Graph POST /me/getMailTips (только чтение; использует существующую область Mail.Read - без дополнительных разрешений). Возвращает подсказки по каждому получателю: автоматические ответы (отпуск), статус переполнения почтового ящика, пользовательские подсказки администратора, ограничения доставки, требования модерации, внешний или внутренний контекст, максимальный размер сообщения и количество участников группы (всего + внешние). Используйте перед send-email или draft action=create, чтобы выявить проблемы вроде автоматических ответов (OOO) или предупреждений о внешних получателях до отправки сообщения; send-email/draft принимают checkRecipients: true, чтобы вызывать это автоматически. Принимает строку с разделителями-запятыми или массив адресов; tipTypes фильтрует запрашиваемые подсказки (по умолчанию — все).

Почтовые подсказки

Параметры
  • recipientsstring[] | stringобязательный

    Email-адреса для проверки почтовых подсказок

  • tipTypesstring

    Типы подсказок через запятую для запроса (по умолчанию: все). Варианты: automaticReplies, mailboxFullStatus, customMailTip, externalMemberCount, totalMemberCount, maxMessageSize, deliveryRestriction, moderationStatus, recipientScope, recipientSuggestions

list-eventsтолько чтениеидемпотентныйвнешний мир

Выводит список событий календаря для вошедшего пользователя (только чтение). По умолчанию возвращает предстоящие события (начало ≥ текущего момента). Необязательные фильтры startAfter, startBefore и subject находят прошедшие, текущие или события с конкретным названием; указание любого из них заменяет нижнюю границу по умолчанию «сейчас», а фильтры объединяются по И. Результаты сортируются от самых старых к самым новым, кроме случаев, когда поиск смотрит только в прошлое (startBefore без startAfter или только subject), тогда сначала идут самые новые. Каждое событие показывает свою тему, место, начало/конец, предпросмотр текста и свой id. Используйте count (по умолчанию 10, максимум 100), чтобы управлять размером страницы. Каждое начало/конец возвращается как канонический момент времени UTC в формате ISO-8601 (например, 2026-04-02T22:00:00.000Z), за которым следует локальное представление с пометкой в настроенном часовом поясе отображения (по умолчанию Australia/Melbourne; переопределяется через OUTLOOK_DEFAULT_TIMEZONE). Значение UTC служит эталоном, поэтому потребителям никогда не приходится угадывать часовой пояс.

List Calendar Events

Параметры
  • countnumber

    Количество событий для получения (по умолчанию: 10, максимум: 50)

  • startAfterstring

    Необязательное значение даты и времени в формате ISO 8601 с Z или смещением ±hh:mm (обязательно). Возвращает только события, начало которых наступает в указанное время или позже. Заменяет нижнюю границу по умолчанию «сейчас», если значение указано. Пример: "2026-01-01T00:00:00Z" или "2026-01-01T09:00:00+10:00".

  • startBeforestring

    Необязательное значение даты и времени в формате ISO 8601 с Z или смещением ±hh:mm (обязательно). Возвращает только события, время начала которых строго раньше этого момента. В сочетании с startAfter ограничивает окно; отдельно возвращает результаты от новых к старым. Пример: "2026-02-01T00:00:00Z".

  • subjectstring

    Необязательная подстрока (максимум 255 символов) для сопоставления с темой события без учёта регистра (Graph contains()). Помогает искать прошедшие или текущие события по имени; если использовать её отдельно, результаты идут от новых к старым.

mailbox-settingsидемпотентныйвнешний мир

Читает или обновляет настройки уровня почтового ящика (идемпотентно - можно безопасно повторять; set-операции работают по принципу PATCH и объединяются с текущим состоянием). action=get (по умолчанию) возвращает настройки - используйте section для фильтрации (language, timeZone, workingHours, automaticRepliesSetting или all). action=set-auto-replies настраивает автоответы о недоступности: enabled true/false, необязательные startDateTime/endDateTime (ISO 8601) для режима по расписанию, internalReplyMessage и (опционально) externalReplyMessage с externalAudience (none/contactsOnly/all); передайте dryRun: true, чтобы посмотреть, кто получит ответы, ничего не меняя. action=set-working-hours обновляет расписание: startTime/endTime (HH:MM) и daysOfWeek (массив от monday до sunday). Возвращает обновлённый объект настроек при выполнении set-действий.

Настройки почтового ящика

Параметры
  • actionenum

    Действие для выполнения (по умолчанию: get)

  • daysOfWeekenum[]

    Рабочие дни, например ['понедельник','вторник','среда','четверг','пятница'] (action=set-working-hours)

  • dryRunboolean

    Только предварительный просмотр (action=set-auto-replies): ничего не меняется. Показывает, кто получил бы автоматические ответы, расписание и длину каждого сообщения. Другие действия отклоняют dryRun и ничего не меняют. По умолчанию false.

  • enabledboolean

    Включить (true) или отключить (false) автоматические ответы (action=set-auto-replies)

  • endDateTimestring

    Дата и время окончания режима расписания, формат ISO 8601 (action=set-auto-replies)

  • endTimestring

    Время окончания работы в формате ЧЧ:ММ, например, «17:00» (action=set-working-hours)

  • externalAudienceenum

    Кто получает внешний ответ (action=set-auto-replies)

  • externalReplyMessagestring

    Сообщение для ответа внешним отправителям (действие=set-auto-replies)

  • internalReplyMessagestring

    Ответное сообщение для внутренних отправителей (действие=установить-автоответы)

  • sectionenum

    Конкретный раздел для получения (action=get, по умолчанию: все)

  • startDateTimestring

    Дата и время начала запланированного режима, формат ISO 8601 (action=set-auto-replies)

  • startTimestring

    Время начала работы в формате HH:MM, например, '09:00' (action=set-working-hours)

  • timeZonestring

    Название часового пояса, например, «Australia/Melbourne» (действие=установка-рабочего-времени)

manage-category

Управляет главным списком категорий пользователя (цветные метки, доступные в почте, календаре и контактах). action=list (по умолчанию) возвращает категории с id/displayName/color. action=create добавляет новую категорию — displayName обязателен, color опционален (preset0-preset24, например preset0=Red, preset7=Blue). action=update (псевдоним set — устарел) меняет имя/цвет по id. action=delete удаляет категорию — это НЕ снимает метки с уже помеченных сообщений; существующие сообщения сохраняют "осиротевшую" метку до ручной очистки. Используйте apply-category для маркировки/снятия меток с конкретных сообщений.

Основные категории

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: list). 'set' - устаревший псевдоним для 'update'.

  • categoryIdstring

    Устарело: псевдоним для id. Удалим в будущем релизе.

  • colorenum

    Цветовой пресет, например, preset0=Red, preset7=Blue (действие=create/update).

  • displayNamestring

    Название категории (action=create обязательно, action=update необязательно)

  • idstring

    ID категории (действие=обновление/удаление, обязательно)

  • outputVerbosityenum

    Уровень детализации вывода (действие=list, по умолчанию: standard)

manage-contact

Полный CRUD над личными контактами Outlook вошедшего пользователя (деструктивно: включает действие delete). action=list (по умолчанию) возвращает контакты с постраничной выдачей через skip/count (по умолчанию 50). action=search возвращает контакты, совпадающие с query по имени или email (по умолчанию 25). action=get возвращает полные данные контакта по id. action=create добавляет новый контакт и возвращает его id. action=update правит переданные поля по id (меняются только те поля, что переданы). action=delete удаляет контакт по id; он пропускает папку Deleted Items, так что считайте удаление безвозвратным и сначала передайте dryRun: true, чтобы убедиться, какой это контакт. outputVerbosity (minimal/standard/full) в list/search управляет числом полей. Ищет только в вашем личном хранилище контактов; для поиска с ранжированием по релевантности по контактам, справочнику и недавним перепискам используйте search-people.

Контакты

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: список)

  • companyNamestring

    Название компании (action=create/update)

  • countnumber

    Количество результатов (для action=list по умолчанию: 50, для action=search по умолчанию: 25)

  • displayNamestring

    Полное имя (action=create/update)

  • dryRunboolean

    Только предварительный просмотр (action=delete): ничего не удаляется. Показывает, какой контакт будет удалён. Другие действия отклоняют dryRun и ничего не меняют. По умолчанию false.

  • emailstring

    Основной адрес электронной почты (действие=создание/обновление)

  • emailsstring[]

    Несколько адресов электронной почты (action=create/update). Первая запись - основная.

  • firstNamestring

    Имя (action=create/update). Отображается на Graph givenName. Если displayName не указан, будет объединено с lastName.

  • folderstring

    Идентификатор папки контактов (action=list)

  • idstring

    ID контакта (action=get/update/delete, обязательное)

  • jobTitlestring

    Название должности (действие=создание/обновление)

  • lastNamestring

    Surname (action=create/update). Соответствует Graph surname.

  • mobilePhonestring

    Номер мобильного телефона (action=create/update)

  • notesstring

    Личные заметки (действие: создать/обновить)

  • outputVerbosityenum

    Уровень детализации вывода (действие=list/search, по умолчанию: standard)

  • querystring

    Поисковый запрос для имени или электронной почты (action=search, обязательный)

  • skipinteger

    Смещение пагинации для action=list (по умолчанию: 0). Используйте значение, предложенное в ответе предыдущей страницы.

manage-eventвнешний мир

Управляет существующим событием календаря. dryRun: true показывает, что произойдёт при любом действии, ничего не меняя и не отправляя: кому уйдёт письмо, с подсчётом внешних адресатов (для update ещё и кого добавили или удалили, плюс тело PATCH-запроса). action=update правит поля через PATCH (subject, start, end, attendees, body, location, isOnlineMeeting, sensitivity, showAs, importance, categories, reminderMinutesBeforeStart); меняются только те поля, которые вы передали. action=decline отклоняет приглашение (необязательный comment; sendResponse: false отклоняет, не уведомляя организатора). action=cancel отменяет событие, которое организовали вы, и рассылает письма участникам. action=delete удаляет событие из вашего календаря (Graph не гарантирует восстановление); если удалить организованную вами встречу с участниками, им всё равно уйдёт письмо об отмене, так что берите cancel с comment, чтобы управлять этим сообщением. При update возвращает обновлённое событие, в остальных случаях - подтверждение. Действия accept нет: принимайте приглашения в интерфейсе Outlook, потому что глагол accept в Graph работает ненадёжно.

Управляет событием календаря

Параметры
  • actionenumобязательный

    Выполняемое действие (обязательно).

  • attendeesstring | object[]

    Полная замена списка участников: передайте полный нужный список или [] для очистки (только при action=update). Каждая запись - это строка с адресом электронной почты или объект {email, type} (type: 'required', 'optional' или 'resource'). Строка или объект без type сохраняет тип, который адрес уже имеет в событии (новые адреса получают type required); явно указанный type всегда имеет приоритет. Если задан OUTLOOK_ALLOWED_RECIPIENTS, каждый адрес в списке должен быть разрешён, иначе обновление отклоняется.

  • bodystring

    Новое содержимое тела (только для action=update)

  • categoriesstring[]

    Полный список категорий для замены — передайте [] для очистки (только при action=update)

  • commentstring

    Сообщение, отправляемое при отклонении или отмене (необязательно; опускается, если не задано)

  • dryRunboolean

    Только предпросмотр: ничего не меняется и не отправляется. Показывает, кому уйдёт письмо (decline/cancel/delete), или тело PATCH-запроса (update). По умолчанию false.

  • endstring | object

    Новое время окончания в виде строки ISO 8601 или объекта {dateTime, timeZone} (только для action=update)

  • eventIdstring

    ID события

  • idstring

    Псевдоним для eventId (канонический согласно проходу алиасов v3.7.3).

  • importanceenum

    Флаг важности события (только для action=update)

  • isOnlineMeetingboolean

    Переключает флаг онлайн-встречи (только для действия=обновление)

  • locationstring

    Новое отображаемое имя местоположения (только для действия update)

  • reminderMinutesBeforeStartnumber

    Минут до начала отправки напоминания (только для action=update)

  • sendResponseboolean

    Отправляет отказ организатору (только action=decline; по умолчанию true). Передаёт false, чтобы отклонить без уведомления организатора.

  • sensitivityenum
  • showAsenum

    Статус «Свободен/Занят» виден другим (только при обновлении)

  • startstring | object

    Новое время начала как строка ISO 8601 или объект {dateTime, timeZone} (только для action=update)

  • subjectstring

    Новая тема (действие=только обновление)

manage-focused-inbox

Управляет переопределениями Фокусированного ящика — явными правилами, которые заставляют сообщения от указанного отправителя попадать в «Фокус» или «Другое» независимо от классификации ML.action=list (по умолчанию) возвращает существующие переопределения с id/отправителем/классификацией.action=set создаёт или обновляет переопределение для emailAddress (опционально name), направляя будущие письма в focused (по умолчанию) или other.action=delete удаляет переопределение для emailAddress.Примечание: это работает только для аккаунтов, у которых включен Фокусированный ящик — личные аккаунты Outlook.com без него возвращают пустой список.

Сфокусированные входящие

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: список)

  • classifyAsenum

    Куда помещать письма от этого отправителя (действие=установить, по умолчанию: сфокусированные)

  • emailAddressstring

    Адрес электронной почты отправителя (действие=установить/удалить, обязательно)

  • namestring

    Отображаемое имя отправителя (действие=установить)

  • outputVerbosityenum

    Уровень детализации вывода (действие=list, по умолчанию: standard)

manage-rulesвнешний мир

Правила для входящих на стороне сервера (деструктивные: охватывают delete; dryRun предварительно показывает create/update). Правила выполняются на сервере Exchange независимо от того, какой клиент открыт. action=list (по умолчанию) возвращает правила с id/name/sequence; includeDetails: true добавляет conditions/actions/exceptions. action=create строит правило из параметров условий (12, например fromAddresses, containsSubject, bodyContains, hasAttachments, importance, sensitivity), параметров действий (9, например moveToFolder/copyToFolder: имя папки, вложенный путь вроде Triage/Delete, или ID; forwardTo, redirectTo, assignCategories, markAsRead, delete) и необязательных исключений except*. action=update частично обновляет поля по ruleId или ruleName. action=reorder меняет приоритет через sequence (меньшее значение выполняется первым). action=delete удаляет правило. Список разрешённых получателей применяется к forwardTo/redirectTo. Действия permanentDelete нет. Изменения расходуют лимит сессии (OUTLOOK_MAX_MANAGE_RULES_PER_SESSION, иначе OUTLOOK_MAX_EMAILS_PER_SESSION); 0 запрещает их.

Правила для входящих

Параметры
  • actionenum

    Выполняемое действие (по умолчанию: список)

  • assignCategoriesstring

    Категории Outlook через запятую для назначения (action=create/update)

  • bodyContainsstring

    Ключевые слова текста тела, разделенные запятыми (логика ИЛИ) (action=create/update)

  • bodyOrSubjectContainsstring

    Ключевые слова через запятую, соответствующие телу или теме (логика ИЛИ) (действие=создание/обновление)

  • containsSubjectstring

    Ключевые слова темы через запятую (логика ИЛИ). Например: "invoice, receipt, payment" (action=create/update)

  • copyToFolderstring

    Копирует подходящие письма в папку: имя, вложенный путь вида Projects/Backup, известное имя или идентификатор папки (action=create/update)

  • deleteMessageboolean

    Переместить соответствующие письма в 'Удаленные' (action=create/update)

  • displayNamestring

    Псевдоним для name (соответствует собственному полю displayName в Graph).

  • dryRunboolean

    Только предпросмотр (action=create или update): показывает правило, но не создаёт и не изменяет его. Другие действия отклоняют dryRun и ничего не меняют. По умолчанию false.

  • exceptBodyContainsstring

    Ключевые слова тела запроса для исключения, разделённые запятыми (action=create/update)

  • exceptFromAddressesstring

    Разделённые запятыми адреса электронной почты отправителей для исключения (action=create/update)

  • exceptHasAttachmentsboolean

    Исключать письма с вложениями (действие: создание/обновление).

  • exceptSenderContainsstring

    Частичные совпадения отправителей через запятую для исключения (действие=create/update)

  • exceptSubjectContainsstring

    Разделенные запятыми ключевые слова темы для исключения (действие=создание/обновление)

  • forwardTostring

    Адреса электронной почты через запятую для пересылки соответствующих сообщений (action=create/update)

  • fromAddressesstring

    Адреса электронной почты отправителей через запятую для сопоставления (action=create/update)

  • hasAttachmentsboolean

    Сопоставляет письма с вложениями (action=create/update)

  • importanceenum

    Сопоставьте электронные письма с этой важностью (действие=создание/обновление).

  • includeDetailsboolean

    Включите подробные условия, действия и исключения (action=list)

  • isAutomaticReplyboolean

    Сопоставляет автоматические ответные письма (action=create/update).

  • isEnabledboolean

    Правило включения/отключения (действие=создание по умолчанию: true, действие=обновление)

  • markAsReadboolean

    Помечает подходящие письма как прочитанные (action=create/update)

  • markImportanceenum

    Устанавливает важность для соответствующих писем (action=create/update)

  • moveToFolderstring

    Папка, куда перемещать подходящие письма: имя, вложенный путь вроде Triage/Delete, общеизвестное имя (например, archive) или ID папки (action=create/update)

  • namestring

    Имя правила (action=create обязателен, action=update для переименования)

  • recipientContainsstring

    Разделенные запятыми частичные совпадения получателей (действие=создание/обновление)

  • redirectTostring

    Адреса электронной почты, разделенные запятыми, для перенаправления соответствующих сообщений (action=create/update)

  • ruleIdstring

    Идентификатор существующего правила (action=update/delete)

  • ruleNamestring

    Получает и запрашивает актуальную документацию и примеры кода из Context7 для любой программной библиотеки или фреймворка. Сначала необходимо вызвать инструмент 'Resolve Context7 Library ID', чтобы получить точный идентификатор библиотеки, совместимый с Context7 и необходимый для использования этого инструмента, ЗА ИСКЛЮЧЕНИЕМ случаев, когда пользователь явно указывает идентификатор библиотеки в формате '/org/project' или '/org/project/version' в своём запросе. Не вызывайте этот инструмент более 3 раз для одного вопроса.

  • senderContainsstring

    Частичные совпадения отправителя через запятую (action=create/update)

  • sensitivityenum

    Сопоставляет электронные письма с этой чувствительностью (action=create/update)

  • sentCcMeboolean

    Сопоставляет электронные письма, где я указан в копии (CC) (действие=create/update).

  • sentOnlyToMeboolean

    Сопоставить письма, где я единственный получатель (action=create/update)

  • sentToAddressesstring

    Email-адреса получателей через запятую для сопоставления (action=create/update)

  • sentToMeboolean

    Сопоставить письма, отправленные мне (action=create/update)

  • sequencenumber

    Порядок выполнения: меньшее значение = более высокий приоритет (action=create по умолчанию: auto, action=reorder обязателен)

  • stopProcessingRulesboolean

    Прекратите оценку последующих правил (action=create/update)

read-emailтолько чтениеидемпотентныйвнешний мир

Читает одно письмо по id (только чтение). Возвращает тему, from/to/cc, дату и тело письма в виде Markdown (HTML очищен до текста): до 2 000 символов по умолчанию, до 40 000 при outputVerbosity: full; обрезанное тело заканчивается подсказкой, как получить остаток. При headersMode: true: возвращает форензик-заголовки RFC-822 вместо тела (DKIM, SPF, DMARC, цепочка Received, Message-ID, Authentication-Results) - importantOnly: true для подмножества, связанного с безопасностью, groupByType: true для представления с группировкой по категориям, raw: true для JSON. При includeHeaders: true (режим без заголовков): добавляет базовые заголовки вместе с телом. Если id пришёл из общего или делегированного ящика (например, через `search-emails` или `access-shared-mailbox` с заданным `sharedMailbox`), вы ОБЯЗАНЫ передать здесь тот же `sharedMailbox` (или псевдоним `email`) - идентификаторы сообщений привязаны к почтовому ящику, и чтение id из общего ящика без него падает с 404 ErrorInvalidMailboxItemId.

Читает электронную почту

Параметры
  • emailstring

    Псевдоним для sharedMailbox.

  • groupByTypeboolean

    Группировать заголовки по категориям (только для headersMode, по умолчанию: false)

  • headersModeboolean

    Возвращает форензик-заголовки вместо содержимого письма (по умолчанию: false)

  • idstringобязательный

    Идентификатор письма для чтения

  • importantOnlyboolean

    Показывать только важные заголовки (headersMode only, default: false)

  • includeHeadersboolean

    Включает базовые заголовки вместе с содержимым электронного письма (по умолчанию: false)

  • outputVerbosityenum

    Уровень детализации вывода (по умолчанию: standard). minimal: только предпросмотр тела; standard: тело до 2 000 символов; full: добавляет ID, тело до 40 000 символов. Если тело длиннее, экспортируйте его с помощью export target=message.

  • rawboolean

    Возвращает заголовки в виде сырого JSON, а не Markdown (только для headersMode, по умолчанию: false).

  • sharedMailboxstring

    Адрес электронной почты общего/делегированного почтового ящика, которому принадлежит id. Обязателен, если id получен из общего почтового ящика: идентификаторы сообщений привязаны к почтовому ящику, и чтение без него возвращает 404 ErrorInvalidMailboxItemId. Требуется делегированный доступ + Mail.Read.Shared. Только для рабочих или учебных учетных записей; нужна включаемая на сервере настройка OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с подсказками по настройке).

search-emailsтолько чтениеидемпотентныйвнешний мир

Ищет, перечисляет, делает delta-синхронизацию или группирует письма в цепочки (только чтение); режим задают параметры. Без параметров: последние письма в folder (по умолчанию inbox). Фильтры query/from/to/subject/по дате: поиск, объединяются в OData-фильтр. searchExpression (устаревший псевдоним kqlQuery): сырое выражение Graph $search. deltaMode: true: текущее состояние плюс deltaToken, который нужно передать при следующем вызове, чтобы получить только изменения. groupByConversation: true: цепочки переписки. conversationId: все сообщения одной цепочки. internetMessageId: письмо с указанным RFC Message-ID. sharedMailbox (псевдоним email) ищет в общем или делегированном ящике, включая пользовательские папки и вложенные пути. В личных аккаунтах Outlook.com $search ограничен, поэтому инструмент сам переключается на OData-фильтры и список последних писем; структурированные фильтры (from/subject/receivedAfter/hasAttachments/unreadOnly) дают там более точные результаты. Возвращает до count сообщений (id/subject/from/receivedDateTime/preview); outputVerbosity расширяет их.

Ищет письма

Параметры
  • conversationIdstring

    Получает сообщения в цепочке переписки по conversationId, сначала самые старые (до 100; более длинная цепочка помечается как усечённая - используйте export target=conversation, чтобы получить до 1000). Учитывает sharedMailbox/email, чтобы собирать цепочку в общем/делегированном почтовом ящике.

  • countnumber

    Количество результатов (для list по умолчанию: 25, для search по умолчанию: 10, максимум: 50). Постраничного курсора нет: когда в ответе указано, что доступно больше писем, увеличьте count или сузьте receivedAfter/receivedBefore.

  • deltaModeboolean

    Включает режим дельта-синхронизации. Возвращает только изменения с момента последней синхронизации. Для последующих вызовов использует deltaToken; начальная синхронизация размером больше maxResults приходит несколькими страницами, и каждая возвращает токен продолжения, который нужно передавать обратно, пока не вернётся дельта-токен. Учитывает sharedMailbox/email (и пользовательские пути folder), чтобы синхронизировать внутри общего/делегированного почтового ящика.

  • deltaTokenstring

    Токен из предыдущего вызова delta для инкрементальной синхронизации (только для deltaMode). Токен имеет приоритет: он кодирует собственный почтовый ящик и папку, поэтому folder/sharedMailbox игнорируются, а токен из другого почтового ящика отклоняется.

  • emailstring

    Псевдоним для sharedMailbox.

  • folderstring

    Папка электронной почты (по умолчанию: 'inbox'). Принимает общеизвестное имя, пользовательское/локализованное отображаемое имя или вложенный путь вида Inbox/Subfolder.

  • fromstring

    Фильтровать по email/имени отправителя

  • groupByConversationboolean

    Выводит список бесед (цепочек), сгруппированных по conversationId, а не отдельных писем. Учитывает sharedMailbox/email (и пользовательские пути folder), чтобы группировать в общем/делегированном почтовом ящике.

  • hasAttachmentsboolean

    Отфильтровать письма с вложениями.

  • includeHeadersboolean

    Включить заголовки писем для каждого сообщения (только conversationId)

  • internetMessageIdstring

    Ищет письмо по заголовку Message-ID (например, abc123@example.com). Для группировки в цепочки и дедупликации. Учитывает sharedMailbox/email для поиска в общем/делегированном почтовом ящике.

  • kqlQuerystring

    УСТАРЕВШИЙ псевдоним для searchExpression (он никогда не был полноценным KQL, это выражение $search в Graph).

  • maxResultsnumber

    Размер страницы дельта-синхронизации (только для deltaMode): от 1 до 200, по умолчанию 100, отправляется в Graph в заголовке Prefer: odata.maxpagesize. Он задаёт размер каждой страницы, а не всей синхронизации: пока страница возвращает токен продолжения, вызывайте с этим токеном снова, пока не вернётся дельта-токен, и передавайте одно и то же значение maxResults на каждой странице (если значение не указано, подразумевается 100).

  • outputVerbosityenum

    Уровень детализации вывода (по умолчанию: стандартный)

  • querystring

    Текст поискового запроса. Пропустите для режима списка. В личных аккаунтах Outlook.com $search в Graph недоступен, поэтому происходит откат к сопоставлению подстроки в теме (все слова должны присутствовать в теме): точно, но НЕ ищет по телам сообщений. Используйте searchExpression, когда нужно искать по содержимому тела.

  • receivedAfterstring

    Фильтрует письма, полученные после даты (ISO 8601)

  • receivedBeforestring

    Фильтрует электронные письма, полученные до указанной даты (ISO 8601)

  • searchAllFoldersboolean

    Поиск по всем почтовым папкам

  • searchExpressionstring

    Необработанное выражение $search Microsoft Graph для расширенного поиска на стороне сервера, например subject:"invoice", from:github.com или foo OR bar. Заключает свои фразы в кавычки, экранируя любые " или \ внутри них обратной косой чертой; одиночный токен без кавычек автоматически заключается в кавычки и экранируется за вас. Сочетается с searchAllFolders: true для поиска по всем папкам. Обходит другие параметры поиска. ПРИМЕЧАНИЕ: личные аккаунты Outlook.com полностью отклоняют $search с областью действия по полю; начиная с v3.10.0 распознанные выражения from:/to:/subject: переводятся в ближайшие эквивалентные фильтры OData и автоматически повторяются (термин subject: становится совпадением по подстроке, так что это близко, но не идентично) (сообщается как стратегия raw-kql-translated). Выражения, которые нельзя перевести точно (свободный текст, AND/OR, неизвестные префиксы), не повторяются, поэтому для них там подходит query. РЕЛЕВАНТНОСТЬ, А НЕ СВЕЖЕСТЬ: на непереведённое выражение отвечает Graph $search по всему сообщению, включая тело, ранжируя по релевантности, а не сортируя по дате, поэтому лучшие совпадения могут выглядеть не связанными для вызывающего, ожидающего совпадения по теме. query: более предсказуемый выбор для термина, который вы ожидаете в строке темы; searchExpression: тот, который добирается до текста тела.

  • sharedMailboxstring

    Адрес электронной почты общего или делегированного почтового ящика для поиска (по умолчанию: учётная запись, в которой выполнен вход). Сочетается с folder (включая пользовательские вложенные папки и пути) или searchAllFolders. Только для рабочих или учебных учётных записей; требует включённой на сервере настройки OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с рекомендациями по настройке).

  • subjectstring

    Фильтр по теме

  • tostring

    Фильтрует по email/имени получателя. Личные аккаунты Outlook.com отклоняют серверный фильтр по получателю, в этом случае сопоставление идёт локально только по 500 последним сообщениям (увеличьте с помощью OUTLOOK_SEARCH_SCAN_LIMIT). В большом архиве сочетайте to с receivedAfter/receivedBefore, чтобы добраться до более старых писем; ответ сообщает об этом, когда сканирование было усечено.

  • unreadOnlyboolean

    Показать только непрочитанные письма

search-peopleтолько чтениеидемпотентныйвнешний мир

Ранжированный по релевантности поиск по личным контактам, каталогу организации и недавним коммуникациям через Microsoft Graph People API (только чтение). Возвращает объекты people с displayName, emailAddresses, companyName, jobTitle и метаданными релевантности, для поисковых запросов "кто такой X?" или "кому мне написать о Y?". Для записей только из вашего личного хранилища контактов необходимо использовать manage-contact action=search.

People Search

Параметры
  • countnumber

    Максимальное количество возвращаемых результатов (по умолчанию: 5, макс.: 50).

  • querystringобязательный

    Поисковый запрос (имя, email, компания)

send-emailвнешний мир

Составляет и сразу отправляет письмо (деструктивное действие: отправляет сообщения наружу). Возвращает подтверждение. Механизмы безопасности: dryRun: true возвращает составленное письмо на проверку, не отправляя его; checkRecipients: true сначала запускает get-mail-tips и возвращает его предупреждения. Если подсказки показывают автоответ об отсутствии в офисе, переполненный ящик, ограничение на доставку или внешних получателей, отправка отклоняется, пока её не повторят с acknowledgeWarnings: true. Личные аккаунты Outlook.com не возвращают подсказок, и отсутствие предупреждений не доказывает доставку. Подчиняется лимиту на сессию (OUTLOOK_MAX_SEND_EMAIL_PER_SESSION, иначе OUTLOOK_MAX_EMAILS_PER_SESSION; 0 отклоняет любую отправку) и списку разрешённых получателей (OUTLOOK_ALLOWED_RECIPIENTS), если он настроен; оба отклоняют отправку ещё до любого запроса к Graph. Для сценария с проверкой перед отправкой используйте draft (action=create → update → send); черновик можно проверить в Outlook, прежде чем он уйдёт. Принимаются и строки получателей через запятую, и массивы.

Отправляет электронное письмо

Параметры
  • acknowledgeWarningsboolean

    Отправляет, даже если checkRecipients пометил автоответ, переполненный почтовый ящик, ограничение доставки или внешних получателей (по умолчанию: false). Без него эти предупреждения блокируют отправку. Передавайте только после того, как пользователь увидел предупреждения. Без checkRecipients не работает.

  • bccstring

    Адреса email для скрытой копии, разделенные запятыми

  • bodystringобязательный

    Тело письма (простой текст или HTML)

  • ccstring

    Адреса электронной почты для копии (CC), разделённые запятыми.

  • checkRecipientsboolean

    Проверяет получателей с помощью mail tips перед отправкой (по умолчанию: false). Автоответ, переполненный почтовый ящик, ограничения на доставку или внешние получатели отклоняют отправку, если не указать acknowledgeWarnings=true. Совмещается с dryRun=true для проверки перед отправкой.

  • dryRunboolean

    Предпросмотр письма без отправки (по умолчанию: false). Возвращает составленное письмо для просмотра.

  • importanceenum

    Важность электронной почты (по умолчанию: обычная)

  • saveToSentItemsboolean

    Сохранять в отправленных (по умолчанию: true)

  • subjectstringобязательный

    Тема письма.

  • tostringобязательный

    Email-адреса получателей через запятую

update-emailидемпотентный

Обновляет состояние сообщения, не меняя содержимое (идемпотентно - можно безопасно повторять). action=mark-read/mark-unread устанавливает isRead у одного сообщения по id. action=flag ставит флаг напоминания с необязательными dueDateTime/startDateTime: ISO 8601 со временем, сохраняется как этот же момент, если есть Z или смещение ±hh:mm, и читается в OUTLOOK_DEFAULT_TIMEZONE, если смещения нет; значения только с датой или неразбираемые отклоняются до любых изменений. Если указан только dueDateTime, начало - 09:00 в день срока или время срока, если оно раньше. action=unflag снимает флаг; action=complete помечает его выполненным. Flag/unflag/complete принимают id (одно сообщение) или ids (пакетно, обновляются по одному: отдельный PATCH на каждое, а не Graph $batch). sharedMailbox (псевдоним email) обновляет сообщения в общем или делегированном почтовом ящике (по умолчанию - учётная запись, под которой выполнен вход; нужны Mail.ReadWrite.Shared и доступ делегата). Возвращает статус по каждому сообщению.

Обновляет Email

Параметры
  • actionenumобязательный

    Выполняемое действие (обязательно).

  • dueDateTimestring

    Срок/время для follow-up (action=flag). ISO 8601 с указанием времени: "2026-03-01T09:00:00Z" или "2026-03-01T09:00:00+10:00" означает ровно этот момент времени; "2026-03-01T09:00:00" (без зоны) читается в часовом поясе по умолчанию (OUTLOOK_DEFAULT_TIMEZONE).

  • emailstring

    Псевдоним для sharedMailbox.

  • idstring

    ID одного сообщения (обязателен для mark-read/mark-unread; действия с флагами принимают id или ids)

  • idsstring[]

    Массив идентификаторов сообщений для пакетных операций flag/unflag/complete.

  • sharedMailboxstring

    Адрес электронной почты общего/делегированного почтового ящика, сообщения которого нужно обновить (по умолчанию: учетная запись, в которой выполнен вход). Требует делегированного доступа + Mail.ReadWrite.Shared. Только для рабочих или учебных учетных записей; нужна включенная на сервере настройка OUTLOOK_SHARED_MAILBOX (иначе вызов отклоняется с подсказками по настройке).

  • startDateTimestring

    Дата/время начала для follow-up (action=flag), тот же формат, что у dueDateTime. По умолчанию: 09:00 в дату срока в часовом поясе по умолчанию (но не позже времени срока), если указан только dueDateTime.

3.14.1основная
3.14.0
3.13.0
3.12.1
3.12.0
3.11.2
3.11.1
3.11.0
3.10.0
3.9.1
3.9.0
3.8.2
3.8.1
3.8.0
3.7.4
3.7.2
3.7.1
3.7.0
3.6.0
3.5.2
3.5.1
3.5.0
3.4.1
3.4.0
3.3.1
3.3.0

Выберите клиент, чтобы установить littlebearapps/outlook-assistant:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"littlebearapps-outlook-assistant-4um8wv2uxm\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"@littlebearapps/outlook-assistant\"],\"env\":{\"OUTLOOK_CLIENT_ID\":\"your-application-client-id\",\"OUTLOOK_CLIENT_SECRET\":\"your-client-secret-VALUE\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add littlebearapps-outlook-assistant-4um8wv2uxm --env OUTLOOK_CLIENT_ID=your-application-client-id --env OUTLOOK_CLIENT_SECRET=your-client-secret-VALUE -- npx @littlebearapps/outlook-assistant

Либо через JSON-конфиг:

claude mcp add-json littlebearapps-outlook-assistant-4um8wv2uxm "{\"command\":\"npx\",\"args\":[\"@littlebearapps/outlook-assistant\"],\"env\":{\"OUTLOOK_CLIENT_ID\":\"your-application-client-id\",\"OUTLOOK_CLIENT_SECRET\":\"your-client-secret-VALUE\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add littlebearapps-outlook-assistant-4um8wv2uxm --env OUTLOOK_CLIENT_ID=your-application-client-id --env OUTLOOK_CLIENT_SECRET=your-client-secret-VALUE -- npx @littlebearapps/outlook-assistant

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.littlebearapps-outlook-assistant-4um8wv2uxm]
command = "npx"
args = ["@littlebearapps/outlook-assistant"]

[mcp_servers.littlebearapps-outlook-assistant-4um8wv2uxm.env]
OUTLOOK_CLIENT_ID = "your-application-client-id"
OUTLOOK_CLIENT_SECRET = "your-client-secret-VALUE"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите littlebearapps/outlook-assistant, а в поле команды запуска — строку ниже:
npx @littlebearapps/outlook-assistant

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например littlebearapps-outlook-assistant-4um8wv2uxm.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: littlebearapps-outlook-assistant-4um8wv2uxm
    command: npx
    args:
      - "@littlebearapps/outlook-assistant"
    env:
      OUTLOOK_CLIENT_ID: your-application-client-id
      OUTLOOK_CLIENT_SECRET: your-client-secret-VALUE
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "littlebearapps-outlook-assistant-4um8wv2uxm": {
      "command": "npx",
      "args": [
        "@littlebearapps/outlook-assistant"
      ],
      "env": {
        "OUTLOOK_CLIENT_ID": "your-application-client-id",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-VALUE"
      }
    }
  }
}

Похожие MCP-сервера

MarkusPfundstein/mcp-gsuite

MarkusPfundstein/mcp-gsuite

от markuspfundstein

Gmail и Календарь Google: ищет письма, создаёт черновики и ответы, планирует встречи. Поддерживает несколько аккаунтов.

Python⭐ 490
ap311036/ews-meeting-mcp

ap311036/ews-meeting-mcp

от ap311036

EWS Meeting MCP — сервер для безопасного планирования встреч Outlook в on-prem Exchange EWS. Помогает агентам читать доступность, предлагать слоты и создавать встречи только после явного подтвержде...

Python⭐ 3
wyattjoh/jmap-mcp

wyattjoh/jmap-mcp

от wyattjoh

MCP-сервер для работы с JMAP-почтой: поиск, чтение, отправка, перемещение и удаление писем, управление папками и синхронизация. Полезен разработчикам, автоматизирующим почту через FastMail, Cyrus и...

TypeScript⭐ 177
marlinjai/email-mcp

marlinjai/email-mcp

от marlinjai

Работайте с почтой через Gmail, Outlook и iCloud, а также любые IMAP-серверы, с помощью одного MCP сервера. 25 встроенных инструментов для поиска, отправки и массовых операций. OAuth2 и шифрование встроены. Установка через npm или npx.

TypeScript⭐ 25
getpoststack/mcp

getpoststack/mcp

от getpoststack

MCP сервер для PostStack Email API предоставляет AI-агентам (Claude, Cursor) 102 инструмента для отправки транзакционных писем, проверки спама, доставляемости, управления контактами и анализа рассы...

TypeScript⭐ 1
taylorwilsdon/google_workspace_mcp

taylorwilsdon/google_workspace_mcp

от taylorwilsdon

Управляет Gmail, Календарём, Диском, Документами, Таблицами и Презентациями: пишет письма, создаёт события, редактирует файлы.

Python⭐ 3386
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин