Skip to main content
Glama

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-apple

Requirements

  • 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 dev

Connecting 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"
}

Mail

// 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
}
// 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 install

Running in Development Mode

bun run dev

Code 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.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Available Tools

8 tools
calendarC

Search, create, and open calendar events in Apple Calendar app

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNameNoName of the calendar to create the event in (optional for create operation, uses default calendar if not specified)
endDateNoEnd date/time of the event in ISO format (required for create operation)
eventIdNoID of the event to open (required for open operation)
fromDateNoStart date for search range in ISO format (optional, default is today)
isAllDayNoWhether the event is an all-day event (optional for create operation, default is false)
limitNoNumber of events to retrieve (optional, default 10)
locationNoLocation of the event (optional for create operation)
notesNoAdditional notes for the event (optional for create operation)
operationYesOperation to perform: 'search', 'open', 'list', or 'create'
searchTextNoText to search for in event titles, locations, and notes (required for search operation)
startDateNoStart date/time of the event in ISO format (required for create operation)
titleNoTitle of the event to create (required for create operation)
toDateNoEnd date for search range in ISO format (optional, default is 30 days from now for search, 7 days for list)

TDQS

C2.9/5.0
Behavior2/5

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 but provides minimal information. It mentions the Apple Calendar app context but doesn't describe what happens during operations (e.g., whether 'create' opens the app, saves automatically, requires confirmation), error conditions, rate limits, or permission requirements. For a multi-operation tool with 13 parameters, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just 8 words, front-loading the core functionality without any wasted words. It efficiently communicates the three main operations and target application in a single, clear phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 13 parameters, 4 distinct operations, and no annotations or output schema, the description is inadequate. It doesn't explain what the tool returns for different operations, how operations differ behaviorally, what happens in the Apple Calendar app, or any system dependencies. The agent would struggle to use this tool effectively based solely on the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no parameter-specific information beyond what's already in the schema, which has 100% coverage. While the schema thoroughly documents all 13 parameters with descriptions and requirements, the description doesn't add any additional context about parameter interactions, default behaviors, or usage patterns across different operations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 events, though it doesn't explicitly differentiate from other potential calendar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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' vs 'list' operations, when to use this tool over other calendar management options, or any prerequisites for operations like 'create' that might require specific permissions or app states.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contactsB

Search and retrieve contacts from Apple Contacts app

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName to search for (optional - if not provided, returns all contacts). Can be partial name to search.

TDQS

B3.1/5.0
Behavior2/5

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 states the tool searches and retrieves contacts, implying a read-only operation, but doesn't specify permissions needed, whether it accesses local or synced data, rate limits, or what the return format looks like (e.g., list of contacts with fields). This leaves significant gaps for a tool interacting with personal data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the core purpose ('Search and retrieve contacts') and specifies the source ('from Apple Contacts app'), making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (searching personal contacts), lack of annotations, and no output schema, the description is minimally adequate. It states what the tool does but omits critical context like return format, error handling, or data sensitivity considerations. It relies heavily on the schema for parameter details, leaving behavioral aspects underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents the single optional parameter. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples of search syntax or format). This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 a specific verb ('Search and retrieve') and resource ('contacts from Apple Contacts app'). It distinguishes itself from siblings like calendar or mail by focusing on contacts, but doesn't explicitly differentiate from potential contact-related 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.

Usage Guidelines2/5

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 scenarios where other tools might be more appropriate. The agent must infer usage from the purpose alone.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoEmail account to use (optional - if not provided, searches across all accounts)
bccNoBCC email address (optional for send operation)
bodyNoEmail body content (required for send operation)
ccNoCC email address (optional for send operation)
limitNoNumber of emails to retrieve (optional, for unread and search operations)
mailboxNoMailbox to use (optional - if not provided, uses inbox or searches across all mailboxes)
operationYesOperation to perform: 'unread', 'search', 'send', 'mailboxes', or 'accounts'
searchTermNoText to search for in emails (required for search operation)
subjectNoEmail subject (required for send operation)
toNoRecipient email address (required for send operation)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoAddress of the location (required for save, pin, addToGuide)
fromAddressNoStarting address for directions (required for directions)
guideNameNoName of the guide (required for createGuide and addToGuide)
latitudeNoLatitude for the center point (required for setCenter)
limitNoMaximum number of results to return (optional for search)
longitudeNoLongitude for the center point (required for setCenter)
nameNoName of the location (required for save and pin)
operationYesOperation to perform with Maps
queryNoSearch query for locations (required for search)
toAddressNoDestination address for directions (required for directions)
transportTypeNoType of transport to use (optional for directions)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of messages to read (optional, for read and unread operations)
messageNoMessage to send (required for send and schedule operations)
operationYesOperation to perform: 'send', 'read', 'schedule', or 'unread'
phoneNumberNoPhone number to send message to (required for send, read, and schedule operations)
scheduledTimeNoISO string of when to send the message (required for schedule operation)

TDQS

C2.9/5.0
Behavior2/5

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 operations like 'send' and 'schedule,' which imply mutations, but doesn't state whether these require user confirmation, have rate limits, or affect device state. For a tool with multiple operations including writes, this is inadequate, as it omits critical behavioral traits like safety or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, stating the core purpose in a single sentence. It efficiently lists the four operations without unnecessary details. However, it could be slightly more structured by grouping related operations or adding brief context, but overall, it avoids waste and is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity with 5 parameters, multiple operations including mutations, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, usage contexts, or return values, leaving gaps that could hinder an AI agent's ability to invoke the tool correctly. For a multi-operation tool with no structured safety hints, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal meaning beyond the input schema, which has 100% coverage. It implies that parameters are tied to specific operations (e.g., 'message' for 'send'), but doesn't elaborate on semantics like format constraints or dependencies. Since the schema descriptions are comprehensive, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 from sibling tools like 'contacts' or 'mail,' which could have overlapping communication functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. For example, it doesn't mention if 'schedule' requires specific permissions or if 'read' is limited to recent messages. With sibling tools like 'calendar' and 'reminders' that might handle scheduling, this lack of differentiation is a significant gap.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoContent of the note to create (required for create operation)
folderNameNoName 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).
operationYesOperation to perform: 'search', 'list', 'create', 'listFolders', or 'createFolder'
searchTextNoText to search for in notes (required for search operation)
titleNoTitle of the note to create (required for create operation)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dueDateNoDue date for the reminder in ISO format (optional for create operation)
listIdNoID of the list to get reminders from (required for listById operation)
listNameNoName of the list to create the reminder in (optional for create operation)
nameNoName of the reminder to create (required for create operation)
notesNoAdditional notes for the reminder (optional for create operation)
operationYesOperation to perform: 'list', 'search', 'open', 'create', or 'listById'
propsNoProperties to include in the reminders (optional for listById operation)
searchTextNoText to search for in reminders (required for search and open operations)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only mentions operations without behavioral details. It doesn't disclose permissions needed, rate limits, whether operations are destructive (e.g., 'create' modifies data), or how 'open' behaves. This leaves critical behavioral traits unspecified 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads key operations. It avoids redundancy but could be more structured by clarifying operation distinctions. Every word earns its place, though it's slightly under-specified for a multi-operation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or how operations interact with parameters (e.g., which params are needed for each operation). Given the complexity, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond listing operations, which the schema's 'operation' enum already covers. Baseline 3 is appropriate as the schema handles parameter semantics effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool can 'Search, create, and open reminders in Apple Reminders app', which provides a general purpose but lacks specificity about what 'reminders' are or how operations differ. It distinguishes from siblings like 'calendar' or 'notes' by mentioning 'Apple Reminders app', but doesn't clarify functional boundaries between operations (e.g., 'list' vs 'listById').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'notes' or 'calendar', or when to choose between operations (e.g., 'list' vs 'search'). The description lists operations but doesn't provide context for selection, leaving usage decisions to the agent without support.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to look up

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 8 tool updatesv1.0.0
    • First observedcalendar
    • First observedcontacts
    • First observedmail
    • First observedmaps
    • First observedmessages
    • First observednotes
    • First observedreminders
    • First observedwebSearch

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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).

Completeness4/5

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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    2,008 npm
    2
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    A 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.
    5
    37
    -
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    7
    106 npm
    19
    MIT

Appeared in Searches