LABSCO SUMMARY
The embedding model runs on your machine, so private notes stay private.
That is the reason to pick this over syncing notes into a hosted index: nothing is uploaded, there is no key to manage, and search still works on meaning rather than exact words. You do have to run the indexing step first, and it is a manual ask rather than a background job.
What it is
A server that indexes Apple Notes into a local vector store and lets an assistant search and reference them during a conversation.
What you get
- Semantic search over your notes using the all-MiniLM-L6-v2 embeddings model, running on-device
- Full-text search alongside it
- Vector storage in LanceDB, kept locally
- Native Apple Notes access through JXA — no export step
- Storing notes back into Notes from the conversation
- Fully local execution, with no API keys involved
Requirements
macOS with Apple Notes, Bun, and a clone of the repository — point your client at bun and the path to index.ts. Ask the assistant to index your notes once before searching. Notes come back in HTML today, so formatting is rough around the edges.
Setup effort
Build from source — git clone https://github.com/RafalWilinski/mcp-apple-notes
USE CASES
Finding a note when you forgot the words you used
Search by what the note was about; semantic matching gets you there without the exact phrase.
Pulling your own notes into an answer
Let the assistant reference what you already wrote instead of you pasting it in.
Capturing something back into Notes
Save a note from the conversation into Apple Notes directly.
Keeping personal material off third-party servers
Index and search entirely on-device, with no API key anywhere in the setup.
BEFORE YOU INSTALL
What to know first
Requires
- macOS with Apple Notes (read through JXA)
- Bun
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/RafalWilinski/mcp-apple-notes
cd mcp-apple-notes
bun installMCP Clients
Claude Desktop
{
"mcpServers": {
"local-machine": {
"command": "/Users/<YOUR_USER_NAME>/.bun/bin/bun",
"args": [
"/Users/<YOUR_USER_NAME>/apple-notes-mcp/index.ts"
]
}
}
}<YOUR_USER_NAME> is your macOS user name, and make the index.ts path match your clone. Git clone creates a folder named mcp-apple-notes, while the README's example path says apple-notes-mcp.