createReminder
Add tasks to Apple Reminders with list name, title, due date, and notes. This tool helps users organize and track their to-dos through AI assistants.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| listName | Yes | ||
| title | Yes | ||
| dueDate | No | ||
| notes | No |
Implementation Reference
- src/index.ts:71-89 (handler)Handler function for the MCP 'createReminder' tool. It calls the helper function from reminders.ts, handles success/error responses in MCP format.async ({ listName, title, dueDate, notes }) => { try { const success = await reminders.createReminder(listName, title, dueDate, notes); return { content: [{ type: "text", text: JSON.stringify({ success, message: success ? "Reminder created" : "Failed to create reminder" }) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ error: "Failed to create reminder" }) }], isError: true }; } }
- src/index.ts:65-70 (schema)Zod input schema defining parameters: listName (required), title (required), dueDate (optional), notes (optional).{ listName: z.string(), title: z.string(), dueDate: z.string().optional(), notes: z.string().optional() },
- src/index.ts:63-90 (registration)Registration of the 'createReminder' tool with the MCP server using server.tool(name, schema, handler).server.tool( "createReminder", { listName: z.string(), title: z.string(), dueDate: z.string().optional(), notes: z.string().optional() }, async ({ listName, title, dueDate, notes }) => { try { const success = await reminders.createReminder(listName, title, dueDate, notes); return { content: [{ type: "text", text: JSON.stringify({ success, message: success ? "Reminder created" : "Failed to create reminder" }) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ error: "Failed to create reminder" }) }], isError: true }; } } );
- src/reminders.ts:68-99 (helper)Core helper function implementing the reminder creation logic using the node-reminders library. Finds the target list, prepares data, creates the reminder, and returns success boolean.export async function createReminder(listName: string, title: string, dueDate?: string, notes?: string): Promise<boolean> { try { // First get the list ID by name const lists = await reminders.getLists(); const targetList = lists.find(list => list.name === listName); if (!targetList) { throw new Error(`List "${listName}" not found`); } // Prepare reminder data const reminderData: any = { name: title }; if (dueDate) { reminderData.dueDate = new Date(dueDate); } if (notes) { reminderData.body = notes; } // Create the reminder const newReminderId = await reminders.createReminder(targetList.id, reminderData); return !!newReminderId; } catch (error) { console.error(`Failed to create reminder "${title}" in list "${listName}":`, error); throw new Error(`Failed to create reminder: ${error}`); } }