mcpField
A
Apple Notes

Apple Notes

Local
cupertino.mgcrea.ioProductivity5Updated today

About Apple Notes

An MCP server for reading and managing Apple Notes on macOS, using Apple Events and an optional read-only SQLite index. Write tools are disabled by default and can be enabled separately.

Key features

  1. 01Search notes and read their contents
  2. 02Browse accounts, folders, and attachments
  3. 03Save attachments
  4. 04Write tools disabled by default

Use cases

  1. 01Find notes by keywords
  2. 02Read notes and inspect attachment details
  3. 03Enable write tools to manage notes

MCP support

Exposes Apple Notes search, read, and attachment tools to MCP clients. Create, update, move, and delete tools are registered only when APPLE_NOTES_ALLOW_WRITES=1.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"mgcrea-mcp-apple-notes": {
"command": "npx",
"args": [
"-y",
"@mgcrea/mcp-apple-notes"
],
"env": {
"APPLE_NOTES_ALLOW_WRITES": "<APPLE_NOTES_ALLOW_WRITES>",
"APPLE_NOTES_ACCOUNTS": "<APPLE_NOTES_ACCOUNTS>"
}
}
}
}
Run commandnpx -y @mgcrea/mcp-apple-notes
Environment variables to set
APPLE_NOTES_ALLOW_WRITESRegister the mutating tools. Off by default, and the gate decides whether the write tools exist at all rather than merely refusing — an agent with writes off cannot see them.
APPLE_NOTES_ACCOUNTSRestrict every read and write to these Notes accounts, by name.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mgcrea/mcp-apple-notes1.31.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project 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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.