Skip to main content
Glama
mggrim

apple-reminders-mcp-server

by mggrim

Apple Reminders MCP Server

A Model Context Protocol (MCP) server that provides comprehensive integration with Apple Reminders. Built for use with Claude Desktop, Claude Code, and Claude.ai.

Features

  • 18 Comprehensive Tools - Full CRUD operations for reminders and lists

  • 🗣️ Natural Language Dates - Use "tomorrow at 3pm", "next Monday", "in 3 days"

  • 🔍 Advanced Search - Filter by completion, priority, flags, text, and more

  • 📊 Statistics & Insights - Get overdue reminders, today's tasks, and analytics

  • 🎨 List Customization - Set colors and emblems for reminder lists

  • 🔌 Dual Transport - Works with both stdio (local) and HTTP (remote) connections

  • Real-time - Direct integration with your macOS Reminders app

Related MCP server: MCP Apple Reminders

Installation

Prerequisites

  • macOS (Apple Reminders is macOS-only)

  • Node.js 18.0.0 or higher

  • npm or yarn

Quick Install

# Clone the repository
git clone https://github.com/yourusername/apple-reminders-mcp-server
cd apple-reminders-mcp-server

# Install dependencies
npm install

# Start the server
npm start

The server will start on http://localhost:3001 by default.

Configuration

For Claude Desktop/Code (stdio mode)

Add to your Claude Desktop or Claude Code configuration file:

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

{
  "mcpServers": {
    "apple-reminders": {
      "command": "npx",
      "args": ["tsx", "/Users/yourusername/Projects/mcp/apple-reminders-mcp-server/src/index.ts"],
      "env": {
        "TRANSPORT": "stdio"
      }
    }
  }
}

For Claude.ai (HTTP mode)

  1. Start the server:

    npm start
  2. In Claude.ai settings, add a new MCP connector:

    • URL: http://localhost:3001/mcp

    • The server includes a health check at http://localhost:3001/health

Available Tools

Reminder Operations

Tool

Description

apple_reminders_create

Create a new reminder with natural language dates

apple_reminders_get

Get reminder details by ID

apple_reminders_update

Update reminder properties

apple_reminders_delete

Delete a reminder

apple_reminders_complete

Mark reminder as complete/incomplete

apple_reminders_move

Move reminder to a different list

Search & Query

Tool

Description

apple_reminders_list

List reminders with filters (completion, priority, etc.)

apple_reminders_search

Search reminders by text

apple_reminders_overdue

Get all overdue reminders

apple_reminders_today

Get reminders due today

List Management

Tool

Description

apple_reminders_list_lists

Get all reminder lists

apple_reminders_get_list

Get specific list details

apple_reminders_create_list

Create a new list with color/emblem

apple_reminders_update_list

Update list properties

apple_reminders_delete_list

Delete a list

Utility

Tool

Description

apple_reminders_accounts

List all accounts (typically iCloud)

apple_reminders_stats

Get statistics and analytics

apple_reminders_show

Open a reminder in the Reminders app

Usage Examples

Creating Reminders

// Simple reminder
{
  "name": "Call mom"
}

// With natural language due date
{
  "name": "Submit report",
  "dueDate": "tomorrow at 5pm",
  "priority": "high",
  "listName": "Work"
}

// With all details
{
  "name": "Doctor appointment",
  "body": "Annual checkup at Main Street clinic",
  "dueDate": "next Monday at 2pm",
  "remindMeDate": "Monday at 1:30pm",
  "priority": "high",
  "flagged": true,
  "listName": "Personal"
}

Searching Reminders

// Find all incomplete tasks
{
  "completed": false
}

// Search for specific text
{
  "query": "meeting",
  "listName": "Work"
}

// Filter by priority
{
  "priority": 1,  // High priority
  "flagged": true
}

Managing Lists

// Create a new list with styling
{
  "name": "Q1 Goals",
  "color": "#30D33B",
  "emblem": "education1"
}

Natural Language Date Examples

The server supports natural language date parsing via chrono-node:

  • "tomorrow" → Tomorrow at 00:00

  • "tomorrow at 3pm" → Tomorrow at 15:00

  • "next Monday" → Next Monday at 00:00

  • "in 3 days" → 3 days from now

  • "January 15" → January 15 of current/next year

  • "2025-01-15" → ISO date format also supported

Known Limitations

Due to AppleScript API limitations, the following features are not supported:

  • Subtasks - Nested/indented reminders are not accessible via AppleScript

  • Tags - Hashtags/tags are not accessible via AppleScript

  • Attachments - Images and file attachments are not accessible

  • Nested Lists - All lists are flat (no folders)

Development

Running in Development Mode

npm run dev

Watch Mode (auto-reload on changes)

npm run watch

Environment Variables

  • TRANSPORT - Set to stdio or http (default: http)

  • PORT - HTTP server port (default: 3001)

  • DEBUG - Enable debug logging

  • VERBOSE - Enable verbose logging

Technical Details

Architecture

  • Language: TypeScript (run via tsx)

  • MCP SDK: @modelcontextprotocol/sdk v1.0.0

  • Date Parsing: chrono-node v2.7.0

  • Validation: Zod v3.25.0

  • HTTP Server: Express v4.18.2

Why tsx instead of compiled JavaScript?

This project uses tsx to run TypeScript directly rather than pre-compiling to JavaScript. This approach:

  • Avoids memory issues with complex Zod schema types during TypeScript compilation

  • Provides faster development iteration

  • Maintains full TypeScript type safety

  • Simplifies the build process

File Structure

apple-reminders-mcp-server/
├── src/
│   ├── index.ts              # Server entry point
│   ├── types.ts              # TypeScript interfaces
│   ├── services/
│   │   ├── applescript.ts    # AppleScript execution
│   │   ├── dateUtils.ts      # Date parsing utilities
│   │   └── reminders.ts      # Reminders business logic
│   ├── schemas/
│   │   └── index.ts          # Zod validation schemas
│   └── tools/
│       └── index.ts          # MCP tool registrations
├── package.json
├── tsconfig.json
└── README.md

Troubleshooting

Server won't start

  • Ensure Node.js 18+ is installed: node --version

  • Check if port 3001 is available: lsof -i :3001

  • Verify dependencies are installed: npm install

Reminders app not responding

  • Ensure Reminders app has necessary permissions in System Settings > Privacy & Security

  • Try manually opening Reminders app first

  • Check Console.app for AppleScript errors

Natural language dates not working

  • Ensure chrono-node is installed: npm list chrono-node

  • Check the date format - some complex natural language may not parse

  • Fall back to ISO format if needed: "2025-01-15T15:00:00"

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

Matthew Grimes

Acknowledgments

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/mggrim/apple-reminders-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server