iMessage MCP
iMessage MCP
Монорепозиторий Deno, содержащий пакеты для доступа к iMessage на macOS:
@wyattjoh/imessage — Основная библиотека для доступа к базе данных iMessage в режиме только для чтения
@wyattjoh/imessage-mcp — Сервер Model Context Protocol (MCP) для интеграции с LLM
Возможности
Поиск сообщений по тексту, контакту или диапазону дат
Получение последних сообщений
Список всех чатов и диалогов
Получение всех контактов/handles
Получение сообщений из конкретных чатов
Поиск контактов macOS по имени с сопоставлением с идентификатором handle из iMessage
Related MCP server: imessage-mcp
Требования
macOS (iMessage доступен только в macOS)
Deno 2.x или новее
Доступ на чтение к
~/Library/Messages/chat.dbили к пользовательской базе данных, указанной черезIMESSAGE_DB_PATHДоступ на чтение к
~/Library/Application Support/AddressBook/(для поиска контактов)
Пакеты
@wyattjoh/imessage
Основная библиотека для доступа к данным 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
MCP-сервер для интеграции с 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-mcpДля интеграции с приложением Claude Desktop добавьте это в ваш claude_desktop_config.json:
{
"mcpServers": {
"imessage": {
"command": "deno",
"args": [
"run",
"--allow-read",
"--allow-env",
"--allow-sys",
"--allow-ffi",
"jsr:@wyattjoh/imessage-mcp"
]
}
}
}Пользовательская база данных сообщений
Установите переменную IMESSAGE_DB_PATH, чтобы открыть базу данных SQLite в другом месте — например, периодически обновляемую копию 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"
}
}
}
}Процессу требуется доступ на чтение к пользовательскому файлу. Если у Deno нет разрешения на чтение переменной IMESSAGE_DB_PATH или если переменная пуста или не задана, библиотека использует ~/Library/Messages/chat.db без запроса на доступ к окружению.
Вариант 2: Из исходного кода
Клонируйте этот репозиторий
Установите зависимости:
deno cache src/index.tsЗапустите сервер:
deno run --allow-read --allow-env --allow-sys --allow-ffi src/index.ts # Or use the task: deno task start
Доступные инструменты
search_messages — Поиск сообщений с фильтрами
query(необязательно): текст для поискаhandle(необязательно): номер телефона или email для фильтрацииstartDate(необязательно): строка даты и времени ISO для начальной датыendDate(необязательно): строка даты и времени ISO для конечной датыlimit(необязательно): максимальное количество результатов (1-200, по умолчанию: 100)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)
get_recent_messages — Получение последних сообщений
limit(необязательно): количество сообщений (1-100, по умолчанию: 20)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)
get_chats — Список всех разговоров
limit(необязательно): количество чатов (1-200, по умолчанию: 50)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)
get_handles — Получение всех контактов/handles
limit(необязательно): количество handles (1-200, по умолчанию: 100)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)
get_messages_from_chat — Получение сообщений из конкретного чата
chatGuid(обязательно): GUID чатаlimit(необязательно): количество сообщений (1-200, по умолчанию: 50)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)
search_contacts — Поиск контактов macOS по имени и получение номеров телефонов
firstName(обязательно): имя для поиска (например, 'John')lastName(необязательно): фамилия для поиска (например, 'Smith'). Если не указана, поиск выполняется по всем полям имениlimit(необязательно): максимальное количество результатов (1-200, по умолчанию: 50)offset(необязательно): смещение при постраничном выводе (по умолчанию: 0)Возвращает контактную информацию с номерами телефонов и email-адресами, которые можно использовать как handle
Выполняет поиск напрямую в базе данных macOS AddressBook для лучшей производительности и надёжности
Примеры пагинации
Все инструменты теперь поддерживают пагинацию с помощью параметров limit и offset и возвращают метаданные пагинации:
// 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,
});Формат ответа с метаданными пагинации
Все инструменты с поддержкой пагинации теперь возвращают ответы в следующем формате:
{
"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
}
}Эти метаданные помогают вам:
Узнать общее количество результатов, не загружая их все
Определить, есть ли ещё страницы для загрузки (
hasMore)Вычислить, на какой странице вы находитесь и сколько страниц существует
Создавать правильные компоненты интерфейса пагинации
Замечания по безопасности
Сервер работает с доступом только для чтения к базе данных iMessage
Ни одно сообщение не может быть отправлено или изменено
Сервер обращается только к локальным данным
Разработка
Это монорепозиторий с рабочим пространством Deno. Все команды, выполняемые из корня, влияют на все пакеты.
# 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 publishРабота с отдельными пакетами
# 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.tsЛицензия
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