# π¬ iMessage MCP Server
> Access your iMessage conversations through the Model Context Protocol
<p align="center">
<strong>Read, search, and send iMessages</strong> directly from Claude, Cursor, or any MCP-compatible client.<br>
No external servers required β works locally with your iMessage database.
</p>
β οΈ **Local-only server** β This MCP server reads directly from local macOS database files (`~/Library/Messages/chat.db` and `~/Library/Application Support/AddressBook/`). It must run on the same Mac where your iMessages are loaded and Apple ID is configured. Remote or cloud deployment is not supported.
---
## β¨ Features
<table>
<tr>
<td width="50%">
### π₯ Read Messages
- Get recent messages with smart filtering
- View unread messages grouped by sender
- Search across all conversations
- Filter by date, service (iMessage/SMS), attachments
</td>
<td width="50%">
### π¬ Conversations
- View full chat history with any contact
- See recent conversations at a glance
- Support for group chats
- Track read/unread status
</td>
</tr>
<tr>
<td width="50%">
### π€ Send Messages
- Send text messages to any contact
- Share images and files
- Send multiple attachments at once
- Works with phone numbers and emails
</td>
<td width="50%">
### π Attachments
- Browse messages with attachments
- Get attachment metadata (size, type, path)
- Filter for images only
- View all attachments in a conversation
</td>
</tr>
</table>
---
## π Quick Start
### Prerequisites
- **macOS** with iMessage configured
- **Node.js** 18 or later
- **Full Disk Access** permission (see below)
### Installation
```bash
git clone https://github.com/sameelarif/imessage-mcp.git
cd imessage-mcp
pnpm install
pnpm build
```
### Granting Full Disk Access
The MCP server needs permission to read your iMessage database.
1. Open **System Settings** β **Privacy & Security** β **Full Disk Access**
2. Click the **+** button
3. Add your terminal app (Terminal, Claude Desktop, Cursor, Warp, VS Code, Ghostyy, etc.)
4. Restart the application
---
## π§ Configuration
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"imessage": {
"command": "node",
"args": ["/absolute/path/to/imessage-mcp/dist/index.js"]
}
}
}
```
### Environment Variables
| Variable | Description | Default |
| ----------- | ---------------------------------------------------- | ------- |
| `LOG_LEVEL` | Logging verbosity (`debug`, `info`, `warn`, `error`) | `info` |
| `DEBUG` | Enable SDK debug mode | `false` |
---
## π οΈ Available Tools
<details>
<summary><strong>π₯ Message Tools</strong></summary>
| Tool | Description |
| --------------------- | -------------------------------------------------------------- |
| `get-messages` | Get messages with filters (sender, date, service, attachments) |
| `get-unread-messages` | Get unread messages grouped by sender |
| `search-messages` | Search messages by text content |
| `send-message` | Send a text message |
| `send-image` | Send an image |
| `send-file` | Send a file attachment |
</details>
<details>
<summary><strong>π¬ Conversation Tools</strong></summary>
| Tool | Description |
| -------------------------- | --------------------------------------- |
| `get-conversation` | Get full chat history with a contact |
| `get-recent-conversations` | Overview of recent chats |
| `get-chat-messages` | Get messages from a specific chat/group |
</details>
<details>
<summary><strong>π Attachment Tools</strong></summary>
| Tool | Description |
| ------------------------------ | --------------------------------------- |
| `get-attachments` | Get messages with attachments |
| `get-conversation-attachments` | Get all attachments from a conversation |
| `send-files` | Send multiple files at once |
</details>
---
## π§ͺ Test Client
An interactive CLI is included for testing with the Vercel AI SDK:
```bash
export OPENAI_API_KEY=sk-...
pnpm test-client
```
**Commands:** `exit` β’ `clear` β’ `tools`
---
## π Project Structure
```
src/
βββ index.ts # MCP server entry point
βββ test-client.ts # Interactive test client
βββ tools/
β βββ messages.ts # Message tools
β βββ conversations.ts # Conversation tools
β βββ attachments.ts # Attachment tools
βββ utils/
βββ logger.ts # Pretty CLI logging
βββ sdk.ts # SDK initialization
```
---
## π Scripts
| Script | Description |
| ------------------ | ----------------------- |
| `pnpm build` | Compile TypeScript |
| `pnpm dev` | Watch mode |
| `pnpm start` | Run the MCP server |
| `pnpm test-client` | Interactive test client |
| `pnpm clean` | Remove build artifacts |
---
## π Acknowledgements
- Built with [@photon-ai/imessage-kit](https://github.com/photon-hq/imessage-kit) for iMessage database access
- Uses the [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic
- Test client powered by [Vercel AI SDK](https://sdk.vercel.ai)
---
## π License
Licensed under the MIT License.