PyApple MCP Tools
Python implementation of Apple-native tools for the Model Context Protocol
Features
π¨οΈ Messages
Send and read messages using the Apple Messages app
π Notes
List, search, create, and delete notes in Apple Notes app
π₯ Contacts
Search contacts from Apple Contacts
π§ Mail
Send emails, search messages, and manage mail with optimized local database search
β° Reminders
List, search, and create reminders in Apple Reminders app
π Calendar
Search events, create calendar entries, and manage your schedule
π Web Search
Search the web using DuckDuckGo
πΊοΈ Maps
Search locations, get directions, and manage guides with Apple Maps
Installation
Automated Setup (Recommended)
# Install pyapple-mcp
pip install pyapple-mcp
# Run the setup helper to configure Claude Desktop
pyapple-mcp-setup
The setup helper will automatically configure Claude Desktop for you.
Manual Installation
# Install pyapple-mcp
pip install pyapple-mcp
Then configure Claude Desktop by editing ~/Library/Application Support/Claude Desktop/claude_desktop_config.json
:
{
"mcpServers": {
"pyapple": {
"command": "pyapple-mcp"
}
}
}
Requirements
- macOS 10.14+ (Mojave or later)
- Python 3.9+
- Appropriate permissions for accessing Contacts, Calendar, Messages, Mail, Notes, Reminders, and Automation
Usage Examples
Basic Commands
Can you send a message to John Doe saying "Hello from Claude!"?
Find all notes about "AI research" and summarize them
Create a reminder to "Buy groceries" for tomorrow at 5pm
Advanced Workflows
Read my note about the conference attendees, find their contact information, and send them a thank you email
API Reference
Development
# Clone the repository
git clone https://github.com/54yyyu/pyapple-mcp.git
cd pyapple-mcp
# Install dependencies
pip install -e ".[dev]"
# Run the development server
python -m pyapple_mcp.server
Testing
# Test the server
mcp dev pyapple_mcp/server.py
# Test with dependencies
mcp dev pyapple_mcp/server.py --with httpx --with beautifulsoup4
Code Quality
black . # Format code
isort . # Sort imports
mypy . # Type checking
pytest # Run tests