Skip to main content
Glama
tarun101

iMessage MCP

by tarun101

iMessage MCP

Локальный MCP сервер, который читает историю сообщений macOS и отправляет новые iMessage. Всё работает локально — ничего не покидает ваш компьютер.

Инструменты

Инструмент

Что делает

list_chats

Недавние активные переписки (идентификаторы + время последнего сообщения).

get_messages

Последние сообщения из одной переписки (по идентификатору или guid).

get_recent_messages

Новейшие сообщения из всех переписок с указанием чата.

search_messages

Поиск подстроки в тексте сообщений.

send_message

Отправка iMessage на номер телефона или email. (по запросу)

send_to_chat

Отправка в существующий чат по guid, для групповых чатов. (по запросу)

Инструменты чтения ограничены 200 строками за вызов и не включают тапбэки. Два инструмента отправки вообще не регистрируются, если не задано IMESSAGE_MCP_ALLOW_SEND=1, поэтому хост, настроенный только на чтение, не сможет отправить сообщение даже случайно.

Related MCP server: imessage-mcp

Модель безопасности

Чтение сообщений и отправка от вашего имени — это очень разные возможности, и объединение их в одной сессии агента — самая рискованная часть. Любой, кто может вам написать, может поместить текст в get_recent_messages, поэтому тела сообщений — это управляемый атакующим ввод, находящийся рядом с инструментом, который отправляет письма от вашего имени.

Что делает этот сервер для защиты:

  • Инструменты отправки по умолчанию отключены и должны быть включены для каждого хоста отдельно.

  • IMESSAGE_MCP_ALLOWED_RECIPIENTS ограничивает, кому вообще можно писать.

  • Каждая попытка отправки и её результат записываются в локальный журнал аудита до и после вызова AppleScript, поэтому отправка не может произойти без записи.

  • Исходящие сообщения ограничены по длине и не могут быть пустыми.

  • Сервер рекламирует MCP instructions и аннотации инструментов (readOnlyHint, destructiveHint), чтобы хосты могли запрашивать подтверждение для опасных.

Чего он не делает: он не может помешать модели, прочитавшей вредоносное сообщение, решить действовать на его основе. Если вы включаете отправку, оставьте запрос подтверждения для инструментов отправки.

Конфигурация

Всё опционально. Задавайте их в конфиге MCP-хоста, а не в профиле оболочки.

Переменная

Значение по умолчанию

Описание

IMESSAGE_MCP_ALLOW_SEND

выкл.

1 регистрирует два инструмента отправки.

IMESSAGE_MCP_ALLOWED_RECIPIENTS

пусто

Разрешённый список через запятую. Пусто — без ограничений. Формат номера нормализуется, поэтому +15551234567 и (555) 123-4567 совпадают.

IMESSAGE_MCP_MAX_CHARS

2000

Максимальная длина исходящего сообщения.

IMESSAGE_MCP_SEND_LOG

~/.imessage-mcp/sent.log

Журнал аудита в формате JSON-lines.

IMESSAGE_MCP_DB

~/Library/Messages/chat.db

Переопределить путь к базе данных.

Установка

git clone https://github.com/tarun101/imessage-mcp.git
cd imessage-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Python 3.10 или новее. Всё ниже предполагает, что $REPO — это абсолютный путь к вашей копии репозитория.

Зависимость mcp зафиксирована на версии <2. В SDK 2.x удалён mcp.server.fastmcp, который импортирует этот сервер; установка без фиксации версии подтянет 2.x и упадёт при запуске.

Разрешения macOS (оба обязательны)

  1. Полный доступ к диску — чтение ~/Library/Messages/chat.db без него заблокировано. Добавьте процесс, запускающий сервер (Terminal, iTerm или ваше MCP-приложение), в System Settings → Privacy & Security → Full Disk Access, затем полностью закройте и снова откройте его.

  2. Automation → Messages — первый вызов send_message/send_to_chat вызовет одноразовый запрос разрешения на управление Messages.app. Разрешите.

Быстрая проверка

source .venv/bin/activate
python -c "import server; print(server.list_chats(5))"

Тесты

pip install -e '.[dev]'
pytest

Набор тестов создаёт синтетическую chat.db со схемой Apple, поэтому работает везде — не нужен ни Mac, ни доступ к вашей реальной истории сообщений.

Регистрация в MCP-хосте

Codex

codex mcp add imessage --env IMESSAGE_MCP_ALLOW_SEND=1 -- \
  "$REPO/.venv/bin/python" "$REPO/server.py"

Или в ~/.codex/config.toml, что также позволяет запрашивать подтверждение для каждого инструмента:

[mcp_servers.imessage]
command = "/absolute/path/to/imessage-mcp/.venv/bin/python"
args = ["/absolute/path/to/imessage-mcp/server.py"]
default_tools_approval_mode = "auto"

[mcp_servers.imessage.env]
IMESSAGE_MCP_ALLOW_SEND = "1"

[mcp_servers.imessage.tools.send_message]
approval_mode = "prompt"

[mcp_servers.imessage.tools.send_to_chat]
approval_mode = "prompt"

Проверьте с помощью /mcp в TUI Codex.

Claude Code (CLI)

claude mcp add imessage -- "$REPO/.venv/bin/python" "$REPO/server.py"

Claude Desktop / универсальный MCP-конфиг

{
  "mcpServers": {
    "imessage": {
      "command": "/absolute/path/to/imessage-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/imessage-mcp/server.py"]
    }
  }
}

Используйте абсолютные пути, чтобы использовался Python из venv (с установленным mcp).

Примечания и ограничения

  • Доступ к БД только для чтения. chat.db открывается с mode=ro; сервер никогда не пишет в ваше хранилище сообщений. Отправка идёт исключительно через Messages.app.

  • Резервный режим WAL. chat.db — это WAL-база, и дескриптор только для чтения не может создать нужный файл -shm. Когда прямое открытие не удаётся — что происходит, когда Messages.app не запущен, — сервер прозрачно читает вместо этого временную копию-снимок, обновляемую при изменении исходника.

  • attributedBody. В новых сообщениях тело хранится в бинарном attributedBody-блобе, а не в колонке text. Читатель декодирует их эвристически — этого достаточно для обычных текстовых сообщений, но богатый контент может быть утерян. Поэтому search_messages ищет только по обычной колонке text.

  • Метки времени возвращаются в формате ISO-8601 UTC.

  • Отправка проверяется, а не предполагается. AppleScript возвращает управление до доставки, поэтому после отправки сервер опрашивает chat.db на предмет исходящей строки. Результат sent_unverified означает, что Messages.app принял сообщение, но оно ещё не дошло — обычно это задержка, а не сбой.

  • Отправка реальна. Эти инструменты отправляют настоящие сообщения, которые невозможно отозвать.

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
    Not graded
    quality
    D
    maintenance
    Enables reading, searching, and sending iMessages directly from MCP-compatible clients by accessing the local macOS iMessage database, supporting conversations, attachments, and both individual and group chats.
    104
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A local MCP server that enables reading iMessage conversations and sending new messages through Claude Desktop. It provides secure, read-only access to your Mac's iMessage database and AppleScript-based message sending capabilities.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.
    104
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for reading and sending iMessages on macOS. Exposes iMessage history and send capabilities through tools like list_conversations and send_imessage.
    19
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay

  • Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

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/tarun101/imessage-mcp'

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