Skip to main content
Glama
tszaks

multimodal-imessage-mcp

by tszaks

Multimodal iMessage MCP

El servidor MCP de iMessage más completo para Claude. Lee conversaciones completas, busca mensajes, ve archivos adjuntos de imágenes, envía mensajes, busca contactos y reacciona a mensajes, todo desde Claude Desktop o Claude Code.

Por Qué Existe

Cada otra herramienta MCP de iMessage consulta la columna text en chat.db de Apple. ¿El problema? En macOS moderno (14+), el 93% de los mensajes se almacenan en attributedBody en lugar de text. Esas herramientas devuelven silenciosamente conversaciones vacías o incompletas.

Este servidor realiza ingeniería inversa del formato binario NSAttributedString de Apple para extraer el contenido real del mensaje, brindándote acceso a tu historial de mensajes completo.

Related MCP server: jons-mcp-imessage

Características

Herramienta

Descripción

read_recent_messages

Lee tus mensajes más recientes en todas las conversaciones

search_messages

Búsqueda de texto completo en todos los mensajes, contactos y nombres de grupo

get_conversation

Obtén un hilo de conversación completo con cualquier contacto (por nombre o número)

list_chats_structured

Obtén IDs de chat, handles, último remitente, vistas previas y estado de grupo como JSON

get_conversation_by_chat_id

Obtén un hilo estructurado confiable por ID de chat

read_receipts release flag

Agrega metadatos de recibos de lectura de mejor esfuerzo para mensajes salientes 1:1 de iMessage/RCS

find_outreach_followups

Encuentra hilos de SMS de divulgación que necesitan revisión de seguimiento

get_attachment

Ve imágenes y archivos de mensajes — Claude puede ver y analizar fotos

send_message

Envía iMessages o SMS/RCS con seguridad de confirmación y respaldo opcional verificado

detect_message_service

Inspecciona un hilo y recomienda iMessage, SMS/RCS o automático antes de enviar

send_message_batch

Previsualiza y envía lotes revisados con un token de aprobación

list_delivery_failures

Lista fallos de envío de burbuja roja, envíos pendientes y recuperaciones de SMS/RCS

delete_messages

Elimina filas de mensajes locales exactas con limpieza de DB con respaldo previo

delete_threads

Previsualiza y elimina hilos locales completos con un token de aprobación de lote exacto

edit_message

Edita experimentalmente un iMessage saliente reciente a través de la automatización de la UI de Mensajes

undo_send_message

Deshace experimentalmente el envío de un iMessage saliente reciente a través de la automatización de la UI de Mensajes

list_recent_chats

Ve tus conversaciones más activas

lookup_contact

Encuentra números de teléfono y correos electrónicos de tus Contactos

react_to_message

Agrega reacciones tapback a los mensajes

Multimodal: Claude Puede Ver Tus Fotos

Cuando usas get_attachment, las imágenes se devuelven como bloques de contenido base64 que Claude puede mirar realmente. Las fotos HEIC (predeterminado de iPhone) se convierten automáticamente a JPEG. Esto significa que Claude puede:

  • Describir lo que hay en una foto que alguien te envió

  • Leer texto/capturas de pantalla de imágenes

  • Analizar contenido visual en tus conversaciones

Requisitos

  • macOS (esto lee la base de datos local de iMessage)

  • Node.js >= 18 y < 26. Se recomienda Node 24 LTS porque la dependencia SQLite nativa bloqueada no es compatible con Node 26.

  • Acceso completo al disco concedido a tu aplicación de terminal (Configuración del Sistema > Privacidad y Seguridad > Acceso completo al disco). Esto cubre tanto la base de datos de iMessage como la base de datos de la Libreta de Direcciones utilizada para la resolución de nombres de contacto — no es necesario tener la aplicación Contactos abierta.

Instalación

git clone https://github.com/tszaks/imessage-mcp.git
cd imessage-mcp
npm install

Configuración

Claude Desktop

Agrega a tu ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "imessage": {
      "command": "/opt/homebrew/bin/node",
      "args": ["/path/to/imessage-mcp/index.js"]
    }
  }
}

Importante: Usa la ruta completa a tu binario de Node.js (ej., /opt/homebrew/bin/node), no solo node. Las aplicaciones de escritorio de macOS no heredan el PATH de tu shell, y usar un comando node simple a menudo se resuelve a un Node del sistema más antiguo que causa fallos de módulos nativos.

Claude Code

Agrega a tu .mcp.json:

{
  "mcpServers": {
    "imessage": {
      "command": "node",
      "args": ["/path/to/imessage-mcp/index.js"]
    }
  }
}

En Claude Code, node normalmente se resuelve correctamente ya que hereda el entorno de tu shell.

Ejemplos de Uso

"Muéstrame mis mensajes recientes" — lee tus últimas conversaciones

"¿Qué me envió Mamá hoy por mensaje?" — resuelve "Mamá" a un número de teléfono a través de tu Libreta de Direcciones, obtiene la conversación

"Busca en mis mensajes 'confirmación de vuelo'" — búsqueda de texto completo en todos los mensajes

"Encuentra prospectos de divulgación de los últimos 7 días que respondieron y necesitan seguimiento" — devuelve candidatos de divulgación estructurados con etiquetas de riesgo

"Previsualiza este lote de 10 textos de seguimiento" — devuelve destinatarios exactos, mensajes, advertencias y un token de aprobación antes de que se envíe algo

"Muestra fallos de entrega recientes" — informa mensajes salientes que Mensajes marcó como fallidos o pendientes, incluyendo si un envío posterior de SMS/RCS recuperó el hilo

"Muéstrame la foto del mensaje 538516" — devuelve la imagen real para que Claude la vea y describa

"Envía 'Llego 10 min tarde' al +1234567890" — envía un iMessage (requiere confirmación)

Banderas de Versión

Las banderas de versión son opcionales a través del entorno del servidor MCP:

{
  "mcpServers": {
    "imessage": {
      "command": "node",
      "args": ["/path/to/imessage-mcp/index.js"],
      "env": {
        "IMESSAGE_MCP_RELEASES": "auto_sms_fallback,cleanup_failed_imessage_after_sms_fallback,message_mutation_tools,experimental_message_ui_actions,read_receipts"
      }
    }
  }
}

Bandera

Comportamiento

auto_sms_fallback

send_message y send_message_batch verifican filas salientes recientes después de un envío automático de iMessage. Si Mensajes marca la burbuja azul como fallida y el destinatario está basado en teléfono, el MCP reintenta a través de SMS/RCS.

cleanup_failed_imessage_after_sms_fallback

Después de que auto_sms_fallback reintente exitosamente por SMS/RCS, el MCP realiza un pase de limpieza de UI de mejor esfuerzo para eliminar la burbuja azul de iMessage fallida e informa si la limpieza fue verificada. Esto nunca muta chat.db directamente.

message_mutation_tools

Expone delete_messages y delete_threads. Estas herramientas hacen una copia de seguridad con marca de tiempo de chat.db, chat.db-wal y chat.db-shm antes de la limpieza directa de la base de datos local de Mensajes. delete_messages elimina IDs de fila de mensajes exactos sin confirmación. delete_threads requiere un token de aprobación de lote exacto para la lista completa de IDs de chat solicitada.

experimental_message_ui_actions

Expone edit_message y undo_send_message. Estas herramientas usan automatización de la UI de Mensajes, validan que el objetivo sea un iMessage saliente reciente y verifican contra chat.db después de la acción. Fallan claramente cuando Mensajes no expone la acción del menú o el mensaje está fuera de la ventana permitida de Apple.

read_receipts

Agrega campos de recibos de lectura a los resultados de conversación estructurados y sugerencias de estado de lectura a la salida de texto de get_conversation. Soporta filas salientes 1:1 de iMessage y RCS cuando macOS ha sincronizado date_read. SMS, chats grupales y mensajes entrantes se informan como no soportados. date_read faltante significa no leído o no disponible, lo que también puede significar que los recibos están deshabilitados o no sincronizados.

Herramientas de Mutación

delete_messages acepta ROWIDs de mensajes exactos:

{ "message_ids": ["538516", "538517"] }

No requiere confirmación. Informa IDs eliminados, IDs faltantes, ubicación de la copia de seguridad y cualquier fila restante encontrada durante la verificación.

delete_threads es un flujo de lote exacto de dos pasos:

{ "chat_ids": [101, 102] }

La vista previa devuelve un approval_token para esa lista ordenada y los metadatos del hilo mostrados en la vista previa. Para eliminar, envía los mismos chat_ids ordenados, confirm: true y ese token:

{ "chat_ids": [101, 102], "confirm": true, "approval_token": "..." }

Cambiar el orden, la lista o el token hace que la solicitud falle.

edit_message y undo_send_message son experimentales porque Mensajes no expone comandos AppleScript de primera clase para esas acciones. Abren la conversación, encuentran la burbuja saliente visible por fragmento de texto, usan el menú contextual y luego verifican el resultado. Están destinados a afectar el comportamiento real de Mensajes, no ediciones falsas de solo DB local.

Ajuste opcional:

IMESSAGE_MCP_SEND_VERIFY_DELAY_MS=2500

Esto controla cuánto tiempo espera el MCP antes de verificar la base de datos local de Mensajes para la nueva fila saliente.

Cómo Funciona

La Solución attributedBody

La base de datos de iMessage de Apple (~/Library/Messages/chat.db) tiene dos columnas para el contenido del mensaje:

  • text — la columna de texto plano heredada (usada por versiones anteriores de macOS)

  • attributedBody — un blob NSAttributedString serializado (usado por macOS 14+)

En macOS moderno, Apple migró gradualmente el almacenamiento de mensajes a attributedBody para soportar texto enriquecido, menciones y formato. La columna text es cada vez más solo un respaldo heredado que a menudo es NULL.

Este servidor detecta mensajes con texto NULL y extrae el contenido de attributedBody analizando el formato binario NSTypedStream:

  1. Encuentra el marcador NSString en el blob binario

  2. Lee más allá de los bytes de encabezado de tipo (01 94 84 01 2b)

  3. Decodifica el prefijo de longitud (un solo byte para mensajes cortos, varios bytes para los más largos)

  4. Extrae la carga útil de texto UTF-8

Manejo de Archivos Adjuntos

Los archivos adjuntos de iMessage se almacenan en ~/Library/Messages/Attachments/ con rutas rastreadas en la tabla attachment. La herramienta get_attachment:

  1. Consulta los metadatos del archivo adjunto para un ID de mensaje dado

  2. Resuelve la ruta ~/Library/Messages/... a una ruta absoluta

  3. Para JPEG/PNG/GIF/WebP: lee el archivo y devuelve el contenido de la imagen en base64

  4. Para HEIC (predeterminado de iPhone): convierte a JPEG usando sips de macOS antes de devolverlo

  5. Para otros archivos: devuelve metadatos y la ruta del archivo

Solución de Problemas

"No se pudo abrir la base de datos de iMessage" Concede Acceso completo al disco a tu aplicación de terminal: Configuración del Sistema > Privacidad y Seguridad > Acceso completo al disco.

La búsqueda de contactos no devuelve resultados La resolución de contactos lee las bases de datos SQLite de la Libreta de Direcciones de macOS directamente (no se necesita la aplicación Contactos). Asegúrate de que el Acceso completo al disco esté concedido. Si se acaba de agregar un contacto, reinicia el servidor MCP para actualizar la caché.

Fallo de módulo nativo / "NODE_MODULE_VERSION mismatch" Reconstruye las dependencias nativas: npm rebuild. Esto sucede cuando cambia la versión de tu Node.js. También asegúrate de que tu configuración de Claude Desktop use la ruta completa a node (ver Configuración arriba).

Faltan mensajes de una conversación Este es exactamente el error que este servidor soluciona. Asegúrate de estar ejecutando la última versión que incluye la extracción de attributedBody.

Licencia

MIT

Inicio Rápido TL;DR

npm install
node index.js

Luego añade el servidor a la configuración de tu cliente MCP y concede Acceso al disco completo a tu aplicación de terminal.

Cómo funciona (TL;DR)

  • Lee la base de datos SQLite de iMessage de macOS

  • Decodifica payloads modernos de attributedBody para el texto completo del mensaje

  • Expone herramientas de conversación/búsqueda/adjuntos mediante MCP

  • Utiliza AppleScript para acciones de envío/reacción de mensajes con confirmaciones explícitas

Copia rápida para LLM

Usa el botón de copiar en este bloque de código en GitHub.

Repo: imessage-mcp
Goal: Full iMessage MCP including attachments and send/reaction actions.
Setup:
1) npm install
2) Grant Full Disk Access to terminal app
3) Add MCP config entry for index.js
Use:
- read_recent_messages, search_messages, get_conversation
- list_chats_structured, get_conversation_by_chat_id, find_outreach_followups
- get_attachment for image/file analysis
- send_message/send_message_batch/react_to_message with explicit confirm flag
How it works:
- SQLite + attributedBody decoding + AppleScript actions wrapped as MCP tools
Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
3Releases (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.
    207
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to read iMessage history and send messages on macOS. Supports conversation listing, message search with keyword and semantic modes, contact lookup, and sending messages to existing conversations.
    13
    11
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables reading, searching, and sending iMessages on macOS by accessing the local messages database and utilizing AppleScript. Users can list conversations, search message history, and send messages to individuals or group chats directly through the Model Context Protocol.
    6

View all related MCP servers

Related MCP Connectors

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

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

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

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