A Python implementation of the Model Context Protocol server for Apple Applications
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"iflow-mcp-python-apple-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# Python Apple MCP (Model Context Protocol) A Python implementation of the server that handles interactions with macOS applications such as Contacts, Notes, Mail, Messages, Reminders, Calendar, and Maps using FastMCP. ## Features - Interact with macOS native applications through AppleScript - Asynchronous operations for better performance - Comprehensive error handling - Type-safe interfaces using Pydantic models - Extensive test coverage - Modular design for easy extension ## Supported Applications - Contacts - Notes - Mail - Messages - Reminders - Calendar - Maps ## Installation 1. Clone the repository: ```bash git clone https://github.com/jxnl/python-apple-mcp.git cd python-apple-mcp ``` 2. Create a virtual environment: ```bash python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate ``` 3. Install dependencies: ```bash pip install -r requirements.txt ``` 4. Install test dependencies (optional): ```bash pip install -r requirements-test.txt ``` ## Usage ### Basic Example ```python from apple_mcp import FastMCP, Context # Initialize FastMCP server mcp = FastMCP("Apple MCP") # Use the tools @mcp.tool() def find_contact(name: str) -> List[Contact]: """Search for contacts by name""" # Implementation here pass # Run the server if __name__ == "__main__": mcp.run() ``` ### Using Individual Modules ```python from utils.contacts import ContactsModule from utils.notes import NotesModule # Initialize modules contacts = ContactsModule() notes = NotesModule() # Use the modules async def main(): # Find a contact contact = await contacts.find_contact("John") # Create a note await notes.create_note( title="Meeting Notes", body="Discussion points...", folder_name="Work" ) # Run the async code import asyncio asyncio.run(main()) ``` ## Testing Run the test suite: ```bash pytest ``` Run tests with coverage: ```bash pytest --cov=utils tests/ ``` Run specific test file: `…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.