iMessage MCP
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 |
| Conversaciones más recientemente activas (identificadores + hora del último mensaje). |
| Mensajes recientes de una conversación (por identificador o guid). |
| Mensajes más recientes de todas las conversaciones, con atribución de chat. |
| Búsqueda de subcadenas en el texto de los mensajes. |
| Envía un iMessage a un número de teléfono o correo electrónico. (opt-in) |
| 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_RECIPIENTSrestringe 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
instructionsde 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 |
| off |
|
| vacío | Lista de permitidos separada por comas. Vacía significa sin restricción. El formato de teléfono se normaliza, por lo que |
|
| Longitud máxima de mensaje saliente. |
|
| Registro de auditoría en formato JSON-lines. |
|
| 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.txtPython 3.10 o superior. Todo lo siguiente asume que $REPO es la ruta absoluta a tu clon.
La dependencia
mcpestá 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)
Acceso total al disco — sin él, la lectura de
~/Library/Messages/chat.dbestá 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.Automatización → Mensajes — la primera llamada a
send_message/send_to_chatactiva 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]'
pytestEl 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
-shmque 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
attributedBodyen lugar de en la columnatext. El lector los decodifica de forma heurística — cubre mensajes de texto ordinarios pero puede omitir contenido enriquecido. Debido a esto,search_messagessolo coincide con la columnatextsimple.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_unverifiedsignifica 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.
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables 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.10410MIT
- AlicenseAqualityDmaintenanceA 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.6MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.104MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for reading and sending iMessages on macOS. Exposes iMessage history and send capabilities through tools like list_conversations and send_imessage.19MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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