提醒事项管理服务

一个提供Claude与macOS Apple Reminders应用无缝集成的MCP服务器,支持创建、读取、更新和删除提醒事项,适用于个人任务管理和团队协作。

  • by dbmcco
  • TypeScript
  • 本地部署
  • 31 星标
  • 更新于
在 GitHub 查看 dbmcco/apple-reminders-mcp

使用说明

Apple Reminders MCP 服务器

一个模型上下文协议(MCP)服务器,实现Claude与macOS上的Apple Reminders应用之间的无缝集成。该服务器采用TypeScript和AppleScript构建,以确保可靠地访问原生的Reminders功能。

特点

  • 完整的提醒管理创建、读取、更新和删除提醒
  • 列表管理跨多个列表访问和管理提醒事项
  • 高级过滤按文本搜索,按完成状态筛选,或针对特定列表
  • 丰富的元数据截止日期、优先级、备注、创建/修改时间戳
  • 原生集成与AppleScript直接集成,无任何外部依赖
  • 类型安全使用TypeScript构建,以确保可靠性和可维护性

要求

  • **macOS(发音为“Mac OS”)**此服务器使用AppleScript,并需要安装了Reminders应用的macOS系统
  • Node.js版本16或更高版本
  • Claude Desktop(可译为“Claude桌面版”或保持原样,若“Claude”是特定产品名且无需意译) 或者 **Claude 命令行接口(CLI)**用于MCP集成

安装

来自来源

  1. 克隆此存储库:
git clone https://github.com/dbmcco/apple-reminders-mcp.git
cd apple-reminders-mcp
  1. 安装依赖项:
npm install
  1. 构建服务器:
npm run build

配置

对于Claude Desktop

将此添加到您的Claude桌面配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json):

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

对于Claude Code CLI

运行此命令:

claude mcp add -s user reminders node /absolute/path/to/apple-reminders-mcp/dist/index.js

重要的替换 /absolute/path/to/apple-reminders-mcp 以及你克隆此仓库的实际路径。

可用的MCP工具

list_reminder_lists

获取所有可用的提醒列表。

退货包含列表的数组 name 和 id 属性。

示例:

// Response:
[
  {"name": "Reminders", "id": "x-apple-reminder://..."},
  {"name": "Work", "id": "x-apple-reminder://..."},
  {"name": "Personal", "id": "x-apple-reminder://..."}
]

get_reminders

检索提醒,并可选择性地进行过滤。

参数:

  • listName (字符串,可选):通过特定列表名称进行过滤
  • completed (布尔值,可选):按完成状态过滤
  • searchTerm (字符串,可选):在名称和正文中搜索

回报包含完整元数据的提醒对象数组。

示例:

// Get all incomplete reminders
get_reminders(undefined, false)

// Get all reminders from "Work" list
get_reminders("Work")

// Get completed reminders from "Personal" list
get_reminders("Personal", true)

// Search for reminders containing "meeting"
get_reminders(undefined, undefined, "meeting")

create_reminder

在指定列表中创建一个新的提醒。

参数:

  • name (字符串,必填):提醒标题
  • listName (字符串,必填):目标列表名称
  • body (字符串,可选):备注/描述
  • dueDate (字符串,可选):截止日期,格式为“MM/DD/YYYY HH:MM AM/PM”
  • priority (数字,可选):0=无,1=高,5=中,9=低

退货创建的提醒的ID。

示例:

// Simple reminder
create_reminder("Buy groceries", "Personal")

// Reminder with due date and priority
create_reminder(
  "Submit report",
  "Work",
  "Include Q4 metrics",
  "12/31/2025 5:00 PM",
  1
)

// Reminder with notes
create_reminder(
  "Call dentist",
  "Personal",
  "Schedule annual checkup"
)

update_reminder

更新现有的提醒。

参数:

  • reminderId (字符串,必填):要更新的提醒的ID
  • name (字符串,可选):新标题
  • body (字符串,可选):新备注
  • completed (布尔值,可选):完成状态
  • dueDate (字符串,可选):新的截止日期
  • priority (数字,可选):新优先级

示例:

// Mark reminder as complete
update_reminder("x-apple-reminder://...", {completed: true})

// Update due date
update_reminder("x-apple-reminder://...", {
  dueDate: "01/15/2026 2:00 PM"
})

// Update multiple fields
update_reminder("x-apple-reminder://...", {
  name: "Updated title",
  body: "New notes",
  priority: 1
})

delete_reminder

永久删除提醒。

参数:

  • reminderId (字符串,必填):要删除的提醒的ID

示例:

delete_reminder("x-apple-reminder://...")

search_reminders

在名称或内容中按文本搜索提醒。

参数:

  • searchTerm (字符串,必填):要搜索的文本

退货匹配的提醒对象数组。

示例:

// Find all reminders mentioning "Claude"
search_reminders("Claude")

使用示例

示例1:日常任务管理

You: Show me all incomplete tasks from my "Today" list
Claude: [uses get_reminders("Today", false)]

You: Mark the first one as complete
Claude: [uses update_reminder with completed: true]

示例2:快速捕捉

You: Remind me to call John tomorrow at 2pm
Claude: [uses create_reminder with due date]

示例3:项目组织

You: Show me all reminders related to the "Website" project
Claude: [uses search_reminders("Website")]

You: Move them all to the "Work" list
Claude: [uses update_reminder for each result]

示例4:每周回顾

You: What did I complete this week in my "Personal" list?
Claude: [uses get_reminders("Personal", true)]

数据模型

提醒对象

{
  id: string;                 // Unique reminder ID
  name: string;               // Reminder title
  body?: string;              // Optional notes/description
  completed: boolean;         // Completion status
  list: string;               // Parent list name
  dueDate?: string;           // Optional due date
  priority: number;           // 0=none, 1=high, 5=medium, 9=low
  creationDate: string;       // When reminder was created
  modificationDate: string;   // When last modified
}

提醒列表对象

{
  name: string;  // List display name
  id: string;    // Unique list ID
}

发展

构建

npm run build

观看模式

npm run dev

直接运行服务器

npm run start

建筑学

这个MCP服务器采用了整洁架构:

  1. MCP服务器层 (index.ts): 处理MCP协议通信
  2. AppleScript 执行器 (applescript-executor.ts):管理所有与“提醒事项”应用的交互
  3. 类型安全Zod验证与TypeScript确保可靠性

AppleScript 集成使用 osascript 为了实现直接系统集成,避免外部依赖和应用程序迁移问题。

故障排除

权限问题

如果你遇到权限错误,请确保:

  1. 终端(或您的应用程序)已获得提醒事项的自动化权限
  2. 前往“系统偏好设置”>“安全性与隐私”>“隐私”>“自动化”
  3. 启用运行此服务器的应用程序的访问权限

日期格式问题

截止日期必须使用以下格式: "MM/DD/YYYY HH:MM AM/PM"

示例:

  • "12/25/2025 9:00 AM"
  • "01/01/2026 11:30 PM"

提醒ID

提醒ID是系统生成的Apple URL(例如。, x-apple-reminder://...)。 它们在不同系统之间无法移植,但在单一macOS安装环境中是稳定的。

功劳/贡献

使用Model Context Protocol SDK,基于Claude(Anthropic)构建。

许可证

MIT 许可证 - 详情请参见 LICENSE 文件

做出贡献

欢迎贡献!请随时提交问题或拉取请求。

支持

对于问题、疑问或功能请求,请在GitHub上提交一个议题。