Skip to main content
Glama
lanemiles

lane-mac-mcp

by lanemiles

lane-mac-mcp

Un servidor MCP de iMessage de solo lectura + CLI para macOS. Un único archivo auditable, sin capacidad de envío.

Claude (a través de MCP) o tú (a través de la CLI) pueden listar conversaciones, leer un chat y buscar en el historial de mensajes — y nada más. Solo lectura por construcción: v1 no contiene ningún código de envío. Todo el acceso a datos se delega en el /usr/bin/sqlite3 de Apple con -json -readonly contra ~/Library/Messages/chat.db; los nombres de contacto provienen de consultas de solo lectura contra las bases de datos locales de AddressBook.

Restricciones de diseño

Todo el servidor es server.ts (~600 líneas, comentarios incluidos) para que pueda auditarse de principio a fin — el archivo auditado es el archivo en ejecución, ya que Node ≥ 22.18 ejecuta TypeScript directamente con eliminación nativa de tipos (sin paso de compilación, sin artefactos compilados). Hay exactamente dos dependencias, fijadas mediante package-lock.json: @modelcontextprotocol/sdk y zod. Sin importaciones de red, sin puertos abiertos — solo stdio JSON-RPC, lanzado como proceso hijo por Claude Desktop; las ejecuciones de la CLI son procesos de un solo uso. No hay demonio: Claude Desktop inicia y detiene el servidor con la aplicación (reinicia la aplicación para recargar el código).

Related MCP server: imessage-rich-search

Requisitos

macOS con Messages configurado, Node.js ≥ 22.18 y Acceso completo al disco para el proceso que ejecute el servidor: Terminal (o tu aplicación de terminal) para uso de la CLI, y Claude Desktop para uso de MCP. Concédelo en Ajustes del Sistema → Privacidad y seguridad → Acceso completo al disco y reinicia la aplicación. node server.ts doctor comprueba todo esto y te indica qué falta.

Configuración

git clone <this repo> && cd MacMCPServer
npm install          # installs the two pinned dependencies
node server.ts doctor

Luego añade el servidor al claude_desktop_config.json de Claude Desktop (Ajustes → Desarrollador → Editar configuración):

{
  "mcpServers": {
    "lane-mac": {
      "command": "node",
      "args": ["/Users/you/Desktop/MacMCPServer/server.ts"]
    }
  }
}

Reinicia Claude Desktop. Aparecen tres herramientas: list_chats, read_chat, search_messages.

Uso de la CLI

node server.ts chats                                   # recent chats, names resolved
node server.ts chats --search "mom" --limit 5
node server.ts chats --awaiting-reply-only             # threads where the last word wasn't yours
node server.ts read "Martha" --limit 100               # fuzzy name; ambiguous → candidates
node server.ts read 42 --start-date 2024-01-01 --end-date 2024-06-30 --include-reactions
node server.ts search "dinner" --from "martha"         # last 30 days by default
node server.ts search "dinner" --start-date 2015-01-01 --deep   # older history + rich-text decode
node server.ts doctor

La salida es JSON. search cubre message.text con SQL LIKE; --deep además decodifica mensajes cuyo texto reside solo en el blob attributedBody (escaneo acotado, más lento). Las reacciones Tapback se excluyen en todas partes salvo con --include-reactions.

Peculiaridades de Apple gestionadas

Las marcas de tiempo son nanosegundos desde 2001-01-01 (segundos en filas muy antiguas) — ambas se convierten. El texto de los mensajes suele residir en el blob typedstream attributedBody en lugar de en message.text; se decodifica en JS con la heurística conocida de NSString. Los nombres de contacto se emparejan por teléfono normalizado de los últimos 10 dígitos o correo electrónico en minúsculas en todas las fuentes de AddressBook, degradando con elegancia a números brutos cuando los contactos no se pueden leer.

Postura de privacidad y seguridad

El servidor solo puede leer. Abre las bases de datos con la bandera -readonly de sqlite3, no contiene ninguna ruta de código que escriba en ninguna base de datos ni envíe ningún mensaje, no realiza conexiones de red y no escucha en ningún puerto. La entrada del usuario se escapa en literales de cadena SQL (duplicando '') y los valores numéricos se validan. doctor imprime solo recuentos de filas, nunca contenido de mensajes. Existen anulaciones de entorno (CHAT_DB_PATH, SQLITE_BIN, ADDRESSBOOK_DIR) para que las pruebas nunca toquen datos reales.

Pruebas

npm test

Las pruebas de caja negra generan un chat.db sintético y un fixture de AddressBook (incluyendo un mensaje solo con attributedBody, un tapback y un hilo entrante sin responder) y manejan la CLI real y la interfaz stdio real de MCP como procesos hijos. El desarrollo nunca toca datos reales.

Hoja de ruta (más adelante, no en v1)

Pulido del enriquecimiento de contactos → lectura de Notas mediante osascript → envíos controlados por una variable de entorno SEND_ENABLED más aprobación por llamada.

F
license - not found
Not graded
quality - not tested
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
    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
    A
    quality
    C
    maintenance
    Enables full-text search of macOS iMessages including link preview metadata. Works as an MCP server for Claude Desktop to search your messages locally.
    1
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A read-only MCP server that exposes your iMessage data to Claude Code and Claude Desktop, with automatic contact name resolution.
    3
  • 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

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/lanemiles/lane-mac-mcp'

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