Local MCP server for semantic search and management of Apple Notes with on-device embeddings and folder support.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent ā or use 1-click editor setup below.
The install command below didn't complete successfully in our automated test.
npx -y Ifnpm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/If - Not found npm ERR! 404 npm ERR! 404 'If@*' is not in this registry. npm ERR! 404 This package name is not valid, because npm ERR! 404 1. name can no longer contain capital letters npm ERR! 404 npm ERR! 404 Note that you can also install from a npm ERR! 404 tarball, folder, http url, or git url. npm ERR! A complete log of this run can be found in: /home/user/.npm/_logs/2026-09-07T12_12_25_829Z-debug-0.log
This is an experimental automated check and can have false negatives ā missing environment variables, a slow cold install, etc. It doesnāt necessarily mean somethingās wrong. Last checked 4d ago.
š” Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by MCP Apple Notes.
index-notesIndex all notes for semantic search. Run this first
list-foldersList all Apple Notes folders with full paths and note counts
list-notesList notes with metadata. Optional `path` filter, `includeContent` flag, and `contentPreviewChars` (HTML-stripped per-note preview truncated to N chars ā one fast call, avoids the response token cap when listing many notes' content)
search-notesSemantic + full-text search with optional path filter and limit
get-noteGet full content by noteId or title. Returns candidates on ambiguity
create-noteCreate a new note with markdown content, optionally in a folder

A Model Context Protocol (MCP) server that enables semantic search and RAG (Retrieval Augmented Generation) over your Apple Notes. Works with any MCP-compatible client ā Claude Desktop, Cursor, Windsurf, Cline, and others.

all-MiniLM-L6-v2 on-device embeddings modelBecause this server interacts with your private Apple Notes, it is designed with absolute transparency in mind. It runs 100% locally on your Mac.
all-MiniLM-L6-v2 model runs locally via @huggingface/transformers.index.ts) before it ever touches your notes.Choose the installation method that fits your workflow.
By cloning the repository locally, you can inspect the source code and know exactly what is executing on your machine.
Prerequisites: Node.js (v18+) or Bun
Then add the server to your MCP client config. Replace /path/to/mcp-apple-notes with where you cloned the repo:
Tip: Want to try it without risk? Enable read-only mode to block all write operations while you explore.
"env": { "MCP_APPLE_NOTES_READ_ONLY": "1" }
If you prefer a zero-setup approach and trust the published npm package, you can simply add this directly to your MCP config:
After setup, restart your client and ask your AI assistant to "index my notes" to get started.
claude_desktop_config.jsonLogs:
Add the JSON config to ~/.cursor/mcp.json (global) or .cursor/mcp.json in your project root.
Add the JSON config to ~/.windsurf/mcp.json.
| Tool | Description |
|---|---|
index-notes | Index all notes for semantic search. Run this first |
list-folders | List all Apple Notes folders with full paths and note counts |
list-notes | List notes with metadata. Optional path filter, includeContent flag, and contentPreviewChars (HTML-stripped per-note preview truncated to N chars ā one fast call, avoids the response token cap when listing many notes' content) |
search-notes | Semantic + full-text search with optional path filter and limit |
get-note | Get full content by noteId or title. Returns candidates on ambiguity |
create-note | Create a new note with markdown content, optionally in a folder |
edit-note | Edit title and/or content (markdown) of an existing note |
append-to-note | Append markdown content to an existing note |
move-note | Move a note to a different folder |
delete-note | Delete a note (moves to Recently Deleted) |
Every Apple Notes operation is a JXA call you can inspect in index.ts. No network requests, no background syncing ā just local scripting bridge calls.
Want a safety net? Enable read-only mode to block all write operations ā only search, list, and read tools will be available:
When enabled, only these tools are available: index-notes, list-folders, list-notes, search-notes, get-note.
Enable verbose logging to see every JXA call before it executes (logged to stderr):
CLI flag ā add --verbose to your MCP client config args:
Environment variable ā for clients that support env:
Factual signals from GitHub, npm, and our automated checks ā not a rating.
No reviews yet ā be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/dan8oren-mcp-apple-notes)<a href="https://allmcps.com/mcp/dan8oren-mcp-apple-notes"><img src="https://allmcps.com/api/badge/dan8oren-mcp-apple-notes?style=directory" alt="MCP Apple Notes on AllMCPs" /></a>