Skip to main content
Glama
imessage-mcp

imessage-mcp

imessage-mcp

An MCP server that connects Claude Desktop to iMessage on macOS — read conversations, search messages, send texts, and access attachments.

Prerequisites

  • macOS

  • Node.js 18+

  • Claude Desktop

  • Full Disk Access granted to Claude Desktop (required to read ~/Library/Messages/chat.db)

Granting Full Disk Access

  1. Open System Settings → Privacy & Security → Full Disk Access

  2. Add Claude to the list and enable it

  3. Restart Claude Desktop

Related MCP server: jons-mcp-imessage

Installation

1. Add to Claude Desktop config

Open ~/Library/Application Support/Claude/claude_desktop_config.json and add:

{
  "mcpServers": {
    "imessage": {
      "command": "npx",
      "args": ["-y", "@kamk95/imessage-mcp"]
    }
  }
}

2. Restart Claude Desktop


Manual install (alternative)

If you prefer to run from source:

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

Then use this config instead:

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

Tools

get_conversations

List recent iMessage conversations.

Parameter

Type

Description

limit

number

Max conversations to return (default: 20)

get_messages

Get messages from a specific conversation.

Parameter

Type

Description

chat_id

string

Required. Chat ID from get_conversations

limit

number

Max messages to return (default: 50)

search_messages

Search across all messages by text.

Parameter

Type

Description

query

string

Required. Text to search for

limit

number

Max results to return (default: 20)

get_chat_participants

Get the participants in a conversation.

Parameter

Type

Description

chat_id

string

Required. Chat ID from get_conversations

send_message

Send an iMessage or SMS.

Parameter

Type

Description

recipient

string

Required. Phone number, email, or contact name

message

string

Required. Text to send

get_attachments

List attachments from a conversation.

Parameter

Type

Description

chat_id

string

Required. Chat ID from get_conversations

limit

number

Max attachments to return (default: 20)

save_attachment

Save an attachment from a message to disk.

Parameter

Type

Description

attachment_id

string

Required. Attachment ID from get_attachments

destination

string

Required. Full path where the file should be saved


Notes

  • Messages are read directly from ~/Library/Messages/chat.db using SQLite — no AppleScript required for reads

  • Sending uses AppleScript via osascript

  • Contact names are resolved from AddressBook automatically

  • US phone numbers are normalized (leading 1 stripped from 11-digit numbers)

Available Tools

7 tools
get_attachmentsA

Get attachments (images, files, links) from a conversation. Filter by mime type (e.g. 'image' for photos, 'application/pdf' for PDFs). Returns file paths that can be read or saved.

Inputs: limit, contact, chat_guid, mime_filter.

get_chat_participantsA

Get participants of a chat with resolved contact names. Useful for group chats.

Inputs: name, chat_id, chat_guid.

get_conversationsA

List recent conversations (individual and group) with resolved contact names. Shows group chats with participant counts.

Inputs: limit.

get_messagesA

Read messages from a conversation. Search by contact name, phone number, email, or group name. Shows resolved sender names in group chats and includes attachment info.

Inputs: contact (required), limit.

save_attachmentA

Save/copy a message attachment to a destination (defaults to Desktop). Use after get_attachments to save files.

Inputs: source_path (required), destination.

search_messagesA

Search all messages for a keyword or phrase. Shows resolved contact names and attachment info.

Inputs: query (required), limit.

send_messageA

Send a message (iMessage, SMS, or RCS) to a contact or group chat. Accepts contact names, phone numbers, emails, or chat GUIDs. Can also send file attachments.

Inputs: message (required), recipient (required), files.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a distinct aspect of messaging: listing conversations, reading messages, searching, sending, viewing participants, and handling attachments. No two tools have overlapping purposes, making selection unambiguous.

    Naming Consistency5/5

    All tools follow a consistent verb_noun naming pattern (e.g., get_conversations, send_message, search_messages), making the API predictable and easy to navigate.

    Tool Count5/5

    With 7 tools, the server is well-scoped for an iMessage interface, covering the core workflows without unnecessary bloat or insufficient functionality.

    Completeness5/5

    The tool set covers the essential lifecycle of messaging: listing, reading, searching, sending, and managing attachments. No critical operations are missing for the stated purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables Claude to send and read iMessages on macOS, with smart contact lookup, message history retrieval, and cross-conversation search using natural language commands.
      6
      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
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables Claude to send and read iMessages on macOS, with human approval required for sending and no auto-replies.
      4 npm
      2
      Apache 2.0