mcp-apple-notes
The mcp-apple-notes server enables AI assistants to manage, search, and organize Apple Notes locally on your Mac — no API keys required, no data leaves your machine. It supports an optional read-only mode to prevent write operations.
index-notes: Build a local semantic search index using on-device embeddings — required before searching.list-folders: List all folders with full paths and note counts.list-notes: Browse notes with metadata (title, path, timestamps), optionally filtered by folder and optionally including full content.search-notes: Perform semantic and full-text hybrid search, with optional folder filtering and result limit control.get-note: Fetch full content and details of a note by ID or title, with optional folder scoping for ambiguous titles.create-note: Create a new note with a title and markdown content, optionally in a specific folder.edit-note: Update an existing note's title and/or content (replaces entire content).append-to-note: Append markdown content to the end of an existing note without overwriting it.move-note: Relocate a note to a different folder.delete-note: Move a note to Recently Deleted (recoverable within 30 days).
Compatible with MCP clients such as Claude Desktop, Cursor, and Windsurf.
Provides tools for semantic search, full-text search, and CRUD operations on Apple Notes, including listing folders, browsing by folder, creating, editing, appending, moving, and deleting notes, all via local scripting bridge.
MCP Apple Notes

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.

Features
🔍 Semantic search over Apple Notes using
all-MiniLM-L6-v2on-device embeddings model📝 Full-text search capabilities
📂 Folder support — list folders, browse by folder, filter search by folder
📊 Vector storage using LanceDB
🤖 Works with any MCP-compatible client (Claude, Cursor, Windsurf, Cline, etc.)
🍎 Native Apple Notes integration via JXA
🔒 Optional read-only mode for safe exploration
🏃♂️ Fully local execution — no API keys needed
Related MCP server: MCP Apple Notes
Security & Transparency
Because this server interacts with your private Apple Notes, it is designed with absolute transparency in mind. It runs 100% locally on your Mac.
No Cloud, No Telemetry — No API keys, no data leaving your machine.
Native Apple JXA — Uses Apple's official JavaScript for Automation scripting bridge.
Embeddings on-device — The
all-MiniLM-L6-v2model runs locally via@huggingface/transformers.Verifiable — You are highly encouraged to read every line of code (especially
index.ts) before it ever touches your notes.GitHub releases include SHA-256 checksums so you can verify downloaded artifacts.
Installation & Setup
Choose the installation method that fits your workflow.
Method 1: Install from source (recommended)
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
git clone https://github.com/Dan8Oren/mcp-apple-notes && cd mcp-apple-notes && bun install{
"mcpServers": {
"apple-notes": {
"command": "bun",
"args": ["run", "/path/to/mcp-apple-notes/index.ts"]
}
}
}Using NPM:
git clone https://github.com/Dan8Oren/mcp-apple-notes && cd mcp-apple-notes && npm installThen add the server to your MCP client config. Replace /path/to/mcp-apple-notes with where you cloned the repo:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["tsx", "/path/to/mcp-apple-notes/index.ts"]
}
}
}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" }
Method 2: Quick start via npx
If you prefer a zero-setup approach and trust the published npm package, you can simply add this directly to your MCP config:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["-y", "@dan8oren/mcp-apple-notes"]
}
}
}After setup, restart your client and ask your AI assistant to "index my notes" to get started.
Per-client instructions
Open Settings → Developer → Edit Config
Paste your chosen JSON config into
claude_desktop_config.jsonRestart Claude Desktop
Logs:
tail -n 50 -f ~/Library/Logs/Claude/mcp-server-apple-notes.log# npm version:
claude mcp add apple-notes npx -- -y @dan8oren/mcp-apple-notes
# or from source:
claude mcp add apple-notes npx -- tsx /path/to/mcp-apple-notes/index.tsAdd the JSON config to ~/.cursor/mcp.json (global) or .cursor/mcp.json in your project root.
Add the JSON config to ~/.windsurf/mcp.json.
Available Tools
Tool | Description |
| Index all notes for semantic search. Run this first |
| List all Apple Notes folders with full paths and note counts |
| List notes with metadata. Optional |
| Semantic + full-text search with optional path filter and limit |
| Get full content by noteId or title. Returns candidates on ambiguity |
| Create a new note with markdown content, optionally in a folder |
| Edit title and/or content (markdown) of an existing note |
| Append markdown content to an existing note |
| Move a note to a different folder |
| Delete a note (moves to Recently Deleted) |
Verify Before You Trust
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.
Read-only mode
Want a safety net? Enable read-only mode to block all write operations — only search, list, and read tools will be available:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["-y", "@dan8oren/mcp-apple-notes"],
"env": { "MCP_APPLE_NOTES_READ_ONLY": "1" }
}
}
}When enabled, only these tools are available: index-notes, list-folders, list-notes, search-notes, get-note.
Verbose mode
Enable verbose logging to see every JXA call before it executes (logged to stderr):
CLI flag — add --verbose to your MCP client config args:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["--verbose", "-y", "@dan8oren/mcp-apple-notes"]
}
}
}Environment variable — for clients that support env:
{
"mcpServers": {
"apple-notes": {
"command": "npx",
"args": ["-y", "@dan8oren/mcp-apple-notes"],
"env": { "MCP_APPLE_NOTES_VERBOSE": "1" }
}
}
}JXA operations reference
Operation | Type | What it does |
| Read | Lists all notes (id, title, folder path) |
| Read | Lists all folders with paths and note counts |
| Read | Gets notes in a specific folder |
| Read | Gets full content of one note by ID |
| Write | Creates a new note with title and content |
| Write | Appends HTML content to an existing note |
| Write | Updates title and/or content of a note |
| Write | Moves a note to a different folder |
| Destructive | Moves a note to Recently Deleted |
All operations go through Apple's JXA scripting bridge (Application('Notes')). No direct file system access, no network calls. The delete operation is non-permanent — notes go to Recently Deleted and can be recovered within 30 days.
Response Shape
Tool responses are JSON objects in a consistent envelope:
Success:
{ "ok": true, "data": ... }Error:
{ "ok": false, "error": { "type": "...", "message": "..." } }
Most note-oriented responses now include the stable Apple Notes id so clients can track notes safely across renames and moves.
Community & Support
Bug reports, ideas, questions, and showcases all have a home — please use the channel that fits:
🐛 Found a bug? → Open an issue
💡 Have a feature idea? → Start a thread in Ideas
❓ Need help with setup or integration? → Ask in Q&A
🛠 Built something cool with it? → Share in Show and tell
📣 Watch for updates → Announcements
PRs are welcome. For non-trivial changes, please open an issue or discussion first so we can align on direction before you invest time.
Acknowledgments
Originally based on RafalWilinski/mcp-apple-notes.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseDqualityFmaintenanceEnables interaction with Apple Notes via natural language, supporting note creation, search, and retrieval with iCloud integration for seamless note management.Last updated32124MIT
- Alicense-qualityDmaintenanceA Model Context Protocol server that enables semantic search and retrieval of Apple Notes content, allowing AI assistants to access, search, and create notes using on-device embeddings.Last updated1,1222MIT
- FlicenseAqualityDmaintenanceEnables interaction with Apple Notes on macOS through AppleScript, allowing users to list, search, read, create, update, and delete notes across accounts and folders.Last updated71
- FlicenseAqualityDmaintenanceA local-only server that enables AI agents to create, read, search, and organize Apple Notes directly on macOS. It supports folder management, note formatting, and checklists using native automation to ensure data remains private and local.Last updated2418
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dan8Oren/mcp-apple-notes'
If you have feedback or need assistance with the MCP directory API, please join our Discord server