iMessage MCP
iMessage MCP
Un monorepo de Deno que contiene paquetes para el acceso a iMessage en macOS:
@wyattjoh/imessage - Biblioteca principal para el acceso de solo lectura a la base de datos de iMessage
@wyattjoh/imessage-mcp - Servidor del Model Context Protocol (MCP) para la integración con LLM
Características
Buscar mensajes por contenido de texto, contacto o rango de fechas
Obtener mensajes recientes
Listar todos los chats/conversaciones
Obtener todos los contactos/handles
Recuperar mensajes de chats específicos
Buscar en los Contactos de macOS por nombre con correlación de ID de handle de iMessage
Related MCP server: imessage-mcp
Requisitos
macOS (iMessage solo está disponible en macOS)
Deno 2.x o posterior
Acceso de lectura a
~/Library/Messages/chat.db, o a una base de datos personalizada configurada conIMESSAGE_DB_PATHAcceso de lectura a
~/Library/Application Support/AddressBook/(para la búsqueda de contactos)
Paquetes
@wyattjoh/imessage
Biblioteca principal para acceder a los datos de iMessage:
deno add @wyattjoh/imessageimport { openMessagesDatabase, searchMessages } from "@wyattjoh/imessage";
const db = await openMessagesDatabase();
const results = await searchMessages(db, { query: "hello" });
db.close();@wyattjoh/imessage-mcp
Servidor MCP para la integración con LLM:
# Run directly from JSR
deno run --allow-read --allow-env --allow-sys --allow-ffi jsr:@wyattjoh/imessage-mcp
# Or install globally
deno install --global --allow-read --allow-env --allow-sys --allow-ffi -n imessage-mcp jsr:@wyattjoh/imessage-mcpPara la integración con la aplicación Claude Desktop, añade esto a tu claude_desktop_config.json:
{
"mcpServers": {
"imessage": {
"command": "deno",
"args": [
"run",
"--allow-read",
"--allow-env",
"--allow-sys",
"--allow-ffi",
"jsr:@wyattjoh/imessage-mcp"
]
}
}
}Base de datos de mensajes personalizada
Configura IMESSAGE_DB_PATH para abrir una base de datos SQLite de solo lectura en otra ubicación, como una copia actualizada periódicamente de chat.db:
{
"mcpServers": {
"imessage": {
"command": "deno",
"args": [
"run",
"--allow-read",
"--allow-env=IMESSAGE_DB_PATH",
"--allow-sys",
"--allow-ffi",
"jsr:@wyattjoh/imessage-mcp"
],
"env": {
"IMESSAGE_DB_PATH": "/tmp/imessage-snapshot.sqlite"
}
}
}
}El proceso necesita acceso de lectura al archivo personalizado. Si Deno no tiene permiso para leer IMESSAGE_DB_PATH, o si la variable está vacía o sin definir, la biblioteca usa ~/Library/Messages/chat.db sin solicitar acceso al entorno.
Opción 2: Desde el código fuente
Clona este repositorio
Instala las dependencias:
deno cache src/index.tsEjecuta el servidor:
deno run --allow-read --allow-env --allow-sys --allow-ffi src/index.ts # Or use the task: deno task start
Herramientas disponibles
search_messages - Buscar mensajes con filtros
query(opcional): Texto a buscarhandle(opcional): Número de teléfono o correo electrónico para filtrarstartDate(opcional): Cadena de fecha y hora ISO para la fecha de inicioendDate(opcional): Cadena de fecha y hora ISO para la fecha de finlimit(opcional): Resultados máximos (1-200, predeterminado: 100)offset(opcional): Desplazamiento de paginación (predeterminado: 0)
get_recent_messages - Obtener los mensajes más recientes
limit(opcional): Número de mensajes (1-100, predeterminado: 20)offset(opcional): Desplazamiento de paginación (predeterminado: 0)
get_chats - Listar todas las conversaciones
limit(opcional): Número de chats (1-200, predeterminado: 50)offset(opcional): Desplazamiento de paginación (predeterminado: 0)
get_handles - Obtener todos los contactos/handles
limit(opcional): Número de handles (1-200, predeterminado: 100)offset(opcional): Desplazamiento de paginación (predeterminado: 0)
get_messages_from_chat - Obtener mensajes de un chat específico
chatGuid(obligatorio): El GUID del chatlimit(opcional): Número de mensajes (1-200, predeterminado: 50)offset(opcional): Desplazamiento de paginación (predeterminado: 0)
search_contacts - Buscar en los Contactos de macOS por nombre y obtener números de teléfono
firstName(obligatorio): Nombre a buscar (p. ej., 'John')lastName(opcional): Apellido a buscar (p. ej., 'Smith'). Si se omite, busca en todos los campos de nombrelimit(opcional): Resultados máximos (1-200, predeterminado: 50)offset(opcional): Desplazamiento de paginación (predeterminado: 0)Devuelve información de contacto con números de teléfono y direcciones de correo electrónico que pueden usarse como parámetros de handle
Busca directamente en la base de datos de AddressBook de macOS para obtener un mejor rendimiento y fiabilidad
Ejemplos de paginación
Todas las herramientas ahora admiten paginación mediante los parámetros limit y offset y devuelven metadatos de paginación:
// Get first 20 recent messages
get_recent_messages({ limit: 20, offset: 0 });
// Get next 20 recent messages (page 2)
get_recent_messages({ limit: 20, offset: 20 });
// Get first 10 chats
get_chats({ limit: 10, offset: 0 });
// Get messages 51-100 from a specific chat
get_messages_from_chat({
chatGuid: "iMessage;-;+15551234",
limit: 50,
offset: 50,
});
// Search with pagination
search_messages({
query: "meeting",
limit: 100,
offset: 200,
});
// Search contacts with pagination
search_contacts({
firstName: "John",
lastName: "Smith",
limit: 50,
offset: 0,
});Formato de respuesta con metadatos de paginación
Todas las herramientas paginadas ahora devuelven respuestas con este formato:
{
"data": [
// Array of results (messages, chats, handles, etc.)
],
"pagination": {
"total": 1250, // Total number of results available
"limit": 100, // Current page size
"offset": 200, // Current offset
"hasMore": true, // Whether there are more results to fetch
"page": 3, // Current page number (1-indexed)
"totalPages": 13 // Total number of pages
}
}Estos metadatos te ayudan a:
Conocer el número total de resultados sin tener que obtenerlos todos
Determinar si hay más páginas por obtener (
hasMore)Calcular en qué página estás y cuántas páginas existen
Crear componentes de interfaz de usuario de paginación adecuados
Notas de seguridad
Este servidor se ejecuta con acceso de solo lectura a la base de datos de iMessage
No se pueden enviar ni modificar mensajes
El servidor solo accede a datos locales
Desarrollo
Este es un monorepo con workspace de Deno. Todos los comandos ejecutados desde la raíz afectan a todos los paquetes.
# Clone the repository
git clone https://github.com/wyattjoh/imessage-mcp.git
cd imessage-mcp
# Cache dependencies
deno cache packages/*/mod.ts
# Format all code
deno task fmt
# Lint all packages
deno task lint
# Type check all packages
deno task check
# Run tests
deno task test
# Run MCP server locally
cd packages/imessage-mcp
deno run --allow-read --allow-env --allow-sys --allow-ffi mod.ts
# Publish packages (CI/CD)
deno publishTrabajar en paquetes individuales
# Work on @wyattjoh/imessage
cd packages/imessage
deno test --allow-read --allow-env --allow-ffi --allow-sys=homedir
# Work on @wyattjoh/imessage-mcp
cd packages/imessage-mcp
deno run --allow-read --allow-env --allow-sys --allow-ffi mod.tsLicencia
MIT
This server cannot be installed
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 gradedqualityDmaintenanceA macOS app that provides an MCP server to your Messages, Contacts, and more1,520MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for your iMessage DB. No hosted service.MIT
- 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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
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/wyattjoh/imessage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server