Apple Notes

io.github.mgcreaPublished by GitHub account mgcreav1.37.0Updated Nov 7, 2026

Search, read and act on Apple Notes — folders, attachments, writes off by default

Overview

AI-generated overview

Local MCP server that lets an assistant search, read and (if enabled) edit Apple Notes on a Mac, with write tools off by default.

What you can do
  • Inspect the library: run diagnostics, list accounts, folders and notes, and read a note's body
  • Search notes full-text and fetch metadata, optionally through a read-only SQLite index of the Notes store
  • List a note's attachments and save them into a permitted local directory
  • Create, update, move and delete notes, and add attachments, only when writes are explicitly enabled
When to use it
Useful when you want an assistant to look things up in your own Apple Notes library, summarize or reorganize notes, or file new notes, on a Mac where Notes is already in use.
Requirements
Runs as a local npm package via npx on macOS with the Notes app installed; desktop only. macOS Automation permission for Notes is required for everything, and Full Disk Access is needed for index-based search at scale and for saving attachments. Optional environment variables include APPLE_NOTES_ACCOUNTS, APPLE_NOTES_ALLOW_WRITES, APPLE_NOTES_INDEX_MODE, APPLE_NOTES_STORE, APPLE_NOTES_ATTACHMENT_DIR and related tuning settings.
Before you install
Write tools (create, update, move, delete notes, add attachments) exist only when APPLE_NOTES_ALLOW_WRITES is set; once enabled, an assistant can modify or delete notes. APPLE_NOTES_ACCOUNTS limits which accounts are touched. Full Disk Access grants broad read access to the Notes database. Password-protected notes cannot be read. Search results may be stale for the cache TTL. Attachments can only be saved into one configured directory.

Installation

In SourceWeft

  1. Open Apple Notes in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@mgcrea/mcp-apple-notes

Model Context Protocol server for the macOS Apple Notes app.

Unofficial. Not affiliated with Apple. It drives the Notes app that is already on your Mac.

Two lanes

  • Apple Events lane — accounts, folders, bodies, and every mutation. Always the authority: after a write, the result is what Notes re-read.
  • Index lane — read-only SQLite over NoteStore.sqlite, for search and metadata at a scale Apple Events cannot reach. Needs Full Disk Access.

Unlike Mail, the Apple Events lane alone is a working server. Measured on a 921-note library, a full-text search takes 97 ms — against the 74 s that forced Mail onto its index. So you can install this, use it, and only then decide whether to grant Full Disk Access.

It does not scale for ever: there is no index behind it, so every query pays the full cost again. The wall is around 5–10k notes. apple_notes_diagnostics tells you which lane is answering.

PermissionNeeded forWithout it
Automation → Noteseverythingnothing works; you get a -1743 error
Full Disk Accesssearch at scale, save_attachmentthe server still runs, on the Apple Events lane

Neither is granted to Notes.app — it is the reader that needs permission.

Tools

Read: diagnostics, list_accounts, list_folders, list_notes, search_notes, get_note, list_attachments, save_attachment.

Write, registered only when APPLE_NOTES_ALLOW_WRITES=1 — with the flag off they are invisible to the model, not merely refused: create_note, update_note, move_note, delete_notes, add_attachment.

add_attachment is the only way to put an image in a note. An <img> tag in a note's body creates an attachment whose bytes Notes never loads — see docs/notes.md.

Configuration

VariableDefault
APPLE_NOTES_ALLOW_WRITESoffRegister the mutating tools.
APPLE_NOTES_ACCOUNTSallRead-side allowlist, comma-separated.
APPLE_NOTES_INDEX_MODEautoauto | ro | immutable | off.
APPLE_NOTES_STOREautoExplicit NoteStore.sqlite path.
APPLE_NOTES_SEARCH_CACHE_TTL_MS60000How long the body corpus stays warm.
APPLE_NOTES_ATTACHMENT_DIR~/DownloadsThe only directory attachments may be saved into.
APPLE_NOTES_BODY_MAX_BYTES262144Body truncation, to protect the context window.
APPLE_NOTES_OSASCRIPT_TIMEOUT_MS30000Sized for the first-run permission prompt.

Notes that will bite you

  • Notes takes a note's title from the first line of its body. Setting name is silently ignored, so create_note prepends the title as a heading instead.
  • Password-protected notes cannot be read at all. Their text is AES ciphertext at rest, which is why ZICNOTEDATA carries crypto columns; no permission makes it readable.
  • Folders nest. A folder map has to recurse even if your own library happens to be flat.
  • Search caches on a TTL, not on invalidation. Checking whether the cache is stale costs more over Apple Events (128 ms) than redoing the scan (97 ms), so bounded staleness is the honest trade. See docs/notes.md.

Licence

MIT.

Source: packages/notes/README.md at commit 5aea2ad

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

18
  1. v1.37.0LatestNov 7, 2026
  2. v1.36.2Nov 4, 2026
  3. v1.36.1Nov 3, 2026
  4. v1.36.0Oct 30, 2026
  5. v1.35.0Oct 30, 2026
  6. v1.34.0Oct 29, 2026
  7. v1.31.0Oct 26, 2026
  8. v1.30.0Oct 22, 2026
  9. v1.29.1Oct 21, 2026
  10. v1.28.0Oct 13, 2026
  11. v1.27.0Oct 13, 2026
  12. v1.26.0Oct 6, 2026
  13. v1.25.0Oct 3, 2026
  14. v1.24.1Sep 29, 2026
  15. v1.24.0Sep 27, 2026
  16. v1.23.0Sep 19, 2026
  17. v1.22.1Sep 16, 2026
  18. v1.21.1Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts