Get Claude auto-responding to your iMessages on a fresh Mac in 6 steps.
npm install -g @anthropic-ai/claude-code or desktop app)The iMessage MCP server runs on Bun. Install it:
curl -fsSL https://bun.sh/install | bash
After install, Bun lives at ~/.bun/bin/bun. Your ~/.zshrc gets updated automatically, but MCP servers don't inherit your shell PATH. Fix this by symlinking into a system-wide location:
sudo mkdir -p /usr/local/bin
sudo ln -s ~/.bun/bin/bun /usr/local/bin/bun
bun.Verify:
bun --version
Claude reads ~/Library/Messages/chat.db directly. Without Full Disk Access, the server crashes on startup.
Verify:
ls ~/Library/Messages/chat.db
In Claude Code, run:
/install-plugin imessage
Or manually add to ~/.claude/settings.json:
{
"enabledPlugins": {
"imessage@claude-plugins-official": true
}
}
By default, the channel uses an allowlist policy. Self-chat (texting yourself) always works. To allow other phone numbers, run in Claude Code:
/imessage:access allow +15551234567
Replace with the actual phone number in E.164 format. The config lives at ~/.claude/channels/imessage/access.json:
{
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"],
"groups": {},
"pending": {}
}
The MCP server reads and sends messages, but Claude won't auto-respond unless told to. In a Claude Code session, run:
/loop 1m check for new iMessage messages using chat_messages and reply to any unresponded messages in a helpful, friendly way
This polls every minute and replies to new messages automatically.
To verify the first send, macOS will prompt for Automation permission for Messages.app — click Allow.
bun is not on the system PATH — create the symlink from Step 1which bun — if nothing, the symlink is missing/usr/local/bin exists: sudo mkdir -p /usr/local/bin/loop command is running in an active Claude Code session/imessage:access)| Plugin config | ~/.claude/settings.json |
| Access config | ~/.claude/channels/imessage/access.json |
| MCP server | ~/.claude/plugins/.../imessage/.mcp.json |
| iMessage DB | ~/Library/Messages/chat.db |
| Bun binary | ~/.bun/bin/bun → /usr/local/bin/bun |