Skip to main content
Glama
st-designs

MailSyncMCP

by st-designs

MailSyncMCP

Ищите, читайте и отвечайте на письма во всех аккаунтах Apple Mail прямо из Claude, не передавая ни одного пароля.

Работает с Gmail, Microsoft 365, iCloud и IMAP на собственном домене одинаково, потому что читает то, что Mail уже синхронизировал, а не общается с каждым провайдером. Полностью работает на вашем Mac. Ничего никуда не загружается.

Почему это работает именно так

Apple Mail уже синхронизирует все ваши аккаунты и хранит их учётные данные в Keychain, обновляя их самостоятельно. Этот сервер читает локальное хранилище Mail и просит Mail составить письмо. Он никогда не видит пароль или токен, не хранит их и не запускает повторную аутентификацию. Добавление аккаунта означает добавление его в Mail; здесь ничего не меняется.

Альтернатива — общение с каждым провайдером напрямую — требует проекта Google Cloud, регистрации приложения Azure и refresh-токена для каждого аккаунта. Хуже того, рабочие и учебные аккаунты обычно заблокированы так, что стороннему OAuth-приложению требуется согласие администратора, которое часто просто не дают. Чтение того, что Mail уже синхронизировал, обходит всё это.

Related MCP server: macos-mail-mcp

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

Чтение и поиск бесплатны. Отправка — нет.

  1. Никаких учётных данных. Нечего утекать или истекать.

  2. Двухфазная фиксация. Инструменты prepare_* проверяют запрос, отображают полный предпросмотр и возвращают одноразовый токен, который истекает через пять минут. Они ничего не меняют. commit_action(token) — единственный инструмент, который действует, и он принимает только токен и ничего больше, поэтому отправленное сообщение всегда совпадает с показанным.

  3. Запрос разрешения клиента при commit_action.

  4. Защита от недоверенного содержимого. Тела сообщений возвращаются обёрнутыми и помеченными как данные. Поскольку для отправки нужен токен, который может создать только отрендеренный предпросмотр, инструкция, спрятанная в письме, не может вызвать отправку почты.

  5. Журнал аудита в ~/.local/share/mailsync/audit.jsonl, только добавление.

Сервер говорит только через stdio. Нет ни слушателя, ни демона, ни таймера, поэтому он действует только при вызове инструмента из чат-сессии.

Установите MAILSYNC_READ_ONLY=1, чтобы полностью отключить составление писем на время сессии.

Об AppleScript

Каждый скрипт в applescript/ — это статический файл, который получает значения через argv. Текст скрипта никогда не генерируется, поэтому кавычки, обратные слэши, переводы строк и синтаксис AppleScript в письме выживают как литеральные данные. tests/test_applescript_safety.py проверяет это на враждебных полезных нагрузках. Другие MCP-серверы для Apple Mail конкатенируют данные сообщения в исходный код скрипта и защищают его функцией экранирования; у этого нет поверхности для инъекций, которую нужно экранировать.

Инструменты

Чтение: list_accounts, search_mail, get_message, get_thread, list_attachments, save_attachment, mailbox_stats, open_in_mail, refresh_index

Составление: prepare_send, prepare_reply, prepare_forward, list_pending, commit_action

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

Ссылки обратно в Mail

Каждое возвращённое сообщение несёт URL message://, построенный из его RFC-822 Message-ID. Клик по нему открывает это сообщение в Apple Mail, поэтому ответы в чате остаются прослеживаемыми до реального объекта. Сообщения, которые Mail не сохранил локально, не имеют Message-ID и поэтому не получают ссылку.

Чат-клиенты очищают цели ссылок до разрешённого списка схем (http, https, mailto), поэтому ссылка message:// отображается как мёртвый текст, а не как кликабельный элемент. Инструмент open_in_mail существует именно для этого: попросите открыть сообщение, и оно попадёт прямо в Mail. URL всё равно печатается, чтобы его можно было скопировать или использовать вне чата.

open_in_mail принимает whole_thread=True, но Mail открывает каждое сообщение в отдельном окне: нет скриптуемого потокового представления. set selected messages в основном просмотрщике тестировался многократно и не работает на macOS 26 в режиме разговора, возвращая объекты, которые мост AppleScript не может преобразовать обратно. get_thread — лучший способ прочитать переписку.

Ссылка всегда открывает одно сообщение, а не разговор вокруг него. Mail регистрирует только три схемы URL (mailto, message, mail-pref-pane), и ни одна из них не адресует поток. Управление собственным потоковым списком Mail через AppleScript пробовали и отказались: на macOS 26 set selected messages либо выбирает не тот разговор, либо сообщает о пустом выборе — и в почтовом ящике Gmail All Mail, и в обычном INBOX. Вместо того чтобы выпускать это, get_message перечисляет остальную часть разговора со ссылкой на каждое сообщение, а get_thread отображает весь обмен по порядку.

Установка

python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/python -m mailsync --build-index

Регистрация

Claude Code и Claude for Desktop — это отдельные приложения с отдельными файлами конфигурации. Регистрация в одном ничего не даёт для другого:

Поверхность

Файл конфигурации

Claude Code

~/.claude.json, верхний уровень mcpServers

Claude for Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

Добавьте ту же запись в тот, который используете, указав на Python из venv:

{
  "mcpServers": {
    "mailsync": {
      "command": "/absolute/path/to/Apple-Mail-Sync-MCP/.venv/bin/python",
      "args": ["-m", "mailsync"]
    }
  }
}

Поскольку пакет установлен в venv с помощью pip install -e ., запись не зависит от рабочей директории. После этого закройте и снова откройте приложение.

Локальный сервер, подобный этому, работает как дочерний процесс на вашем Mac, поэтому он доступен только приложениям, работающим там. claude.ai в браузере не может до него добраться.

Каждая поверхность запускает свой собственный процесс ОС; stdio не может разделить один. Это не разветвляет настройку, потому что обе записи запускают один и тот же установленный пакет, и каждый процесс читает и пишет в один и тот же индекс в ~/.local/share/mailsync/mailsync.db. Измените код один раз, и оба подхватят его при следующем перезапуске. Одновременный доступ безопасен: индекс работает в режиме WAL с таймаутом занятости, протестирован с пятью читателями и двумя одновременными пересборками.

Полный доступ к диску

~/Library/Mail защищён полным доступом к диску, и MCP-сервер наследует разрешение приложения, которое его запустило. Claude Code и Claude for Desktop — это отдельные клиенты TCC, поэтому один может работать, а другой — нет. Предоставьте его в Системные настройки > Конфиденциальность и безопасность > Полный доступ к диску, затем полностью закройте и снова откройте приложение.

Без него поиск и чтение всё равно работают из локального индекса, который находится вне защищённой области. Только refresh_index не работает, поэтому данные устаревают. Инструмент говорит об этом прямо, а не терпит непонятную ошибку.

Для составления писем дополнительно требуется запущенный Mail.app и разрешение Automation, о котором macOS запрашивает при первом использовании.

Частичные сообщения

Mail хранит копии сообщений только с заголовками, если они не были полностью загружены: примерно четверть из них в типичном почтовом ящике. Они остаются доступными для поиска по отправителю, теме, дате и любому предварительному тексту, который Mail сохранил. get_message принимает fetch_if_partial=True, чтобы попросить Mail предоставить полный исходный код, что заставляет его загрузить тело с сервера. Для этого требуется работающий Mail, поэтому это не автоматически, а по запросу.

Как работает индекс

~/.local/share/mailsync/mailsync.db содержит индекс FTS5 по телам сообщений, извлечённым из ~/Library/Mail/V10/**/*.emlx, привязанный к собственному Envelope Index Mail. База данных Mail копируется в сторону перед чтением и никогда не открывается для записи и не блокируется.

Первая сборка занимает около минуты для 12 800 сообщений. После этого обновление занимает одну-две секунды, поскольку повторно разбираются только файлы, у которых изменилось время модификации. Поиск возвращается за однозначные или низкие десятки миллисекунд.

Тела доступны для поиска примерно для 70 процентов сообщений, которые Mail загрузил полностью. Остальные доступны для поиска по отправителю, теме, дате и собственному предварительному тексту Mail, и get_message использует их в качестве запасного варианта. Покрытие растёт само по мере синхронизации Mail.

Обслуживание

Схема Envelope Index от Apple не документирована и может измениться в обновлении macOS. Всё это ограничено mailsync/index.py, и индекс тел можно пересобрать из файлов .emlx в любое время с помощью --build-index --full.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    A
    maintenance
    MCP server that gives Claude and other MCP hosts full access to Mail.app on macOS — search, read, send, reply, flag, move, and more across all accounts configured in Mail.app.
    24
    89
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server for Apple Mail that enables Claude to read, search, manage, and compose emails via AppleScript.
    20
    383
    1
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    MCP server that connects Claude to iCloud Mail, enabling reading, searching, sending, and organizing emails via IMAP/SMTP.
    14
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that provides programmatic access to Apple Mail, enabling AI assistants like Claude to read, send, search, and manage emails on macOS.
    25
    MIT

View all related MCP servers

Related MCP Connectors

  • Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.

  • Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

View all MCP Connectors

Latest Blog Posts

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/st-designs/Apple-Mail-Sync-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server