Apple MCP Tools
This server allows AI assistants like Claude to interact with Apple applications and services through the Model Context Protocol (MCP).
Contacts: Search and retrieve contacts
Notes: Search, retrieve, create notes, and manage folders
Messages: Send, read, schedule, and check unread messages
Mail: Read unread emails, search emails, send emails, and list mailboxes/accounts
Reminders: Search, create, list, and open reminders
Calendar: Search, create, list, and open events
Maps: Search locations, manage guides, save favorites, get directions, and manipulate map coordinates
Web Search: Search the web using DuckDuckGo and retrieve content from results
Provides tools for interacting with various Apple applications including Contacts, Notes, Messages, Mail, Reminders, Calendar, and Maps, allowing users to search, create, and manage content within these native macOS applications.
Allows web searches using DuckDuckGo's search engine and retrieval of content from search results.
Enables integration with macOS applications and services, providing access to system features through AppleScript for managing personal information and communication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Apple MCP Toolscreate a reminder to call mom tomorrow at 5pm"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apple MCP (Model Context Protocol) Tools
A collection of tools that allow AI assistants like Claude to interact with Apple applications and services through the Model Context Protocol (MCP).
Overview
This package provides MCP tools for interacting with various Apple applications and services, including:
Contacts: Search and retrieve contacts from Apple Contacts app
Notes: Search, retrieve, create notes, and list folders in Apple Notes app
Messages: Send, read, schedule messages and check unread messages
Mail: Read unread emails, search emails, and send emails
Reminders: Search, create, and open reminders in Apple Reminders app
Calendar: Search, create, and open calendar events in Apple Calendar app
Maps: Search locations, manage guides, save favorites, and get directions
Web Search: Search the web using DuckDuckGo and retrieve content from search results
Related MCP server: MCP Personal Assistant Agent
Installation
# Install with npm
npm install @sage/mcp-apple
# Install with yarn
yarn add @sage/mcp-apple
# Install with bun
bun add @sage/mcp-appleRequirements
macOS operating system
Node.js 18+ or Bun runtime
Appropriate permissions for accessing Apple applications (Contacts, Notes, Messages, Mail, etc.)
Usage
Starting the MCP Server
# Using the CLI
npx apple-mcp
# Using bun
bun run devConnecting to Claude
To use these tools with Claude, you'll need to connect the MCP server to Claude. This can be done using the MCP proxy or directly through Claude's interface if available.
# Example using mcp-proxy
mcp-proxy --server "bun run /path/to/apple-mcp/index.ts"Tool Examples
Contacts
// Search for a contact by name
{
"operation": "contacts",
"name": "John Doe"
}
// List all contacts
{
"operation": "contacts"
}Notes
// Search for notes containing specific text
{
"operation": "notes",
"operation": "search",
"searchText": "meeting notes"
}
// Create a new note
{
"operation": "notes",
"operation": "create",
"title": "Shopping List",
"body": "- Milk\n- Eggs\n- Bread",
"folderName": "Personal"
}
// List all notes in a folder
{
"operation": "notes",
"operation": "list",
"folderName": "Work"
}
// List all folders
{
"operation": "notes",
"operation": "listFolders"
}
// Create a new folder
{
"operation": "notes",
"operation": "createFolder",
"folderName": "Projects"
}Messages
// Send a message
{
"operation": "messages",
"operation": "send",
"phoneNumber": "+1234567890",
"message": "Hello, how are you?"
}
// Read messages from a contact
{
"operation": "messages",
"operation": "read",
"phoneNumber": "+1234567890",
"limit": 5
}
// Schedule a message
{
"operation": "messages",
"operation": "schedule",
"phoneNumber": "+1234567890",
"message": "Don't forget our meeting tomorrow!",
"scheduledTime": "2023-12-01T09:00:00Z"
}
// Check unread messages
{
"operation": "messages",
"operation": "unread"
}// Check unread emails
{
"operation": "mail",
"operation": "unread",
"limit": 10
}
// Search emails
{
"operation": "mail",
"operation": "search",
"searchTerm": "invoice",
"limit": 5
}
// Send an email
{
"operation": "mail",
"operation": "send",
"to": "recipient@example.com",
"subject": "Meeting Agenda",
"body": "Here's the agenda for our meeting tomorrow...",
"cc": "colleague@example.com"
}
// List mailboxes
{
"operation": "mail",
"operation": "mailboxes"
}
// List accounts
{
"operation": "mail",
"operation": "accounts"
}Reminders
// List all reminders
{
"operation": "reminders",
"operation": "list"
}
// Search for reminders
{
"operation": "reminders",
"operation": "search",
"searchText": "groceries"
}
// Create a reminder
{
"operation": "reminders",
"operation": "create",
"name": "Buy milk",
"listName": "Shopping",
"notes": "Get organic milk",
"dueDate": "2023-12-01T18:00:00Z"
}
// Open a reminder
{
"operation": "reminders",
"operation": "open",
"searchText": "Buy milk"
}
// List reminders by list ID
{
"operation": "reminders",
"operation": "listById",
"listId": "x-apple-reminder://list/123456"
}Calendar
// Search for events
{
"operation": "calendar",
"operation": "search",
"searchText": "meeting",
"fromDate": "2023-12-01T00:00:00Z",
"toDate": "2023-12-31T23:59:59Z"
}
// List upcoming events
{
"operation": "calendar",
"operation": "list",
"limit": 5
}
// Create an event
{
"operation": "calendar",
"operation": "create",
"title": "Team Meeting",
"startDate": "2023-12-05T14:00:00Z",
"endDate": "2023-12-05T15:00:00Z",
"location": "Conference Room A",
"notes": "Quarterly review meeting",
"isAllDay": false,
"calendarName": "Work"
}
// Open an event
{
"operation": "calendar",
"operation": "open",
"eventId": "x-apple-calendar://event/123456"
}Maps
// Search for locations
{
"operation": "maps",
"operation": "search",
"query": "coffee shops near me",
"limit": 5
}
// Save a location
{
"operation": "maps",
"operation": "save",
"name": "Favorite Coffee Shop",
"address": "123 Main St, Anytown, USA"
}
// Get directions
{
"operation": "maps",
"operation": "directions",
"fromAddress": "123 Main St, Anytown, USA",
"toAddress": "456 Oak Ave, Anytown, USA",
"transportType": "driving"
}
// Drop a pin
{
"operation": "maps",
"operation": "pin",
"name": "Meeting Point",
"address": "Central Park, New York, NY"
}
// List guides
{
"operation": "maps",
"operation": "listGuides"
}
// Create a guide
{
"operation": "maps",
"operation": "createGuide",
"guideName": "Favorite Restaurants"
}
// Add to guide
{
"operation": "maps",
"operation": "addToGuide",
"guideName": "Favorite Restaurants",
"address": "789 Pine St, Anytown, USA"
}
// Get map center coordinates
{
"operation": "maps",
"operation": "getCenter"
}
// Set map center coordinates
{
"operation": "maps",
"operation": "setCenter",
"latitude": 37.7749,
"longitude": -122.4194
}Web Search
// Search the web
{
"operation": "webSearch",
"query": "how to make chocolate chip cookies"
}Architecture
The Apple MCP tool is built with a modular architecture:
index.ts: Main entry point that sets up the MCP server and registers tools
tools.ts: Defines the tool schemas and descriptions
src/handlers/: Contains handler functions for each tool
src/scripts/: Contains AppleScript scripts for interacting with Apple applications
utils/: Contains utility modules for each Apple service
The tool uses lazy loading to improve performance, only loading modules when they are needed.
Security and Permissions
This tool requires access to various Apple applications and services. You will need to grant permissions when prompted by macOS. These permissions can be managed in System Preferences > Security & Privacy > Privacy.
Development
Setup
# Clone the repository
git clone https://github.com/yourusername/apple-mcp.git
cd apple-mcp
# Install dependencies
bun installRunning in Development Mode
bun run devCode Style
Use 2-space indentation
Keep lines under 100 characters
Use explicit type annotations for function parameters and returns
Follow PascalCase for types, interfaces, and Tool constants
Use camelCase for variables and functions
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Available Tools
8 toolscalendarC
Search, create, and open calendar events in Apple Calendar app
| Name | Required | Description | Default |
|---|---|---|---|
| calendarName | No | Name of the calendar to create the event in (optional for create operation, uses default calendar if not specified) | |
| endDate | No | End date/time of the event in ISO format (required for create operation) | |
| eventId | No | ID of the event to open (required for open operation) | |
| fromDate | No | Start date for search range in ISO format (optional, default is today) | |
| isAllDay | No | Whether the event is an all-day event (optional for create operation, default is false) | |
| limit | No | Number of events to retrieve (optional, default 10) | |
| location | No | Location of the event (optional for create operation) | |
| notes | No | Additional notes for the event (optional for create operation) | |
| operation | Yes | Operation to perform: 'search', 'open', 'list', or 'create' | |
| searchText | No | Text to search for in event titles, locations, and notes (required for search operation) | |
| startDate | No | Start date/time of the event in ISO format (required for create operation) | |
| title | No | Title of the event to create (required for create operation) | |
| toDate | No | End date for search range in ISO format (optional, default is 30 days from now for search, 7 days for list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the Apple Calendar app context but doesn't describe what happens during operations: whether events are saved locally or synced, if changes are reversible, what permissions are needed, or how errors are handled. For a tool with multiple operations including mutations (create), this lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality. It wastes no words while covering the three main operations. Every word earns its place by specifying both actions and target application.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, 4 operations including mutations), no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns for different operations, how errors are handled, or the Apple Calendar integration specifics. For a multi-operation tool with create capabilities, more behavioral and contextual information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what's already in the schema, which has 100% coverage with detailed descriptions for all 13 parameters. The description doesn't explain parameter relationships, such as how operation determines which parameters are relevant, or provide additional context about format requirements beyond ISO dates. With complete schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search, create, and open calendar events in Apple Calendar app', which specifies the actions (search, create, open) and resource (calendar events). It distinguishes from siblings like contacts or mail by focusing on calendar functionality, though it doesn't explicitly differentiate from similar tools like reminders. The description is specific but could be more precise about the 'list' operation mentioned in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose calendar over reminders for event management, or when to use search versus list operations. There's no context about prerequisites, such as needing the Apple Calendar app installed or having appropriate permissions. Usage is implied through the operation parameter but not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contactsC
Search and retrieve contacts from Apple Contacts app
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name to search for (optional - if not provided, returns all contacts). Can be partial name to search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'search and retrieve' but doesn't specify whether this is read-only, requires permissions, has rate limits, or describes the return format. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like safety, permissions, or return values, which are crucial for a search/retrieve tool. The high schema coverage helps, but overall context is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents the single parameter ('name') with its optional nature and partial matching capability. The description adds no additional parameter semantics beyond what the schema provides, meeting the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('search and retrieve') and resource ('contacts from Apple Contacts app'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'calendar' or 'mail', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage solely from the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mailC
Interact with Apple Mail app - read unread emails, search emails, and send emails
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Email account to use (optional - if not provided, searches across all accounts) | |
| bcc | No | BCC email address (optional for send operation) | |
| body | No | Email body content (required for send operation) | |
| cc | No | CC email address (optional for send operation) | |
| limit | No | Number of emails to retrieve (optional, for unread and search operations) | |
| mailbox | No | Mailbox to use (optional - if not provided, uses inbox or searches across all mailboxes) | |
| operation | Yes | Operation to perform: 'unread', 'search', 'send', 'mailboxes', or 'accounts' | |
| searchTerm | No | Text to search for in emails (required for search operation) | |
| subject | No | Email subject (required for send operation) | |
| to | No | Recipient email address (required for send operation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions three operations but omits two ('mailboxes' and 'accounts') listed in the schema. It doesn't describe authentication requirements, rate limits, error conditions, or what 'interact' entails beyond basic operations. The description is incomplete for a multi-operation tool with 10 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in a single sentence listing three main operations. However, it omits two operations from the schema ('mailboxes' and 'accounts'), making it slightly incomplete despite its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 10 parameters, 5 operations, and no annotations or output schema, the description is inadequate. It doesn't explain operation differences, return formats, error handling, or prerequisites. The agent would struggle to use this tool correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 10 parameters. The description adds no parameter-specific information beyond what's in the schema. It mentions operations but doesn't clarify which parameters apply to which operations. Baseline 3 is appropriate when schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Interact with Apple Mail app' with specific verbs (read, search, send) and resources (emails). It distinguishes from siblings by focusing on email functionality rather than calendar, contacts, etc., but doesn't differentiate between email operations within the tool itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use specific operations (unread vs search vs send) or when to choose this tool over sibling tools. It lists capabilities but offers no decision criteria or context for selection among the five operation types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mapsC
Search locations, manage guides, save favorites, and get directions using Apple Maps
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Address of the location (required for save, pin, addToGuide) | |
| fromAddress | No | Starting address for directions (required for directions) | |
| guideName | No | Name of the guide (required for createGuide and addToGuide) | |
| latitude | No | Latitude for the center point (required for setCenter) | |
| limit | No | Maximum number of results to return (optional for search) | |
| longitude | No | Longitude for the center point (required for setCenter) | |
| name | No | Name of the location (required for save and pin) | |
| operation | Yes | Operation to perform with Maps | |
| query | No | Search query for locations (required for search) | |
| toAddress | No | Destination address for directions (required for directions) | |
| transportType | No | Type of transport to use (optional for directions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what the tool can do but fails to describe critical behavioral traits like authentication requirements, rate limits, data persistence for saved items, whether operations are read-only or mutative, or what the return format looks like for different operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that lists all major functions without unnecessary words. It's appropriately sized and front-loaded with the core capabilities, making every word earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 11 parameters, 9 distinct operations, no annotations, and no output schema, the description is insufficient. It doesn't explain how operations differ, what results to expect, error conditions, or behavioral constraints. The description fails to compensate for the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions four functional areas (search, manage guides, save favorites, get directions) which loosely map to some of the 11 parameters, but with 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds minimal value beyond what's in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs (search, manage, save, get) and resources (locations, guides, favorites, directions) using Apple Maps. However, it doesn't differentiate this multi-function tool from its siblings like webSearch or calendar, which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like webSearch for general searches or other mapping tools. It lists functions but gives no context about appropriate use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messagesC
Interact with Apple Messages app - send, read, schedule messages and check unread messages
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of messages to read (optional, for read and unread operations) | |
| message | No | Message to send (required for send and schedule operations) | |
| operation | Yes | Operation to perform: 'send', 'read', 'schedule', or 'unread' | |
| phoneNumber | No | Phone number to send message to (required for send, read, and schedule operations) | |
| scheduledTime | No | ISO string of when to send the message (required for schedule operation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the operations but lacks critical details: it doesn't specify permissions needed (e.g., access to Messages app), side effects (e.g., whether 'send' is immediate or requires confirmation), error handling, or rate limits. For a tool with multiple operations including mutations ('send', 'schedule'), this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in one sentence: 'Interact with Apple Messages app - send, read, schedule messages and check unread messages.' It efficiently lists the four operations without unnecessary elaboration. However, it could be slightly more structured by grouping related operations (e.g., 'send' and 'schedule' as write operations).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 4 distinct operations including mutations) and lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like authentication, side effects, or return values, which are crucial for safe and effective use. The schema covers parameters well, but overall context for agent decision-making is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't clarify parameter dependencies or operational nuances). Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate or enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Interact with Apple Messages app - send, read, schedule messages and check unread messages.' It specifies the verb ('interact with') and resource ('Apple Messages app'), and lists the four operations. However, it doesn't explicitly differentiate this tool from its siblings (e.g., calendar, contacts), though the domain (messages vs. other Apple apps) is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lists operations but doesn't specify contexts, prerequisites, or exclusions (e.g., when to use 'send' vs. 'schedule', or how this differs from other messaging tools). Without such guidance, the agent must infer usage from the operation parameter alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notesC
Search, retrieve, create notes, and list folders in Apple Notes app
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Content of the note to create (required for create operation) | |
| folderName | No | Name of the folder. Used to scope 'search'/'list', specify target for 'create' (note) or 'createFolder', or name the new folder for 'createFolder'. Optional for search/list/create (defaults to 'Claude' for create note). | |
| operation | Yes | Operation to perform: 'search', 'list', 'create', 'listFolders', or 'createFolder' | |
| searchText | No | Text to search for in notes (required for search operation) | |
| title | No | Title of the note to create (required for create operation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it lists operations, it doesn't describe what 'retrieve' means (is it fetch by ID? get latest?), doesn't mention authentication requirements, rate limits, error conditions, or what happens when creating duplicate folders. The description is functional but lacks important behavioral context for a multi-operation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise - a single sentence listing the key operations. It's front-loaded with the most important information (search, retrieve, create, list). While efficient, it could be slightly more structured by separating operations or adding brief context about the Apple Notes integration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-operation tool (5 operations) with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'retrieve' means, doesn't describe return formats for any operation, and provides no context about error handling or Apple Notes-specific constraints. The complexity of the tool (multiple operations with different parameter requirements) demands more comprehensive description than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly with clear descriptions of each field's purpose and requirements. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain parameter interactions, default behaviors, or edge cases. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs (search, retrieve, create, list) and resources (notes, folders in Apple Notes app). It distinguishes this tool from siblings like calendar or contacts by specifying the Apple Notes domain, though it doesn't explicitly differentiate from other note-taking tools that might exist in the ecosystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'search' versus 'list', when to create notes versus folders, or how this tool relates to sibling tools like reminders or messages for similar functionality. No explicit when/when-not statements or alternative recommendations are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remindersC
Search, create, and open reminders in Apple Reminders app
| Name | Required | Description | Default |
|---|---|---|---|
| dueDate | No | Due date for the reminder in ISO format (optional for create operation) | |
| listId | No | ID of the list to get reminders from (required for listById operation) | |
| listName | No | Name of the list to create the reminder in (optional for create operation) | |
| name | No | Name of the reminder to create (required for create operation) | |
| notes | No | Additional notes for the reminder (optional for create operation) | |
| operation | Yes | Operation to perform: 'list', 'search', 'open', 'create', or 'listById' | |
| props | No | Properties to include in the reminders (optional for listById operation) | |
| searchText | No | Text to search for in reminders (required for search and open operations) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It mentions three operations (search, create, open) but omits 'list' and 'listById' from the description, creating inconsistency. It doesn't address permissions, rate limits, platform-specific behaviors, or what 'open' actually does (opens the app? displays details?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality. However, it's incomplete - it mentions only three of the five available operations ('search, create, and open' while omitting 'list' and 'listById'), which creates a minor structural issue despite the concise phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, 5 distinct operations, no annotations, and no output schema, the description is inadequate. It doesn't explain the relationship between operations, doesn't mention the 'operation' parameter that drives functionality, and provides no guidance on return values or error conditions. The agent would struggle to use this effectively without heavy schema reliance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing detailed documentation for all 8 parameters including required conditions and formats. The description adds no parameter-specific information beyond what's already in the schema, so it meets the baseline of 3 where schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search, create, and open reminders in Apple Reminders app' - a specific verb+resource combination that identifies the target application and core operations. However, it doesn't distinguish this from sibling tools like 'calendar' or 'notes' which might have similar CRUD patterns, missing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose 'reminders' over sibling tools like 'calendar' for time-based tasks, or when to use specific operations like 'search' versus 'list'. The agent must infer usage entirely from the operation parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webSearchC
Search the web using DuckDuckGo and retrieve content from search results
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions using DuckDuckGo and retrieving content from search results, it doesn't disclose important behavioral traits like rate limits, authentication requirements, result format, pagination behavior, or whether this is a read-only operation. The description is insufficient for a tool that interacts with external web services.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with a single sentence that efficiently communicates the core functionality. It's front-loaded with the main action ('Search the web') followed by implementation details. There's no wasted verbiage, though it could potentially benefit from slightly more detail given the lack of annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of web search operations and the complete lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what kind of content is retrieved, how results are formatted, whether there are limitations on search scope, or what happens with no results. For a tool that interacts with external services and has no structured output documentation, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'query' clearly documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema. According to the scoring guidelines, when schema coverage is high (>80%), the baseline is 3 even with no parameter information in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Search the web', 'retrieve content') and identifies the resource (web via DuckDuckGo). It distinguishes itself from sibling tools like calendar or mail by focusing on web search functionality. However, it doesn't explicitly differentiate from potential similar search tools that might exist in other contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, limitations, or specific scenarios where web search is preferred over other information retrieval methods. With sibling tools like notes and reminders available, there's no indication of when web search is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v1.0.0- First observed
calendar - First observed
contacts - First observed
mail - First observed
maps - First observed
messages - First observed
notes - First observed
reminders - First observed
webSearch
TDQS
Each tool is clearly distinct, targeting a specific Apple app or service (Calendar, Contacts, Mail, Maps, Messages, Notes, Reminders, WebSearch). There is no overlap in purpose; an agent can easily differentiate between searching contacts versus searching the web or sending messages versus creating reminders.
Seven tools use lowercase, single-word names (calendar, contacts, mail, maps, messages, notes, reminders), which is consistent and readable. However, 'webSearch' deviates with camelCase, breaking the pattern and slightly reducing overall consistency.
With 8 tools, the server is well-scoped for its purpose of interacting with Apple apps and services. Each tool covers a distinct domain, and the count is neither too thin nor overwhelming, fitting typical MCP server ranges (3-15 tools).
The tool set provides comprehensive coverage for core Apple apps, including CRUD-like operations (e.g., search, create, read). Minor gaps exist, such as no explicit update or delete functions for some apps, but agents can likely work around this with the available search and create tools.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
- GoroOAuthai.usegoro
62 real-world tools for agents: search, scraping, social, enrichment, image, video, voice.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables semantic search and retrieval of Apple Notes content, allowing AI assistants to access, search, and create notes using on-device embeddings.4332MIT
- FlicenseNot gradedqualityDmaintenanceA versatile Model Context Protocol server that enables AI assistants to manage calendars, track tasks, handle emails, search the web, and control smart home devices.23-
- FlicenseCqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Apple Reminders on macOS, allowing users to view lists, retrieve, create, complete, and delete reminders through natural language.534-
- AlicenseAqualityDmaintenanceA collection of tools that enables Claude AI and Cursor to access native macOS applications such as Messages, Notes, Contacts, Emails, Reminders, Calendar, and Maps through the Model Context Protocol.719219MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wearesage/mcp-apple'
If you have feedback or need assistance with the MCP directory API, please join our Discord server