iMessage integration for Claude Code. Text Claude from your phone while it works.
When you're AFK, enable /textme mode and Claude will communicate with you via iMessage instead of the terminal - sending status updates, asking questions, and waiting for your responses.
- Two-way messaging - Send and receive iMessages through Claude Code
- Textme mode - Claude texts you instead of printing to terminal when you're AFK
- Typing indicators - See "..." before messages arrive (natural UX)
- Pending message check - Claude sees your messages before responding (no crossed wires)
- Expressive styles - Send with balloons, fireworks, confetti, etc.
- Double-text support - 5-second grace period collects rapid-fire messages
- Conversation history - Context preserved across sessions
- Sign up at dashboard.sendblue.com
- Get your API Key and API Secret from Dashboard → API Keys
- Note your Sendblue phone number (the number that will send/receive)
- Add your personal phone to the whitelist
Add to your shell profile (~/.zshrc or ~/.bashrc):
export SENDBLUE_API_KEY="your_api_key"
export SENDBLUE_API_SECRET="your_api_secret"
export SENDBLUE_PHONE_NUMBER="+1XXXXXXXXXX" # Your Sendblue number
export IMESSAGE_WHITELIST="+1XXXXXXXXXX" # Your personal phoneReload: source ~/.zshrc
The plugin needs a longer MCP timeout since send_and_wait blocks while waiting for your reply (default timeout is too short).
Add to ~/.claude/settings.json:
{
"env": {
"MCP_TOOL_TIMEOUT": "604800000"
}
}This sets the timeout to 1 week (in milliseconds).
In Claude Code, run:
/plugin marketplace add konarkm/textme
/plugin install imessage@textme
After installing the plugin, install the server dependencies:
cd ~/.claude/plugins/cache/textme/imessage/*/server && npm installThis builds native modules for your platform. You'll see the install output directly - if there are errors, you can debug them here.
Restart Claude Code to connect to the MCP server.
Check the plugin is connected:
/mcp
You should see imessage MCP server with status "connected".
> Use send_message to text me "Hello from Claude!"
Check your phone - you should receive the message.
When you're stepping away:
> /textme
Claude will now:
- Send all status updates via iMessage (not terminal)
- Ask questions via iMessage and wait for your response
- Check in before stopping
To disable:
> /textme off
| Tool | Description |
|---|---|
send_and_wait |
Send a message and wait for reply |
send_message |
Send without waiting (status updates) |
check_messages |
Check for pending messages |
wait_for_message |
Wait for user to text first |
get_conversation |
View conversation history |
Add effects to your messages:
> Send "Happy birthday!" with balloons
Available: celebration, fireworks, balloons, confetti, lasers, love, spotlight, echo, invisible, gentle, loud, slam, shooting_star
- Polling-based - MCP server polls Sendblue every 5-10 seconds (no webhooks needed)
- Typing indicators - 1-second delay with "..." before messages send
- Pending check - Before sending, checks if you texted first (prevents crossed messages)
- Message IDs - Tracked for future tapback reactions (when Sendblue enables V2 API)
Environment variables:
| Variable | Required | Description |
|---|---|---|
SENDBLUE_API_KEY |
Yes | Your Sendblue API key |
SENDBLUE_API_SECRET |
Yes | Your Sendblue API secret |
SENDBLUE_PHONE_NUMBER |
Yes | Your Sendblue phone number |
IMESSAGE_WHITELIST |
Yes | Comma-separated allowed phone numbers |
IMESSAGE_POLL_INTERVAL_MS |
No | Poll interval (default: 5000) |
Messages not sending?
- Check
claude mcp listshowsimessageas connected - Verify environment variables are set:
echo $SENDBLUE_API_KEY - Check Sendblue dashboard for API errors
Not receiving messages?
- Ensure your phone is in
IMESSAGE_WHITELIST - Phone number must be E.164 format:
+1XXXXXXXXXX
MCP shows "failed"?
- Make sure you ran
npm installin the server directory (step 5) - Check for npm errors:
cd ~/.claude/plugins/cache/textme/imessage/*/server && npm install - Verify Node.js is installed:
node --version(requires v18+)
Plugin not loading?
- Run
/plugin listin Claude Code to verify installation - Make sure you restarted Claude Code after installing
- Try
/mcpto check if the imessage MCP server is connected
These are implemented but commented out until Sendblue enables their V2 API:
- Tapback reactions - React to messages with ❤️ 👍 😂 etc.
- Read receipts - Show "Read" when Claude sees your messages
See Sendblue Roadmap for status.
MIT
Built with Sendblue + Claude Code