Skip to main content
Glama

apple-reminders-mcp

An MCP server that connects Claude Desktop to Apple Reminders on macOS via AppleScript.

Prerequisites

Related MCP server: Apple Reminders MCP Server

Installation

1. Add to Claude Desktop config

Open ~/Library/Application Support/Claude/claude_desktop_config.json and add:

{
  "mcpServers": {
    "apple-reminders": {
      "command": "npx",
      "args": ["-y", "@kamk95/apple-reminders-mcp"]
    }
  }
}

2. Restart Claude Desktop

The first time a reminder tool is used, macOS will prompt you to grant Reminders access — click Allow.


Manual install (alternative)

If you prefer to run from source:

git clone https://github.com/kamrenkennedy/apple-reminders-mcp.git
cd apple-reminders-mcp
npm install

Then use this config instead:

{
  "mcpServers": {
    "apple-reminders": {
      "command": "node",
      "args": ["/absolute/path/to/apple-reminders-mcp/index.js"]
    }
  }
}

Tools

list_reminders

List reminders across all lists or a specific one.

Parameter

Type

Description

list_name

string

Filter to a specific list (optional)

include_completed

boolean

Include completed reminders (default: false)

create_reminder

Create a new reminder.

Parameter

Type

Description

name

string

Required. Title of the reminder

list_name

string

Destination list (default: Reminders) — created if it doesn't exist

due_date

string

Due date in YYYY-MM-DD format

due_time

string

Due time in HH:MM 24-hour format — requires due_date

priority

string

none / low / medium / high / urgent

notes

string

Body/notes text

tags

string[]

Tags to attach

complete_reminder

Mark a reminder as completed.

Parameter

Type

Description

name

string

Required. Exact name of the reminder

list_name

string

Narrow search to this list (optional)

delete_reminder

Permanently delete a reminder.

Parameter

Type

Description

name

string

Required. Exact name of the reminder

list_name

string

Narrow search to this list (optional)

update_reminder

Update any fields on an existing reminder. Only provided fields are changed. If you update notes or tags individually, the other is preserved automatically.

Parameter

Type

Description

name

string

Required. Current name of the reminder

list_name

string

Current list to narrow the search

new_name

string

Rename the reminder

new_list_name

string

Move reminder to this list

due_date

string

New due date in YYYY-MM-DD format

due_time

string

New due time in HH:MM 24-hour format

clear_due_date

boolean

Remove the due date entirely

priority

string

none / low / medium / high / urgent

notes

string

Replace notes text

tags

string[]

Replace tags


Notes

  • Tags are stored inside the reminder's notes field as [tags: tag1, tag2] since the native Reminders tags API is not accessible via AppleScript. They round-trip correctly through all tools.

  • Reminders are matched by exact name. If you have duplicates across lists, pass list_name to disambiguate.

Available Tools

5 tools
complete_reminderC

Mark a reminder as completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact name of the reminder.
list_nameNoNarrow search to this list (useful when duplicate names exist).

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as irreversibility, side effects, authorization requirements, or the resulting state change beyond 'completed'. This is insufficient for a mutation tool.

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

Conciseness3/5

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

The description is very concise (one sentence) but lacks structure. It does not front-load critical information or include any usage notes, making it minimally adequate.

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 mutation tool with no output schema, the description is incomplete. It does not explain the semantics of 'completed', whether it is reversible, or what the response looks like. Important context is missing.

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 the parameters. The description adds no additional meaning or usage hints for the parameters, such as how to find the exact name or when to use list_name.

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 uses a specific verb ('Mark as completed') and resource ('reminder'), clearly distinguishing it from sibling tools like create, delete, update, and list. However, it lacks explicit mention that it requires the exact name, which is only 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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention circumstances where update_reminder might be more appropriate, nor does it give any context about prerequisites or exclusions.

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

create_reminderB

Create a new reminder in Apple Reminders.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTitle of the reminder.
tagsNoTags to attach (stored in the notes field as [tags: ...]).
notesNoBody/notes text.
due_dateNoDue date in YYYY-MM-DD format.
due_timeNoDue time in HH:MM 24-hour format. Requires due_date.
priorityNoReminder priority.
list_nameNoDestination list (default: Reminders). Created if it does not exist.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the basic action with no mention of side effects (e.g., auto-creating lists), silent behavior on duplicate names, or return values.

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 concise sentence, front-loading the purpose. However, it is slightly too terse, missing useful context that could fit in one more sentence.

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?

No output schema exists, yet the description does not explain what the tool returns (e.g., the created reminder object). It also lacks context on prerequisites or error conditions, which is critical for a creation tool.

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 baseline applied. The description adds no additional meaning beyond the schema's own descriptions, making it adequate but not superior.

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

Purpose5/5

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

The description clearly states the action ('Create a new reminder') and the target resource ('in Apple Reminders'), distinguishing it from sibling tools like update_reminder or delete_reminder.

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

Usage Guidelines3/5

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

The description does not provide explicit when-to-use guidance versus alternatives. It implies creation, but no wording on when to use this over updating an existing reminder.

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

delete_reminderB

Permanently delete a reminder.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact name of the reminder to delete.
list_nameNoNarrow search to this list.

TDQS

B3.3/5.0
Behavior3/5

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

The description adds 'permanently' to indicate irreversibility, which is valuable behavioral context beyond the name. However, with no annotations, it could detail more (e.g., side effects, auth requirements, behavior on missing reminder).

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 clear sentence with no wasted words. It is appropriately sized for the tool's simplicity.

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 has no output schema, no annotations, and only two parameters, the description provides minimal context. It does not mention return values, error handling, or prerequisites, leaving gaps for a complete understanding.

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 coverage is 100%, so the input schema already documents both parameters clearly. The description adds no extra meaning beyond what's in the schema, so baseline score of 3 is appropriate.

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 verb 'delete' and resource 'reminder', but does not differentiate from sibling tools like 'complete_reminder'. The purpose is clear but lacks explicit distinction.

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 (e.g., complete_reminder or update_reminder). The description gives no context about prerequisites or when not to use it.

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

list_remindersB

List reminders from Apple Reminders. Optionally filter by list name and include completed items.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_nameNoReturn reminders from this list only. Omit for all lists.
include_completedNoInclude completed reminders (default: false).

TDQS

B3.4/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 full burden. It only states basic listing functionality without disclosing that the operation is read-only, non-destructive, or any other behavioral traits such as permissions or performance constraints.

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 very short (one sentence) and contains no unnecessary words. It is concise, though it could be slightly more structured to front-load key information.

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 has no output schema and no annotations, the description is minimally adequate. It does not mention return format, ordering, or pagination, but for a simple list tool it is acceptable.

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%, baseline is 3. The description's mention of optional filters ('by list name and include completed items') adds no new meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action ('list') and resource ('reminders from Apple Reminders'), and specifies optional filters. It distinguishes itself from sibling tools (complete, create, delete, update) which perform different operations.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool vs alternatives. It implies listing is for viewing reminders, but lacks explicit guidance on when not to use it or when to use sibling tools instead.

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

update_reminderA

Update fields on an existing reminder. Only provided fields are changed. If you update notes OR tags individually, the other is preserved automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCurrent name of the reminder to find.
tagsNoReplace tags (notes preserved if not provided).
notesNoReplace notes text (tags preserved if not provided).
due_dateNoNew due date in YYYY-MM-DD format.
due_timeNoNew due time in HH:MM 24-hour format.
new_nameNoRename the reminder to this.
priorityNoNew priority.
list_nameNoCurrent list to narrow the search.
new_list_nameNoMove reminder to this list.
clear_due_dateNoSet to true to remove the due date entirely.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It discloses partial update and notes/tags preservation, but omits error handling, idempotency, or requirement for the reminder to exist.

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?

Two sentences, front-loaded with the main action, then key behavioral detail. No superfluous words.

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?

With 10 parameters and no output schema or annotations, the description covers core behavior but lacks details on response format, error conditions, and parameter interactions like clear_due_date.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying partial update behavior and tag/notes interaction, which goes beyond schema parameter descriptions.

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

Purpose5/5

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

The description states 'Update fields on an existing reminder' with a specific verb and resource. It clearly distinguishes from sibling tools like create_reminder and delete_reminder.

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

Usage Guidelines4/5

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

The description explains partial update behavior ('Only provided fields are changed'), guiding correct usage. It does not explicitly exclude alternatives but the context of sibling tools makes usage clear.

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. 5 tool updatesv1.0.0
    • First observedcomplete_reminder
    • First observedcreate_reminder
    • First observeddelete_reminder
    • First observedlist_reminders
    • First observedupdate_reminder

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool addresses a distinct action on reminders: create, list, complete, update, and delete. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_reminder, delete_reminder), with verbs clearly indicating the operation.

Tool Count5/5

With 5 tools, the set is well-scoped for managing reminders, covering core operations without unnecessary bloat.

Completeness4/5

CRUD operations are present along with a completion action. Missing a 'get single reminder' tool is a minor gap, but the set is largely complete for its domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers