@roebot0/apple-mcp
v1.0.0
Published
MCP server for macOS Apple apps — Notes, Reminders, Calendar, Contacts, Safari. 28 tools.
Maintainers
Readme
apple-mcp
MCP server for macOS Apple apps. Provides 28 read/write tools across Notes, Reminders, Calendar, Contacts, and Safari -- all running locally on your Mac via SQLite and JXA (JavaScript for Automation).
Install
Claude Code
claude mcp add apple -- npx @roebot0/apple-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"apple": {
"command": "npx",
"args": ["@roebot0/apple-mcp"]
}
}
}Tools
Notes (8 tools)
| Tool | Description |
|------|-------------|
| apple_notes_list | List notes with title, snippet, folder, and dates (paginated) |
| apple_notes_search | Search notes by keyword in title and snippet |
| apple_notes_get | Get full plaintext body of a note by exact title |
| apple_notes_folders | List all folders with note counts |
| apple_notes_recent | Get N most recently modified notes |
| apple_notes_by_folder | Get all notes in a specific folder |
| apple_notes_create | Create a new note in a specified folder |
| apple_notes_stats | Aggregate stats: total notes, per-folder counts, date range |
Reminders (6 tools)
| Tool | Description |
|------|-------------|
| apple_reminders_lists | List all reminder lists with counts |
| apple_reminders_list | Get reminders in a specific list |
| apple_reminders_due | Get reminders due today, this week, or overdue |
| apple_reminders_search | Search reminders by keyword across all lists |
| apple_reminders_create | Create a new reminder with optional due date and priority |
| apple_reminders_complete | Mark a reminder as complete by name |
Calendar (5 tools)
| Tool | Description |
|------|-------------|
| apple_calendar_today | Get today's events across all calendars |
| apple_calendar_range | Get events in a date range |
| apple_calendar_calendars | List all calendars |
| apple_calendar_search | Search events by title |
| apple_calendar_upcoming | Get next N upcoming events |
Contacts (5 tools)
| Tool | Description |
|------|-------------|
| apple_contacts_search | Search contacts by name, email, or company |
| apple_contacts_get | Get full contact details by ID (emails, phones, etc.) |
| apple_contacts_recent | Get recently modified contacts |
| apple_contacts_company | List contacts at a specific company |
| apple_contacts_stats | Contact count and top companies |
Safari (4 tools)
| Tool | Description |
|------|-------------|
| apple_safari_history | Get recent browsing history |
| apple_safari_search_history | Search history by URL or page title |
| apple_safari_bookmarks | List bookmarks, optionally filtered by folder |
| apple_safari_reading_list | Get all Reading List items |
Requirements
- macOS (uses native SQLite databases and JXA automation)
- Node.js >= 18
- Full Disk Access required for Safari history -- grant it to your terminal app in System Settings > Privacy & Security > Full Disk Access
- Notes, Reminders, Calendar, and Contacts work without Full Disk Access
How it works
- Notes, Calendar, Contacts, Safari history: Read directly from local SQLite databases (read-only)
- Notes create, Reminders (all), Notes get: Use JXA (
osascript -l JavaScript) to interact with the native apps - Safari bookmarks/reading list: Parse the Bookmarks.plist file
No network requests. No API keys. Everything stays on your Mac.
Development
git clone https://github.com/AaronRoeF/apple-mcp.git
cd apple-mcp
npm install
npm run buildTo test locally with Claude Code:
claude mcp add apple -- node /path/to/apple-mcp/start-mcp-server.jsLicense
MIT
