imessage-mcp
imessage-mcp
A minimal MCP server with one tool, text_user, that sends an iMessage to a
configured handle. macOS only, Node 18+.
It is only a channel. When an agent should text you, and how often, is for your harness or agent config to decide, not this server.
Setup
npm install && npm run buildRequirements on the machine running the server:
IMESSAGE_HANDLEset to the recipient's phone number in E.164 form (+11234567890) or their Apple ID emailMessages.appsigned in to iMessageAutomation permission for Messages (System Settings > Privacy & Security > Automation). macOS prompts once on the first send.
Add to Claude Code
claude mcp add imessage --env IMESSAGE_HANDLE=+11234567890 -- node /absolute/path/to/imessage-mcp/dist/index.jsTool: text_user
One required field, message (string), sent verbatim. Returns { sent: true },
or an error string explaining why it wasn't sent. It never throws.
Sending is one-way: no receive path, no chat.db reading, no contact lookup,
no other tools.
Notes
src/send.applescript is a fixed script file, invoked with the message and
handle as arguments, so message content is never interpolated into its source.
It omits activate, so sending won't steal focus.