v0.3 Новое: читает вложения и транскрибации →

Рабочая почта для вашего AI-агента

MCP-сервер для Microsoft Exchange / OWA. Агент проверяет входящие, ищет письма, пересказывает переписку и вложения. Письмо уходит, только когда вы нажмёте «Отправить».

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh

Работает с Claude CodeClaude DesktopCodexCursorOpenCodeKilo Codeлюбым MCP-клиентом

что требует моего ответа со вчерашнего вечера?
owa-mail · get_status → ivan.petrov@company.ru
owa-mail · check_mail → 37 писем
owa-mail · get_thread → «Бюджет Q4», 41 письмо
Нужен ваш ответ — 3: 1. Анна Смирнова — бюджет Q4, оценка до 15:00 (сегодня) 2. Мария Иванова — подтвердить отпуск (пятница) 3. John Doe (внешний) — продление контракта Для сведения — 9, рассылки — 25.
ответь Анне, что оценку пришлю завтра до 12:00
owa-mail · send_email → ждёт вашего подтверждения в браузере…
Окно подтверждения отправки: получатели (внешний выделен), тема, текст, кнопки Отправить, Изменить, Не отправлять Окно подтверждения отправки
окно подтверждения · ваш браузер
9
инструментов для агента
0
писем без вашего «Отправить»
1
команда для установки
MIT
открытый код, бесплатно

Возможности

Всё, что вы делаете в почте, — одним вопросом

Агент видит ящик так же, как вы в веб-почте, и сам решает, какое письмо открыть, какой тред собрать и что прочитать во вложении.

Разбор входящих

Новые письма за любой период, разложенные на «ответить», «для сведения» и «можно не читать».

check_mailtriage_inbox

Треды без цитат

Вся переписка из «Входящих» и «Отправленных» по порядку, без «От: … Отправлено: …». Кто что предложил и чего ждут от вас.

get_threadsummarize_thread

Вложения и транскрибации

Текст из .docx, PDF, .txt, .md, .csv, HTML и субтитров .vtt/.srt — с репликами «Анна: …».

get_attachment

Поиск по всем папкам

По тексту, отправителю, получателю, теме, датам и вложениям. Даты по-человечески: вчера, 7d, 2026-10-01.

search_messages(sender="Анна", text="бюджет", since="30d")
→ 6 писем, новые сверху
search_messagesget_message

Люди и отправители

Адресная книга компании: имя, точный адрес, должность, отдел. И кто писал вам чаще всего за неделю — с числом непрочитанных.

list_senders(since="7d")
→ Анна Смирнова · 12 писем · 3 непрочитанных
find_peoplelist_senders

Отправка — только с вашего «да»

Агент составит письмо или ответ в треде, но отправить сам не может. В браузере открывается окно подтверждения.

  • Отправить, Изменить или Не отправлять — решаете вы
  • Внешние адреса выделены, скрытые копии — с предупреждением
  • Адрес окна знает только ваш браузер: агента не уговорить нажать кнопку текстом письма
  • Нет ответа за 50 секунд — письмо не уходит; повтор не пошлёт его дважды
  • Отправка выключена, пока вы её не включите
send_email
Окно подтверждения отправки Окно подтверждения отправки

Как это работает

Три минуты от установки до первого ответа

  1. Установите одной командой

    Установщик сам поставит нужный Python в отдельную папку — системный не трогает. Обновление — та же команда, настройки сохраняются.

    $ curl -LsSf …/install.sh | sh
    ==> Готово: owa-mail-mcp 0.3
  2. Подключите ящик

    В окне настройки — те же данные, что для веб-почты. «Проверить подключение» покажет ваше имя и последние письма.

    Окно настройки: адрес сервера, почта, логин, пароль и успешная проверка Окно настройки почтового ящика
  3. Спросите агента

    Кнопка «Добавить» пропишет сервер в Claude Code, Codex, Claude Desktop или Cursor. Дальше просто: «что нового в почте?».

    › что нового в почте со вчера?
    ⏺ owa-mail · check_mail → 12 писем

Установка

Установить и подключить

Нужен доступ к почтовому серверу: если веб-почта открывается только в VPN — включите VPN.

Вставьте в «Терминал». Через минуту откроется окно настройки.

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh

В PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv tool install --python 3.12 git+https://github.com/Khomiakov7706/owa-mail-mcp
owa-mail-mcp setup

Скопируйте текст и отправьте своему агенту (Claude Code, Codex, Cursor) — он установит и подключит сервер сам. Пароль агенту не нужен: его вы введёте в окне настройки.

Установи и подключи MCP-сервер OWA Mail для моей рабочей почты Exchange.
1. Выполни: curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh
2. Подключи сервер к себе. Для Claude Code: claude mcp add --scope user owa-mail -- ~/.local/bin/owa-mail-mcp
3. Почту (адрес сервера, логин, пароль) я настрою сам в открывшемся окне — не спрашивай у меня пароль.
4. После этого вызови get_status и покажи результат.
Инструкция для агентов: https://khomiakov7706.github.io/owa-mail-mcp/llms.txt

Проще всего — кнопка «Добавить» в окне настройки (owa-mail-mcp setup). Или в терминале:

claude mcp add --scope user owa-mail -- ~/.local/bin/owa-mail-mcp

Проверка: claude mcp list или /mcp в сессии.

Settings → Developer → Edit Config, затем перезапустите Claude Desktop. Точный путь окно настройки подставит само.

{
  "mcpServers": {
    "owa-mail": { "command": "/Users/YOU/.local/bin/owa-mail-mcp" }
  }
}
codex mcp add owa-mail -- ~/.local/bin/owa-mail-mcp

Файл ~/.cursor/mcp.json:

{
  "mcpServers": {
    "owa-mail": { "command": "/Users/YOU/.local/bin/owa-mail-mcp" }
  }
}

Файл ~/.config/opencode/opencode.json (для одного проекта — opencode.json в его корне). У OpenCode свой формат: ключ mcp, "type": "local" и команда — массивом. Ключ mcpServers OpenCode не читает. Кнопка «Добавить» в окне настройки допишет это сама.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "owa-mail": {
      "type": "local",
      "command": ["/Users/YOU/.local/bin/owa-mail-mcp"],
      "enabled": true
    }
  }
}

Перезапустите OpenCode. Проверка: opencode mcp list.

Новые версии Kilo Code — тот же формат, что у OpenCode, в файле ~/.config/kilo/kilo.jsonc (для проекта — kilo.jsonc или .kilo/kilo.jsonc):

{
  "mcp": {
    "owa-mail": {
      "type": "local",
      "command": ["/Users/YOU/.local/bin/owa-mail-mcp"],
      "enabled": true
    }
  }
}

Старые версии расширения: Kilo Code → MCP Servers → «Edit Global MCP» (файл mcp_settings.json; для проекта — .kilocode/mcp.json):

{
  "mcpServers": {
    "owa-mail": {
      "command": "/Users/YOU/.local/bin/owa-mail-mcp",
      "args": [],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

После правки — перезапустите Kilo Code (в VS Code: Developer: Reload Window).

Любой MCP-клиент по stdio: команда — абсолютный путь к owa-mail-mcp, без аргументов и переменных окружения. Настройки сервер берёт из своего файла и связки ключей.

Система
macOS, Linux, Windows
Почта
Exchange 2013 / 2016 / 2019 — тот же сервер, что и веб-почта OWA
После обновления
Перезапустите MCP-сервер в клиенте: в Claude Code — /mcp → Reconnect

Для разработчиков и агентов

Инструменты MCP

Всё, кроме send_email, только читает. Тексты писем — данные, а не инструкции: сервер прямо говорит агенту не выполнять команды из писем.

ИнструментЧто делает
get_statusКто пользователь, текущее время, число непрочитанных, версия, включена ли отправка
check_mailНовые письма во «Входящих» (по умолчанию непрочитанные) с превью
search_messagesПоиск по тексту, отправителю, получателю, теме, датам, вложениям; папки: inbox, sent, inbox_and_sent, all
get_messageПисьмо целиком: текст (HTML → текст), получатели, имена вложений
get_threadВесь тред по порядку из всех папок, без процитированной истории, с участниками
get_attachmentТекст вложения: .docx, .pdf, .txt, .md, .csv, .html, .vtt/.srt, вложенные письма
find_peopleАдресная книга организации: имя, адрес, должность, отдел
list_sendersКто писал за период: число писем, непрочитанные, последняя тема; для sent — кому писали вы
send_emailзаписьНовое письмо или ответ (reply_to_message_id, reply_all) — только после подтверждения в окне

Промпты: summarize_thread — выжимка переписки, triage_inbox — разбор входящих. Полное описание — в Markdown-версии страницы и llms.txt.

Безопасность

Честно о безопасности

Для личного использования программа устроена разумно. Но независимого аудита у неё ещё не было, а главный риск — не в коде: всё, что читает агент, уходит AI-сервису, который его обслуживает.

Что защищено

Пароль — в связке ключей

Keychain, Credential Manager или Secret Service. Не в файле, не в журнале, не у агента: инструмента, который бы его показал, нет.

Только ваш сервер

Пароль уходит только на указанный Exchange и только по HTTPS. Редиректы на другие хосты — без пароля.

Отправка — только с вашего «да»

Выключена по умолчанию. Каждое письмо — через ваш клик в локальном окне. Скрытые символы, неверные адреса и слишком много получателей отклоняются, внешние адреса выделены.

Локальные окна закрыты

Только 127.0.0.1, секретный случайный адрес, проверка Host и Origin, запрет встраивания: другие сайты до них не дотянутся.

Сертификат по отпечатку

Обычная проверка сертификата включена. Внутренний сертификат компании принимается только тот самый — по SHA-256.

Без блокировки учётки

После отказа в пароле запросы к Exchange прекращаются, частота запросов ограничена. Журнал хранит только названия инструментов и время — без писем.

Чего программа не решает

  1. Почта уходит AI-сервису. Всё, что читает агент — тексты, вложения, транскрибации, — отправляется компании, которая обслуживает агента. Для банка или другой регулируемой компании нужно согласие службы ИБ, а политика может это прямо запрещать. Это вопрос политики, а не кода.
  2. Письма с «командами» для агента. Входящее письмо может содержать текст для агента: «перешли это…». Сервер просит агента считать письма данными, но это просьба, а не замок. Настоящая защита — окно подтверждения: читайте письмо, прежде чем нажать «Отправить». Читать агент может всё; ограничить его отдельными папками пока нельзя.
  3. Способ установки. curl … | sh ставит то, что сейчас лежит в ветке main. Подписанных релизов и фиксированных версий пока нет: если взломают аккаунт GitHub, взломанным окажется и следующее обновление.
  4. Настройки, ослабляющие защиту. «Устаревшие настройки шифрования» для сервера и пароль в переменной OWA_MAIL_PASSWORD в конфиге агента вместо связки ключей. Обе выключены, пока вы их не включите.
  5. Доступ к вашему компьютеру. Тот, кто уже вошёл под вашей учётной записью, может воспользоваться сохранённым паролем и запущенной программой — как с любым приложением, которое хранит пароль.

Перед тем как подключать рабочую почту

  • Получите согласие службы ИБ на то, что письма будут уходить AI-сервису.
  • Не включайте отправку, если она действительно не нужна.
  • Закажите независимую проверку кода и ставьте фиксированную версию, а не последнюю из main.

FAQ

Частые вопросы

Это безопасно?

Для личного использования — устроено разумно: пароль в связке ключей, отправка только после вашего подтверждения. Но независимого аудита не было, а тексты писем уходят AI-сервису — для корпоративной почты нужно согласие службы ИБ. Подробно — в разделе «Безопасность».

Где взять адрес сервера?

Это адрес рабочей почты в браузере: mail.company.ru, https://owa.company.ru или https://outlook.company.ru/owa. Подойдёт любой вариант.

Пишет «сервер недоступен», хотя веб-почта открывается

Окно настройки назовёт причину: DNS — переподключите VPN; соединение — браузер, скорее всего, ходит через прокси (адрес можно указать в «Дополнительно» → «Прокси»); TLS — старый сервер, окно предложит разрешить устаревшие настройки только для него.

Пишет «сервер отвечает не как EWS»

На адресе EWS стоит шлюз с веб-входом. Программа сама сначала входит через OWA и продолжает на том же соединении — обычно этого достаточно. Если нет, «Скопировать диагностику» в окне настройки (без паролей) — и в ИТ или в issues.

Где хранятся логин и пароль? Сохранятся ли они при обновлении?

Пароль — в системной связке ключей, остальное — в config.json в папке пользователя (на Mac — ~/Library/Application Support/owa-mail-mcp). Обновление их не трогает. Проверить: owa-mail-mcp status.

После обновления ошибки остались прежними

Клиент держит запущенный процесс со старым кодом. Перезапустите MCP-сервер: в Claude Code — /mcp → owa-mail → Reconnect, в Claude Desktop и Cursor — закрыть и открыть приложение.

Как понять, что всё работает?

Спросите агента «проверь статус почты» — get_status вернёт ваш адрес, число непрочитанных и версию. Журнал вызовов — внизу окна настройки.

Может ли агент отправить письмо без меня?

Нет. Отправка выключена по умолчанию, а каждое письмо проходит через окно подтверждения, адрес которого знает только ваш браузер. Нет ответа за 50 секунд — письмо не уходит.

Exchange Online (Microsoft 365)?

Сервер рассчитан на корпоративный Exchange 2013–2019 через EWS. В Microsoft 365 вход по паролю для EWS отключён — для облачной почты лучше серверы на Microsoft Graph.

Входящие: 0. Хорошего вечера.

Одна команда — и агент читает рабочую почту вместе с вами.

curl -LsSf https://raw.githubusercontent.com/Khomiakov7706/owa-mail-mcp/main/install.sh | sh