MCP server for querying and managing Apple Notes on macOS
Apple Notes MCP demonstrates solid tool design with consistent naming (verb_noun pattern), comprehensive parameter descriptions, and proper Zod schema validation. All 10 tools have clear descriptions (avg ~120 chars) and well-documented parameters. Tool annotations (readOnlyHint, destructiveHint) are correctly applied. However, output schemas are not explicitly documented, responses are JSON-serialized but lack formal schema declarations. Error handling is minimal; no recovery guidance or actionable error messages visible in the code. Some parameter relationships (e.g., noteId vs title lookup fallback) could be more explicit. Dry-run patterns on destructive operations (notes_delete, notes_move) are excellent for safety.
Create a new Apple Note in a target folder. bodyHtml should be valid lightweight HTML such as div, p, ul, ol, li, h1-h3.
Create a folder in an Apple Notes account.
Delete an Apple Note. Defaults to dryRun=true so clients can verify the resolved note before deletion.
Read a full Apple Note, including plaintext and HTML body.
List Apple Notes accounts available to the current macOS user.
List Apple Notes folders, optionally scoped to one account.
Move a note to another folder, including folders in another account. Defaults to dryRun=true so clients can verify the resolved note and destination before moving.
Output schemas not formally documented. Tools return JSON via jsonContent() helper, but no schema definitions are provided to clients. LLMs cannot predict response structure for planning downstream calls.
No error handling or recovery guidance in tool implementations. Code does not show try-catch blocks, validation errors, or actionable error messages. If AppleScript fails or a note is not found, the LLM receives no guidance on what to do next.
Parameter relationships underdocumented. notes_get, notes_update, notes_move, and notes_delete accept both noteId and title+accountName+folderName, but the fallback logic and mutual exclusivity are not explicitly stated in descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Search Apple Notes by title and plaintext body. Returns stable IDs for follow-up read, update, move, and delete tools.
Check whether Apple Notes automation is available and return account/note counts.
Update a note title and/or HTML body. Prefer noteId lookup for correctness.
notes_search result limit defaults to 25 but max is 200. No pagination cursor or offset mechanism visible. Large result sets could exhaust context window; no guidance on how to iterate through results.
Dry-run pattern on destructive operations is excellent, but no confirmation/approval workflow documented. If dryRun=false is passed, the operation executes immediately with no user confirmation step.