|
|
5 luni în urmă | |
|---|---|---|
| .claude-plugin | 5 luni în urmă | |
| .devcontainer | 5 luni în urmă | |
| .github | 5 luni în urmă | |
| .husky | 5 luni în urmă | |
| scripts | 5 luni în urmă | |
| src | 5 luni în urmă | |
| .gitignore | 5 luni în urmă | |
| .mcp.json | 5 luni în urmă | |
| .npmignore | 5 luni în urmă | |
| .nvmrc | 5 luni în urmă | |
| .prettierrc | 5 luni în urmă | |
| CHANGELOG.md | 5 luni în urmă | |
| CLAUDE.md | 5 luni în urmă | |
| CONTRIBUTING.md | 5 luni în urmă | |
| LICENSE | 5 luni în urmă | |
| README.md | 5 luni în urmă | |
| SECURITY.md | 5 luni în urmă | |
| eslint.config.js | 5 luni în urmă | |
| package-lock.json | 5 luni în urmă | |
| package.json | 5 luni în urmă | |
| tsconfig.json | 5 luni în urmă | |
| vitest.config.ts | 5 luni în urmă |
A Model Context Protocol (MCP) server that enables AI assistants like Claude to read, send, search, and manage emails in Apple Mail on macOS.
⚠️ Work in Progress - This project is in early development. Many features are stubbed out and not yet implemented.
This server acts as a bridge between AI assistants and Apple Mail. Once configured, you can ask Claude (or any MCP-compatible AI) to:
The AI assistant communicates with this server, which then uses AppleScript to interact with the Mail app on your Mac. All data stays local on your machine.
1. Clone and build:
git clone https://github.com/sweetrb/apple-mail-mcp.git
cd apple-mail-mcp
npm install
npm run build
2. Add to Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"apple-mail": {
"command": "node",
"args": ["/path/to/apple-mail-mcp/build/index.js"]
}
}
}
3. Restart Claude Desktop and start using natural language:
"Show me my unread emails"
On first use, macOS will ask for permission to automate Mail.app. Click "OK" to allow.
| Feature | Status | Description |
|---|---|---|
| List Messages | 🚧 Stub | List messages in a mailbox |
| Search Messages | 🚧 Stub | Find emails by sender, subject, content |
| Read Messages | 🚧 Stub | Get full email content |
| Send Email | 🚧 Stub | Compose and send new emails |
| Mark Read/Unread | 🚧 Stub | Change read status |
| Flag Messages | 🚧 Stub | Flag/unflag messages |
| Delete Messages | 🚧 Stub | Move messages to trash |
| Move Messages | 🚧 Stub | Organize into mailboxes |
| List Mailboxes | 🚧 Stub | Show all folders |
| List Accounts | ✅ Done | Show configured accounts |
| Health Check | ✅ Done | Verify Mail.app connectivity |
| Statistics | 🚧 Stub | Unread counts, totals |
search-messagesSearch for messages matching criteria.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | No | Text to search for |
from |
string | No | Filter by sender |
subject |
string | No | Filter by subject |
mailbox |
string | No | Mailbox to search in |
account |
string | No | Account to search in |
isRead |
boolean | No | Filter by read status |
isFlagged |
boolean | No | Filter by flagged status |
limit |
number | No | Max results (default: 50) |
get-messageGet the full content of a message.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Message ID |
list-messagesList messages in a mailbox.
| Parameter | Type | Required | Description |
|---|---|---|---|
mailbox |
string | No | Mailbox name (default: INBOX) |
account |
string | No | Account name |
limit |
number | No | Max messages (default: 50) |
unreadOnly |
boolean | No | Only unread messages |
send-emailSend a new email.
| Parameter | Type | Required | Description |
|---|---|---|---|
to |
string[] | Yes | Recipient addresses |
subject |
string | Yes | Email subject |
body |
string | Yes | Email body |
cc |
string[] | No | CC recipients |
bcc |
string[] | No | BCC recipients |
account |
string | No | Send from account |
mark-as-read / mark-as-unreadChange read status of a message.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Message ID |
flag-messageFlag a message.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Message ID |
delete-messageDelete a message (move to trash).
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Message ID |
move-messageMove a message to a different mailbox.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Message ID |
mailbox |
string | Yes | Destination mailbox |
account |
string | No | Account containing mailbox |
list-mailboxesList all mailboxes.
| Parameter | Type | Required | Description |
|---|---|---|---|
account |
string | No | Account to list from |
get-unread-countGet unread message count.
| Parameter | Type | Required | Description |
|---|---|---|---|
mailbox |
string | No | Mailbox to check |
account |
string | No | Account to check |
list-accountsList all configured Mail accounts.
Parameters: None
health-checkVerify Mail.app connectivity and permissions.
Parameters: None
get-mail-statsGet mail statistics (total messages, unread counts).
Parameters: None
npm install # Install dependencies
npm run build # Compile TypeScript
npm test # Run test suite
npm run lint # Check code style
npm run format # Format code
Rob Sweet - President, Superior Technologies Research
MIT License - see LICENSE for details.