Skip to main content
Glama
tarun101

iMessage MCP

by tarun101

iMessage MCP

Un servidor MCP local que lee tu historial de Mensajes de macOS y envía nuevos iMessages. Todo se ejecuta localmente — nada sale de tu máquina.

Herramientas

Herramienta

Qué hace

list_chats

Conversaciones más recientemente activas (identificadores + hora del último mensaje).

get_messages

Mensajes recientes de una conversación (por identificador o guid).

get_recent_messages

Mensajes más recientes de todas las conversaciones, con atribución de chat.

search_messages

Búsqueda de subcadenas en el texto de los mensajes.

send_message

Envía un iMessage a un número de teléfono o correo electrónico. (opt-in)

send_to_chat

Envía a un chat existente por guid, para chats de grupo. (opt-in)

Las herramientas de lectura están limitadas a 200 filas por llamada y excluyen los tapbacks. Las dos herramientas de envío no se registran en absoluto a menos que se establezca IMESSAGE_MCP_ALLOW_SEND=1, por lo que un host configurado para lectura no puede enviar ni siquiera por accidente.

Related MCP server: imessage-mcp

Modelo de seguridad

Leer tus mensajes y enviar en tu nombre son poderes muy diferentes, y poner ambos en una misma sesión de agente es la parte arriesgada. Cualquiera que pueda enviarte un mensaje de texto puede introducir texto en get_recent_messages, por lo que los cuerpos de los mensajes son entrada controlada por un atacante que se encuentra junto a una herramienta que envía correos en tu nombre.

Lo que este servidor hace al respecto:

  • Las herramientas de envío están desactivadas por defecto y deben activarse por host.

  • IMESSAGE_MCP_ALLOWED_RECIPIENTS restringe a quién se puede enviar mensajes en absoluto.

  • Cada intento de envío y su resultado se añade a un registro de auditoría local antes y después de la llamada a AppleScript, de modo que un envío no puede ocurrir sin dejar constancia.

  • Los mensajes salientes tienen un límite de longitud y no pueden estar vacíos.

  • El servidor anuncia instructions de MCP y anotaciones por herramienta (readOnlyHint, destructiveHint) para que los hosts puedan avisar sobre las peligrosas.

Lo que no hace: no puede impedir que un modelo que lee un mensaje malicioso decida actuar sobre él. Si habilitas el envío, mantén un aviso de aprobación en las herramientas de envío.

Configuración

Todo opcional. Configúralas en la configuración de tu host MCP, no en tu perfil de shell.

Variable

Default

Significado

IMESSAGE_MCP_ALLOW_SEND

off

1 registra las dos herramientas de envío.

IMESSAGE_MCP_ALLOWED_RECIPIENTS

vacío

Lista de permitidos separada por comas. Vacía significa sin restricción. El formato de teléfono se normaliza, por lo que +15551234567 y (555) 123-4567 coinciden.

IMESSAGE_MCP_MAX_CHARS

2000

Longitud máxima de mensaje saliente.

IMESSAGE_MCP_SEND_LOG

~/.imessage-mcp/sent.log

Registro de auditoría en formato JSON-lines.

IMESSAGE_MCP_DB

~/Library/Messages/chat.db

Sobrescribe la ruta de la base de datos.

Instalación

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 o superior. Todo lo siguiente asume que $REPO es la ruta absoluta a tu clon.

La dependencia mcp está fijada a <2. El SDK 2.x eliminó mcp.server.fastmcp, que este servidor importa; una instalación sin fijar recoge la 2.x y falla al iniciar.

Permisos de macOS (ambos necesarios)

  1. Acceso total al disco — sin él, la lectura de ~/Library/Messages/chat.db está bloqueada. Añade el proceso que ejecute el servidor (Terminal, iTerm o tu aplicación host MCP) en Ajustes del sistema → Privacidad y seguridad → Acceso total al disco y, a continuación, ciérralo y vuelve a abrirlo por completo.

  2. Automatización → Mensajes — la primera llamada a send_message/send_to_chat activa un aviso de permiso único para controlar Messages.app. Permítelo.

Prueba rápida

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

Pruebas

pip install -e '.[dev]'
pytest

El conjunto de pruebas construye un chat.db sintético con el esquema de Apple, por lo que se ejecuta en cualquier lugar — no se necesita un Mac ni acceso a tu historial de mensajes real.

Registro con un host MCP

Codex

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

O en ~/.codex/config.toml, que también te permite exigir aprobación por herramienta:

[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"

Verifícalo con /mcp dentro de la TUI de Codex.

Claude Code (CLI)

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

Claude Desktop / configuración MCP genérica

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

Usa rutas absolutas para que se utilice el Python del venv (con mcp instalado).

Notas y limitaciones

  • Acceso de solo lectura a la base de datos. chat.db se abre con mode=ro; el servidor nunca escribe en tu almacén de mensajes. Los envíos se realizan exclusivamente a través de Messages.app.

  • Respaldo WAL. chat.db es una base de datos WAL, y un identificador de solo lectura no puede crear el archivo -shm que necesita. Cuando una apertura directa falla — lo que ocurre cuando Messages.app no está en ejecución — el servidor lee de forma transparente una copia instantánea temporal en su lugar, actualizada cada vez que cambia la fuente.

  • attributedBody. Los mensajes más recientes almacenan su cuerpo en un blob binario attributedBody en lugar de en la columna text. El lector los decodifica de forma heurística — cubre mensajes de texto ordinarios pero puede omitir contenido enriquecido. Debido a esto, search_messages solo coincide con la columna text simple.

  • Las marcas de tiempo se devuelven en formato ISO-8601 UTC.

  • Los envíos se verifican, no se asumen. AppleScript devuelve antes de la entrega, por lo que después de enviar, el servidor consulta chat.db en busca de la fila saliente. Un resultado de sent_unverified significa que Messages.app lo aceptó pero aún no ha llegado — normalmente es retraso más que un fallo.

  • El envío es real. Estas herramientas envían mensajes reales que no se pueden recuperar.

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