apple-mcp
Apple Apps MCP Server — control Messages, Notes, Reminders, Calendar, Contacts, and Photos through AppleScript.
macOS only — requires macOS with Automation permissions granted to your terminal / Claude Code.
27 tools across 6 Apple apps — fully offline, no API keys, no network calls. All data stays on your Mac.
Tools
Messages (5)
| Tool | Description |
|---|---|
messages_list_chats |
List all conversations |
messages_get_chat |
Get messages from a specific conversation |
messages_get_recent |
Get recent messages across all chats |
messages_search |
Search messages by content |
messages_send |
Send an iMessage or SMS |
Notes (5)
| Tool | Description |
|---|---|
notes_list_folders |
List all Notes folders |
notes_list |
List notes (optionally filter by folder) |
notes_get |
Get the full content of a note |
notes_create |
Create a new note |
notes_search |
Search notes by content |
Reminders (5)
| Tool | Description |
|---|---|
reminders_list_lists |
List all Reminder lists |
reminders_list |
List reminders (optionally filter by list) |
reminders_create |
Create a reminder with optional due date |
reminders_complete |
Mark a reminder as complete |
reminders_search |
Search reminders by name |
Calendar (4)
| Tool | Description |
|---|---|
calendar_list |
List all calendars |
calendar_today |
Get today's events |
calendar_events |
Get events in a date range |
calendar_create_event |
Create a new calendar event |
Contacts (4)
| Tool | Description |
|---|---|
contacts_list |
List all contacts |
contacts_search |
Search by name, email, or phone |
contacts_get |
Get detailed contact information |
contacts_groups |
List contact groups |
Photos (4)
| Tool | Description |
|---|---|
photos_list_albums |
List all photo albums |
photos_recent |
Get recently added photos |
photos_album |
Get photos from a specific album |
photos_search |
Search photos by keyword |
Setup
Requirements
- macOS (AppleScript is macOS-only)
- Python 3.10+
- uv package manager
Step 1 — Install
pip install apple-mcp
# or with uv:
uv add apple-mcp
Step 2 — Grant Permissions
The first time each app is accessed, macOS will prompt for Automation permission. You can also grant them upfront:
- Open System Settings → Privacy & Security → Automation
- Find your terminal app (Terminal, iTerm2) or Claude Code
- Enable access for: Messages, Notes, Reminders, Calendar, Contacts, Photos
For Messages, full disk access may be needed for reading message history. Go to Privacy & Security → Full Disk Access and add your terminal app.
Step 3 — Add to Claude Code
claude mcp add apple -- uvx apple-mcp
Or manually in your Claude config (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"apple": {
"command": "uvx",
"args": ["apple-mcp"]
}
}
}
Privacy & Security
- Fully offline — no network requests, no third-party APIs
- All data stays on your Mac
- Uses AppleScript and local SQLite database (
~/Library/Messages/chat.db) for Messages - No credentials or tokens required
Troubleshooting
"Not authorized to send Apple events": Go to System Settings → Privacy & Security → Automation and enable the app.
Messages not showing: Ensure Full Disk Access is granted to your terminal app (System Settings → Privacy & Security → Full Disk Access).
Photos tools slow: Photos.app must be running. Large libraries may take a moment to query.
Calendar/Reminders not responding: Open the respective app once manually to ensure it initializes properly.
Requirements
- macOS (10.15 Catalina or later recommended)
- Python 3.10+
- Automation permissions in System Settings
License
MIT — Hitesh Gupta
Metadata
Release files for apple-mcp 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| apple_mcp-1.0.1.tar.gz | 12.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apple_mcp-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.5 kB
Release files / apple_mcp-1.0.1.tar.gz
| Download URL | apple_mcp-1.0.1.tar.gz |
|---|---|
| Size | 12.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0eb724c0aa6d8d2966ccd73c3b178c56240323e718e5f9e787330e1d192cb29
|
|
BLAKE2b-256 checksum How to use checksums |
41f205b782a188eebf0c61445da89ab6176e2a0055ddd165fce863d8ff1a3303
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / apple_mcp-1.0.1-py3-none-any.whl
| Download URL | apple_mcp-1.0.1-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4c1043a4606d8851c94d25b53521c492793a9c4c81c10a40b16a55f90726307
|
|
BLAKE2b-256 checksum How to use checksums |
80c9d2023222c43a78f5718a2ebea1b8edcc80c28903caef97d7ae13c9a5da9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for apple-mcp 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.