Skip to main content

Apple Reminders MCP Server

PyPI version Python 3.10+ License: MIT Tests

A Model Context Protocol (MCP) server that enables AI assistants to interact with Apple Reminders on macOS. This server provides tools to create, read, list, and delete reminders programmatically through AppleScript.

Features

  • ✅ Create reminders with due dates, times, notes, and locations
  • 📋 List all reminder lists
  • 🔍 Fetch reminders from specific lists (completed or pending)
  • 🗑️ Delete reminders by name
  • 🤖 Compatible with Claude Desktop and other MCP clients
  • 🍎 Native macOS integration via AppleScript
  • 🔒 Input sanitization to prevent AppleScript injection

Demo

https://github.com/user-attachments/assets/d36e0df3-ff4b-4f48-bb29-41ddb5483c6b

Prerequisites

  • macOS (required for AppleScript)
  • Python 3.10 or higher
  • Apple Reminders app

Installation

pip install apple-reminders-mcp

Option 2: Install from source

git clone https://github.com/shreyanshjain05/apple_reminder_mcp_server.git
cd apple_reminder_mcp_server
pip install -e .

Usage

Running the Server

If installed via pip:

apple-reminders-mcp

Or run directly:

python -m apple_reminders_mcp.server

Testing with MCP Inspector

npx @modelcontextprotocol/inspector python3 server.py

This will:

  • Start a proxy server on localhost:6277
  • Open the inspector interface in your browser at http://localhost:6274
  • Display a session token for authentication

Integration with Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "apple-reminders": {
      "command": "python3",
      "args": ["/path/to/apple_reminder_mcp_server/server.py"]
    }
  }
}

Note: Replace /path/to/ with the actual path where you cloned the repo. If you get "Server disconnected" errors, use the full path to your Python executable (run which python3 to find it).

Available Tools

1. create_reminder

Creates a new reminder in Apple Reminders.

Parameters:

  • title (required): The title of the reminder
  • due_date (required): Due date (e.g., "2024-12-25", "tomorrow", "next Friday")
  • due_time (optional): Time in HHMMSS format (default: 090000 for 9 AM)
  • notes (optional): Additional notes/body text
  • list_name (optional): Target list name (default: "Reminder Created using Agent")
  • location (optional): Location for location-based reminders

Example:

{
  "title": "Team Meeting",
  "due_date": "tomorrow",
  "due_time": "140000",
  "notes": "Discuss Q1 goals",
  "list_name": "Work"
}

2. get_reminder

Fetches reminders from a specific list.

Parameters:

  • list_name (required): Name of the reminder list
  • completed (optional): Whether to fetch completed reminders (default: false)
  • limit (optional): Maximum number of reminders to return (default: 20)

3. list_reminder_lists

Returns all available reminder lists. No parameters required.

4. delete_reminder

Deletes a reminder by name.

Parameters:

  • name (required): The exact name of the reminder to delete
  • list_name (optional): Specific list to search in (searches all lists if not provided)

Troubleshooting

Common Issues

  1. Permission errors with AppleScript

    • Grant Terminal/IDE permission to control Reminders in System Preferences → Security & Privacy → Automation
  2. "No reminder list found" error

    • Make sure the list name exactly matches (case-sensitive)
    • Use list_reminder_lists to see available lists
  3. Date parsing errors

    • Use standard formats like "YYYY-MM-DD" or natural language like "tomorrow"

Development

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

Project Structure

apple_reminder_mcp_server/
├── apple_reminders_mcp/
│   ├── __init__.py
│   └── server.py          # Main MCP server implementation
├── tests/
│   └── test_server.py     # Unit tests
├── .github/workflows/
│   ├── test.yml           # CI testing
│   └── publish.yml        # PyPI publishing
├── pyproject.toml         # Package configuration
└── README.md

Contributing

See CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Metadata

Release files for apple-reminders-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apple-reminders-mcp 0.1.0
File Size Uploaded Provenance
apple_reminders_mcp-0.1.0.tar.gz 8.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for apple-reminders-mcp 0.1.0
File Interpreter ABI Platform
apple_reminders_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 25.9 kB

Release files / apple_reminders_mcp-0.1.0.tar.gz

Download URL apple_reminders_mcp-0.1.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dc63bb621203fdaa952cf8e632ab63615c49d53eb6b37b6a40b6403b5ab3e6d6
BLAKE2b-256 checksum
How to use checksums
28a894f809ec91abc7ab40a885fada8854405120d634d248b3d2f2bbd7a1a109
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.

Transparency log

Release files / apple_reminders_mcp-0.1.0-py3-none-any.whl

Download URL apple_reminders_mcp-0.1.0-py3-none-any.whl
Size 17.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b1b020dd77ffaae2f88d23494afee5a4510703a95046d7ef39ff88c90e4e985
BLAKE2b-256 checksum
How to use checksums
cd1d4751cdf2352cd94a73d744b82af62711e3c46522ce37f45956eab8893a97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.

Transparency log

Security for apple-reminders-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for apple_reminders_mcp-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page