Provides semantic search and data access across Apple Mail, Messages, Calendar, and Contacts on macOS, enabling natural language queries to find emails, iMessages, calendar events, and contact information stored locally on the device.
Enables semantic search of iMessages and SMS conversations, retrieving recent messages, viewing full conversation histories, and listing message contacts through natural language queries.
apple-tools-mcp
An MCP (Model Context Protocol) server that provides semantic search across Apple Mail, Messages, Calendar, and Contacts on macOS. Use natural language to search your emails, iMessages, calendar events, and contacts directly from Claude.
Features
Semantic Search: Find emails, messages, and events using natural language queries
Vector Indexing: Uses LanceDB for fast similarity search with local embeddings
Privacy-First: All processing happens locally on your Mac - no data leaves your machine
Smart Deduplication: Handles IMAP duplicates, prioritizing INBOX over Junk/Trash
Date Intelligence: Understands queries like "last week", "yesterday", "March 2024"
Requirements
macOS (Ventura 13.0 or later recommended)
Node.js 18.0 or later
Claude Desktop app
Full Disk Access permission for the Node.js binary
Installation
1. Install the package
2. Grant Full Disk Access
The MCP server needs access to read your Mail, Messages, and Calendar databases.
First, find your Node.js path by running in Terminal:
which nodeThis will output something like
/opt/homebrew/bin/nodeor/usr/local/bin/nodeOpen System Settings → Privacy & Security → Full Disk Access
Click the + button
Press Cmd+Shift+G to open the "Go to Folder" dialog
Paste the path from step 1 (e.g.,
/opt/homebrew/bin/node) and press EnterSelect the
nodefile and click OpenEnsure the toggle for Node.js is enabled
3. Configure Claude Desktop
Add to your Claude Desktop config file:
Location: ~/Library/Application Support/Claude/claude_desktop_config.json
4. Restart Claude Desktop
Quit and reopen Claude Desktop to load the MCP server.
Building the Index
On first use, the server will automatically build a vector index of your recent emails, messages, and calendar events. This may take a few minutes depending on the volume of data.
You can manually rebuild the index:
The index is stored in ~/.apple-tools-mcp/vector-index/.
Available Tools
Once configured, Claude can use these tools:
Universal Search
Tool | Description |
| Intelligent search across all sources - automatically determines which to search |
| Find ALL communication with a person across Mail, Messages, and Calendar |
Email Tools
Tool | Description |
| Semantic search for emails with filters (sender, recipient, attachments, mailbox) |
| Get most recent emails (supports unread filter) |
| Get emails from a specific date ("today", "yesterday", "Nov 13") |
| Read full email content by file path |
| List most frequent email senders |
| Get all emails in a conversation thread |
Messages Tools
Tool | Description |
| Semantic search for iMessages/SMS with filters |
| Get most recent messages |
| Get full conversation history with a contact |
| List all contacts you've messaged |
Calendar Tools
Tool | Description |
| Semantic search for events with filters |
| Get events on a specific date |
| Get next N upcoming events |
| Get all events for current or future week |
| Find available time slots on a date |
| List recurring events |
Contacts Tools
Tool | Description |
| Search contacts by name, email, phone, or organization |
| Look up a specific contact's full details |
Admin Tools
Tool | Description |
| Rebuild search index for one or all sources |
| Audit index health and coverage |
Example Queries
Ask Claude things like:
"Find emails from John about the quarterly report"
"What messages did I get from Mom last week?"
"When is my next dentist appointment?"
"Search for emails about the AWS bill from November"
"Find all calendar events with Zoom links"
"What's Sarah's phone number?"
"Show me all communication with David from last month"
Privacy & Security
Local Processing: All embeddings are generated locally using Xenova/Transformers
No Cloud Services: No data is sent to external servers
Read-Only: The server only reads data, never modifies your Mail/Messages/Calendar
Your Data: The vector index is stored locally in your home directory
Troubleshooting
"Authorization denied" errors
Ensure Node.js has Full Disk Access (see Installation step 2).
Empty search results
Check that the index was built:
ls ~/.apple-tools-mcp/vector-index/Rebuild the index if needed:
npx apple-tools-mcp build-index
Server not appearing in Claude
Verify your config file syntax is valid JSON
Restart Claude Desktop completely (Cmd+Q, then reopen)
Check Claude's MCP logs for errors
Force rebuild the index
If the index becomes corrupted or out of sync:
Monitor indexing progress
Watch the MCP server logs in real-time:
Audit the index
Check index health and coverage:
Development
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Run the tests:
npm testSubmit a pull request
License
MIT License - see LICENSE for details.
Acknowledgments
Built with the Model Context Protocol SDK
Vector search powered by LanceDB
Local embeddings via Xenova/Transformers