An MCP server implementation that integrates the Photon iMessage SDK, providing AI agents with the ability to read, send, and automate iMessage conversations.
- Send Messages: Send iMessages to phone numbers or email addresses
- Read Messages: Retrieve message history from conversations
- List Conversations: Get all active iMessage conversations
- Conversation Details: Get detailed information about specific conversations
- Dual Transport: Supports both STDIO (local) and HTTP (production) transports
Sends an iMessage to a recipient.
Inputs:
recipient(string, required): Phone number (e.g., '+1234567890') or email addresstext(string, required): Message text to sendchatId(string, optional): Chat ID if continuing an existing conversation
Reads messages from an iMessage conversation.
Inputs:
chatId(string, optional): Chat/conversation IDrecipient(string, optional): Recipient phone number or emaillimit(number, optional): Maximum number of messages (default: 50)offset(number, optional): Number of messages to skip (default: 0)
Gets a list of all iMessage conversations.
Inputs:
limit(number, optional): Maximum number of conversations (default: 50)offset(number, optional): Number of conversations to skip (default: 0)
Gets detailed information about a specific conversation.
Inputs:
chatId(string, required): Chat/conversation ID
- Bun (recommended for zero dependencies) - Install from bun.sh
- Or Node.js 18+ with npm/yarn
- macOS (required for iMessage functionality)
# Using Bun (recommended - zero dependencies)
bun install
# Or using npm/yarn (requires better-sqlite3)
npm install
# or
yarn installAdd this to your claude_desktop_config.json:
{
"mcpServers": {
"photon-imsg": {
"command": "bun",
"args": ["run", "/path/to/photon-imsg-mcp/src/index.ts"]
}
}
}{
"mcpServers": {
"photon-imsg": {
"command": "bun",
"args": ["run", "/path/to/photon-imsg-mcp/src/index.ts", "--port", "3002"],
"url": "http://localhost:3002/mcp"
}
}
}Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [],
"servers": {
"photon-imsg": {
"command": "bun",
"args": ["run", "/absolute/path/to/photon-imsg-mcp/src/index.ts"]
}
}
}
}# STDIO transport (default)
bun run src/index.ts
# HTTP transport
bun run src/index.ts --port 3002
# Or using npm scripts
npm run dev:stdio
npm run dev:http# Build TypeScript
bun run build
# Or
npm run buildnpm run inspectorphoton-imsg-mcp/
├── src/
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server implementation
│ ├── client.ts # Photon SDK client wrapper
│ ├── config.ts # Configuration management
│ ├── cli.ts # CLI argument parsing
│ ├── types.ts # TypeScript type definitions
│ ├── tools/
│ │ ├── index.ts # Tool exports
│ │ └── imessage.ts # iMessage tool definitions
│ └── transport/
│ ├── index.ts # Transport exports
│ ├── stdio.ts # STDIO transport
│ └── http.ts # HTTP transport
├── package.json
├── tsconfig.json
└── README.md
- This server requires macOS to access iMessage functionality
- The Photon SDK handles all iMessage database access
- Make sure you have proper permissions to access Messages on macOS
- The SDK uses Bun for zero dependencies, but can work with Node.js
MIT License - see LICENSE file for details.