Skip to main content
Glama
lanemiles

lane-mac-mcp

by lanemiles

lane-mac-mcp

Сервер MCP только для чтения для iMessage + CLI для macOS. Один проверяемый файл, без возможности отправки.

Claude (через MCP) или вы (через CLI) можете просматривать список разговоров, читать чат и искать в истории сообщений — и ничего больше. Только чтение по построению: в v1 вообще нет кода отправки. Весь доступ к данным выполняется через собственный /usr/bin/sqlite3 от Apple с флагами -json -readonly против ~/Library/Messages/chat.db; имена контактов берутся из запросов только на чтение к локальным базам AddressBook.

Ограничения дизайна

Весь сервер — это server.ts (~600 строк, включая комментарии), чтобы его можно было проверить от начала до конца — проверяемый файл и есть исполняемый файл, поскольку Node ≥ 22.18 выполняет TypeScript напрямую с нативным удалением типов (без шага сборки, без скомпилированных артефактов). Есть ровно две зависимости, зафиксированные через package-lock.json: @modelcontextprotocol/sdk и zod. Никаких сетевых импортов, никаких открытых портов — только stdio JSON-RPC, запускаемый как дочерний процесс Claude Desktop; запуски CLI — одноразовые процессы. Демона нет: Claude Desktop запускает и останавливает сервер вместе с приложением (перезапустите приложение, чтобы перезагрузить код).

Related MCP server: imessage-rich-search

Требования

macOS с настроенными Сообщениями, Node.js ≥ 22.18 и полный доступ к диску для процесса, который запускает сервер: Terminal (или ваше терминальное приложение) для CLI, и Claude Desktop для MCP. Предоставьте его в Системных настройках → Конфиденциальность и безопасность → Полный доступ к диску, затем перезапустите приложение. node server.ts doctor проверяет всё это и сообщает, чего не хватает.

Установка

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

Затем добавьте сервер в claude_desktop_config.json Claude Desktop (Настройки → Разработчик → Изменить конфигурацию):

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

Перезапустите Claude Desktop. Появятся три инструмента: list_chats, read_chat, search_messages.

Использование 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

Вывод — JSON. search покрывает message.text с помощью SQL LIKE; --deep дополнительно декодирует сообщения, чей текст находится только в blob attributedBody (ограниченное сканирование, медленнее). Реакции Tapback исключаются везде, если не указано --include-reactions.

Обработанные особенности Apple

Метки времени — наносекунды с 2001-01-01 (секунды для очень старых строк) — конвертируются оба варианта. Текст сообщения часто находится в blob typedstream attributedBody, а не в message.text; он декодируется в JS с известной эвристикой NSString. Имена контактов сопоставляются по нормализованному последнему 10-значному номеру телефона или email в нижнем регистре по всем источникам AddressBook, с корректным откатом к сырым номерам, когда контакты недоступны для чтения.

Позиция по конфиденциальности и безопасности

Сервер может только читать. Он открывает базы данных с флагом -readonly sqlite3, не содержит пути кода, который записывает в любую базу данных или отправляет сообщения, не устанавливает сетевых соединений и не слушает порты. Пользовательский ввод экранируется в строковые литералы SQL (удвоение ''), а числовые значения проверяются. doctor выводит только количество строк, никогда не содержимое сообщений. Переопределения через переменные окружения (CHAT_DB_PATH, SQLITE_BIN, ADDRESSBOOK_DIR) существуют, чтобы тесты никогда не касались реальных данных.

Тестирование

npm test

Тесты «чёрного ящика» генерируют синтетический chat.db и фикстуру AddressBook (включая сообщение только с attributedBody, tapback и входящую ветку без ответа) и запускают реальный CLI и реальный интерфейс MCP stdio как дочерние процессы. Разработка никогда не касается реальных данных.

Дорожная карта (позже, не v1)

Полировка обогащения контактов → чтение Заметок через osascript → отправка, ограниченная переменной окружения SEND_ENABLED плюс одобрение каждого вызова.

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