AI prompts
base on Collection of apple-native tools for the model context protocol. # Apple MCP tools
[](https://smithery.ai/server/@Dhravya/apple-mcp)
This is a collection of apple-native tools for the [MCP protocol](https://modelcontextprotocol.com/docs/mcp-protocol).
Here's a step-by-step video about how to set this up, with a demo. - https://x.com/DhravyaShah/status/1892694077679763671
<a href="https://glama.ai/mcp/servers/gq2qg6kxtu">
<img width="380" height="200" src="https://glama.ai/mcp/servers/gq2qg6kxtu/badge" alt="Apple Server MCP server" />
</a>

<details>
<summary>Here's the JSON to copy</summary>
```
{
"mcpServers": {
"apple-mcp": {
"command": "bunx",
"args": ["--no-cache", "apple-mcp@latest"]
}
}
```
</details>
#### Quick install
To install Apple MCP for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@Dhravya/apple-mcp):
```bash
npx -y @smithery/cli@latest install @Dhravya/apple-mcp --client claude
```
... and for cursor, you can do:
```bash
npx -y @smithery/cli@latest install @Dhravya/apple-mcp --client cursor
```
## Features
- Messages:
- Send messages using the Apple Messages app
- Read out messages
- Notes:
- List notes
- Search & read notes in Apple Notes app
- Contacts:
- Search contacts for sending messages
- Emails:
- Send emails with multiple recipients (to, cc, bcc) and file attachments
- Search emails with custom queries, mailbox selection, and result limits
- Schedule emails for future delivery
- List and manage scheduled emails
- Check unread email counts globally or per mailbox
- Reminders:
- List all reminders and reminder lists
- Search for reminders by text
- Create new reminders with optional due dates and notes
- Open the Reminders app to view specific reminders
- Calendar:
- Search calendar events with customizable date ranges
- List upcoming events
- Create new calendar events with details like title, location, and notes
- Open calendar events in the Calendar app
- Web Search:
- Search the web using DuckDuckGo
- Retrieve and process content from search results
- Maps:
- Search for locations and addresses
- Save locations to favorites
- Get directions between locations
- Drop pins on the map
- Create and list guides
- Add places to guides
- TODO: Search and open photos in Apple Photos app
- TODO: Search and open music in Apple Music app
You can also daisy-chain commands to create a workflow. Like:
"can you please read the note about people i met in the conference, find their contacts and emails, and send them a message saying thank you for the time."
(it works!)
#### Manual installation
You just need bun, install with `brew install oven-sh/bun/bun`
Now, edit your `claude_desktop_config.json` with this:
```claude_desktop_config.json
{
"mcpServers": {
"apple-mcp": {
"command": "bunx",
"args": ["@dhravya/apple-mcp@latest"]
}
}
}
```
### Usage
Now, ask Claude to use the `apple-mcp` tool.
```
Can you send a message to John Doe?
```
```
find all the notes related to AI and send it to my girlfriend
```
```
create a reminder to "Buy groceries" for tomorrow at 5pm
```
## Local Development
```bash
git clone https://github.com/dhravya/apple-mcp.git
cd apple-mcp
bun install
bun run index.ts
```
enjoy!
", Assign "at most 3 tags" to the expected json: {"id":"13997","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"