A collection of Model Context Protocol (MCP) servers that provide AI assistants with access to native Apple applications on macOS. - macOS (uses AppleScript and macOS-specific APIs) - Node.js 18+ (22+ for Apple Messages) - Full Disk Access granted to your terminal app (System Settings > Privacy & Security > Full Disk Access) — required for reading the Messages database - The associated Apple app m
Add this skill
npx mdskills install griches/apple-mcpComprehensive suite of seven MCP servers providing deep integration with Apple ecosystem apps
A collection of Model Context Protocol (MCP) servers that provide AI assistants with access to native Apple applications on macOS.
| Server | Status | Description |
|---|---|---|
| Apple Notes | Done | Read, create, update, move, and delete notes and folders |
| Apple Messages | Done | Read message history, search conversations, and send messages |
| Apple Contacts | Done | Manage contacts, groups, and contact details |
| Apple Mail | Done | Read, send, search, flag, and manage email |
| Apple Reminders | Done | Create, update, complete, and manage reminders and lists |
| Apple Calendar | Done | Create, update, and manage calendar events |
| Apple Maps | Done | Search locations, get directions, and drop pins (visual only — limited by Apple's automation support) |
All servers (except Apple Maps, which is UI-only) support two optional safety flags:
| Mode | Flag | Behaviour |
|---|---|---|
| Normal (default) | (none) | All tools available, no restrictions |
| Read-only | --read-only | Destructive/write tools are not registered at all |
| Confirm | --confirm-destructive | Destructive tools require a confirm: true parameter; without it they return a warning asking the AI to check with the user first |
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["@griches/apple-notes-mcp", "--read-only"]
},
"apple-messages": {
"command": "npx",
"args": ["@griches/apple-messages-mcp", "--confirm-destructive"]
}
}
}
claude mcp add apple-notes -- npx @griches/apple-notes-mcp --read-only
claude mcp add apple-messages -- npx @griches/apple-messages-mcp --confirm-destructive
| Server | Destructive tools |
|---|---|
| Notes | delete_note, delete_folder |
| Contacts | delete_contact, delete_group |
| Reminders | delete_reminder, delete_list |
| Calendar | delete_event |
No cloning or building required — install and run directly with npx:
# Apple Notes
npx @griches/apple-notes-mcp
# Apple Messages
npx @griches/apple-messages-mcp
# Apple Contacts
npx @griches/apple-contacts-mcp
# Apple Reminders
npx @griches/apple-reminders-mcp
# Apple Calendar
npx @griches/apple-calendar-mcp
# Apple Maps
npx @griches/apple-maps-mcp
# Apple Mail
npx @griches/apple-mail-mcp
claude mcp add apple-notes -- npx @griches/apple-notes-mcp
claude mcp add apple-messages -- npx @griches/apple-messages-mcp
claude mcp add apple-contacts -- npx @griches/apple-contacts-mcp
claude mcp add apple-reminders -- npx @griches/apple-reminders-mcp
claude mcp add apple-calendar -- npx @griches/apple-calendar-mcp
claude mcp add apple-maps -- npx @griches/apple-maps-mcp
claude mcp add apple-mail -- npx @griches/apple-mail-mcp
Add to your claude_desktop_config.json:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["@griches/apple-notes-mcp"]
},
"apple-messages": {
"command": "npx",
"args": ["@griches/apple-messages-mcp"]
},
"apple-contacts": {
"command": "npx",
"args": ["@griches/apple-contacts-mcp"]
},
"apple-reminders": {
"command": "npx",
"args": ["@griches/apple-reminders-mcp"]
},
"apple-calendar": {
"command": "npx",
"args": ["@griches/apple-calendar-mcp"]
},
"apple-maps": {
"command": "npx",
"args": ["@griches/apple-maps-mcp"]
},
"apple-mail": {
"command": "npx",
"args": ["@griches/apple-mail-mcp"]
}
}
}
If you prefer to build from source:
git clone https://github.com/griches/apple-mcp.git
cd apple-mcp
# Apple Notes
cd notes && npm install && npm run build
# Apple Messages
cd ../messages && npm install && npm run build
# Apple Contacts
cd ../contacts && npm install && npm run build
# Apple Reminders
cd ../reminders && npm install && npm run build
# Apple Calendar
cd ../calendar && npm install && npm run build
# Apple Maps
cd ../maps && npm install && npm run build
# Apple Mail
cd ../mail && npm install && npm run build
Then configure your MCP client to run the built files directly:
{
"mcpServers": {
"apple-notes": {
"command": "node",
"args": ["/absolute/path/to/notes/build/index.js"]
},
"apple-messages": {
"command": "node",
"args": ["/absolute/path/to/messages/build/index.js"]
},
"apple-contacts": {
"command": "node",
"args": ["/absolute/path/to/contacts/build/index.js"]
},
"apple-reminders": {
"command": "node",
"args": ["/absolute/path/to/reminders/build/index.js"]
},
"apple-calendar": {
"command": "node",
"args": ["/absolute/path/to/calendar/build/index.js"]
},
"apple-maps": {
"command": "node",
"args": ["/absolute/path/to/maps/build/index.js"]
},
"apple-mail": {
"command": "node",
"args": ["/absolute/path/to/mail/build/index.js"]
}
}
}
An MCP server that interacts with Apple Notes via AppleScript.
| Tool | Description |
|---|---|
list_folders | List all folders in Apple Notes |
create_folder | Create a new folder |
list_notes | List all notes in a folder |
get_note | Get the full content of a note by title |
create_note | Create a new note (HTML body) in a folder |
update_note | Update the body of an existing note |
move_note | Move a note from one folder to another |
append_to_note | Append HTML content to an existing note |
delete_note | Delete a note |
delete_folder | Delete a folder and all its notes |
search_notes | Search notes by keyword in titles and body content |
An MCP server that reads messages from the macOS Messages database (SQLite) and sends messages via AppleScript.
| Tool | Description |
|---|---|
list_chats | List recent chats with last message preview |
get_chat_messages | Get message history for a specific chat (with optional date range filtering) |
search_messages | Search messages by text content |
send_message | Send an iMessage or SMS |
get_chat_participants | Get participants of a chat |
~/Library/Messages/chat.dbAn MCP server that interacts with Apple Contacts via AppleScript.
| Tool | Description |
|---|---|
list_groups | List all groups in Apple Contacts |
list_contacts | List all contacts, optionally filtered by group |
get_contact | Get full details of a contact (emails, phones, addresses, etc.) |
search_contacts | Search contacts by name |
create_contact | Create a new contact with optional email, phone, organization |
update_contact | Update an existing contact's details |
delete_contact | Delete a contact by name |
create_group | Create a new group |
delete_group | Delete a contact group |
add_contact_to_group | Add a contact to a group |
remove_contact_from_group | Remove a contact from a group |
An MCP server that interacts with Apple Reminders via AppleScript.
| Tool | Description |
|---|---|
list_lists | List all reminder lists |
create_list | Create a new reminder list |
list_reminders | List reminders in a list (optionally include completed) |
get_reminder | Get full details of a reminder by name |
create_reminder | Create a new reminder with optional due date, notes, and priority |
update_reminder | Update an existing reminder's details |
complete_reminder | Mark a reminder as completed |
uncomplete_reminder | Mark a completed reminder as incomplete |
delete_reminder | Delete a reminder |
delete_list | Delete a reminder list and all its reminders |
search_reminders | Search reminders by name across lists |
An MCP server that interacts with Apple Calendar. Read operations use a compiled Swift EventKit binary for fast access (~0.1s vs 50-140s via AppleScript). Write operations use AppleScript.
| Tool | Description |
|---|---|
list_calendars | List all calendars |
list_all_events | List events across all calendars within a date range |
list_events | List events in a specific calendar within a date range |
get_event | Get full details of an event by summary/title |
create_event | Create a new event with date, time, location, and description |
update_event | Update an existing event's details |
delete_event | Delete an event by summary/title |
search_events | Search events by summary/title across calendars |
An MCP server that interacts with Apple Maps using Maps URL schemes.
Note: Apple Maps has a very limited AppleScript/automation dictionary compared to other Apple apps. There is no supported way to programmatically read back search results, route details, or location data from Maps. As a result, these tools open Apple Maps with the requested query but cannot return structured data (e.g. addresses, coordinates, distances) to the agent. The results are visual — you'll see them in the Maps app.
| Tool | Description |
|---|---|
search_location | Search for a location in Apple Maps |
get_directions | Get directions between two locations (driving, walking, or transit) |
drop_pin | Drop a pin at specific coordinates |
open_address | Open a specific address in Apple Maps |
save_to_favorites | Open a location in Maps so you can save it as a favorite |
An MCP server that interacts with Apple Mail via AppleScript.
| Tool | Description |
|---|---|
list_mailboxes | List all mailboxes across accounts with unread counts |
list_messages | List recent messages in a mailbox |
get_message | Get the full content of an email by ID |
search_messages | Search emails by subject or sender across mailboxes |
send_email | Send an email with optional CC/BCC (supports multiple recipients) |
get_unread_count | Get unread count for a mailbox or all mailboxes |
move_message | Move an email to a different mailbox |
mark_read | Mark an email as read or unread |
delete_message | Delete an email (moves to trash) |
flag_message | Flag or unflag an email message |
Each server is a standalone TypeScript project in its own directory.
# Run tests for Notes
cd notes
npm test
# Run tests for Messages
cd messages
npm test
MIT
Install via CLI
npx mdskills install griches/apple-mcpApple MCP Servers is a free, open-source AI agent skill. A collection of Model Context Protocol (MCP) servers that provide AI assistants with access to native Apple applications on macOS. - macOS (uses AppleScript and macOS-specific APIs) - Node.js 18+ (22+ for Apple Messages) - Full Disk Access granted to your terminal app (System Settings > Privacy & Security > Full Disk Access) — required for reading the Messages database - The associated Apple app m
Install Apple MCP Servers with a single command:
npx mdskills install griches/apple-mcpThis downloads the skill files into your project and your AI agent picks them up automatically.
Apple MCP Servers works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Gemini Cli, Amp, Roo Code, Goose. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.