The Apple Notes MCP server, enumerated live on a real Mac.
Tools enumerated2026-08-03·macOS 15.7.7
Packageapple-mcp 1.0.0
Self-reportedApple MCP tools 1.0.0
MCP protocol2024-11-05
Runtimev24.18.0, bun 1.3.14
The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.
The short answer
Last verified 2026-08-03
The Apple Notes MCP server connects an AI assistant to the Notes app already sitting on your Mac, and in the same package to Reminders, Calendar, Mail, Messages, Contacts and Maps. It is a community package, apple-mcp by Dhravya Shah, published to npm under the MIT license, and it drives those apps through AppleScript the way Shortcuts and Automator do rather than through any cloud API, so there is no account to create and no key to paste anywhere. Here is exactly what we verified, and what we did not. Started with bunx and no credential of any kind, the server completed the MCP handshake and answered tools/list with 7 tools, one per Apple app, and that answer is the table below, word for word. The one real tool call we made, notes with operation list, is the reason this page says tools enumerated rather than verified: after 120 seconds it returned a clean looking reply, the words "No notes exist.", while the same run's stderr showed the AppleScript underneath had failed with an AppleEvent timeout, and the package's own code quietly turns that failure into an empty list. We reproduced the identical timeout with a bare osascript command and with a competing Notes package on the same Mac, so it is a condition of the machine and its Automation permission rather than a bug in one package, and we would rather say that than dress the reply up as a success. Two things are worth knowing before you install it: the GitHub repository is archived and its last push was in August 2025, and a narrower Notes only server, apple-notes-mcp, is still shipping releases weekly and gets roughly six times the downloads. [1][3][5][6]
We installed bun with Homebrew, spawned the server with bunx --no-cache apple-mcp@latest over stdio, with no environment variables and no credential of any kind, and completed the MCP initialize handshake: it answered as Apple MCP tools 1.0.0, and with protocol version 2024-11-05 even though our client had asked for 2025-06-18, a downgrade worth knowing about. We then called tools/list, which answered with 7 tools, one per Apple app, and the table below is that answer, word for word. We also made one real tool call, notes with operation list. It took 120.3 seconds and came back looking like a success, isError false and the text "No notes exist.", but the same run's stderr printed the failure underneath it, an AppleEvent timeout on Notes, and the package's own getAllNotes function turns any such failure into an empty list. So we do not count it as a successful call: the tools are enumerated live, every error on this page is real output, and a call that genuinely reads your notes still waits on the macOS Automation permission you approve on your own Mac. We reproduced the identical timeout with a bare osascript command and with a second, unrelated Notes package on the same Mac at the same time, with the screen unlocked and the display awake, so the condition belongs to the machine rather than to one package.
Startup banner
Resolving dependencies
Resolved, downloaded and extracted [2]
Saved lockfile
Starting apple-mcp server...
Attempting to eagerly load modules...
- Contacts module loaded successfully
- Notes module loaded successfully
- Message module loaded successfully
- Mail module loaded successfully
- Reminders module loaded successfully
- Calendar module loaded successfully
- Maps module loaded successfully
All modules loaded successfully, using eager loading mode
Initializing server in standard mode...
Setting up MCP server transport...
Initializing transport...
Setting up stdout filter...
Connecting transport to server...
Server connected successfully!
One real tool call
tools/call notes {"operation": "list"}
No notes exist.
132:137: execution error: Notes got an error: AppleEvent timed out. (-1712)
...
Real lines from the captured result: enough to prove the call answered.
Tools
Every tool, enumerated from the running server.
The server answered tools/list with 7 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.
Tool
What it does
contactsname
Search and retrieve contacts from Apple Contacts app
notesoperation*searchTexttitlebodyfolderName
Search, retrieve and create notes in Apple Notes app
There is no env block because this server has no credentials at all. It does need bun, which a Mac does not ship with: install it once with brew install oven-sh/bun/bun. Then quit and reopen Claude Desktop, and expect macOS to ask whether Claude may control Notes the first time a tool actually runs. [9][4]
Claude Code
One command in your terminal:
claude mcp add apple-mcp -- bunx --no-cache apple-mcp@latest
Everything after the double dash is the exact command Claude Code will run, and it is the exact command we verified. The package README recommends bunx rather than npx, so install bun first if you do not have it: brew install oven-sh/bun/bun. [10][4]
Cursor
Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:
Cursor picks the file up on restart. macOS grants Automation permission per app rather than per server, so approving Notes for Claude Desktop does not approve it for Cursor: expect to answer that prompt again here. [11][4]
Routines
No JSON file and no terminal, once bun is installed. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:
Name Apple Notes
Command bunx
Arguments --no-cache apple-mcp@latest
Leave Environment Variables empty: this server has none. One thing to plan for, because it is different from most connectors in this directory: it reaches Notes and Reminders through macOS itself, so it only works while Routines is running on the same Mac as those apps. Click Test Connection first: a working server answers with its tool count. [12][4]
No terminal needed
Set the Apple Notes MCP server up without the terminal.
If you have never opened Terminal and never want to, this is your path, with one honest exception: this server starts with bun, which a Mac does not ship with, and installing bun takes one command. Routines is a Mac app that runs MCP servers for you: fill in three fields once, and this server's tools are available to your AI in chat and in scheduled routines.
01
Install Routines
Download the app from getroutines.ai/download, drag it to Applications, and sign in.
02
Install bun once
This is the only step that needs a terminal, and you do it once. Open Terminal and run brew install oven-sh/bun/bun, which gives you the bunx command this server starts with. The package README recommends bunx over npx, and bunx is what we ran.
03
Open the MCP settings
Click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.
04
Choose Command (stdio) and fill in three fields
Switch the form to Command (stdio): this server is a command your Mac runs, not a web address. Name: Apple Notes. Command: bunx. Arguments: --no-cache apple-mcp@latest. Leave Environment Variables empty, this server needs none.
05
Test, then add
Click Test Connection: Routines starts the server and reports how many tools it found, seven for this one, one per Apple app. The first start downloads the package, so give it a moment. Then click Add Server.
06
Say yes to the macOS prompt, then use it
The first time a tool actually reaches Notes or Reminders, macOS asks whether Routines may control that app. Approve it, and change your mind later in System Settings, then Privacy and Security, then Automation. The tools work in chat right away, and to let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.
Routine ideas
Routines worth scheduling.
Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.
A plan for the day, written into Notes
Prompt
Every weekday at 7:30, list today's events from my Apple Calendar and everything due today in Apple Reminders, then create a note in Apple Notes called Plan for today that puts the three things that matter most at the top, with the rest underneath and a one-line reason for the order.
Turn today's notes into reminders
Prompt
Every weekday at 18:00, search my Apple Notes for the notes I wrote today, pull out every line that reads like a promise or a next step, and create a reminder in Apple Reminders for each one with a sensible due date. Then reply with the exact list you created so I can correct it.
A Friday sweep for loose ends
Prompt
Every Friday at 16:30, search Apple Reminders for anything still open that was due this week, look for a matching note in Apple Notes about each item, and create one note called Loose ends this week that says, in plain English, what is unfinished and what my own notes already say about it.
Real errors captured during the verification run, printed exactly as the server returned them.
A call into Notes answers "No notes exist." when notes clearly exist
What you see
Error getting all notes: Command failed: osascript -e
tell application "Notes"
set notesList to {}
set noteCount to 0
-- Get all notes from all folders
set allNotes to notes
repeat with i from 1 to (count of allNotes)
if noteCount >= 50 then exit repeat
try
set currentNote to item i of allNotes
set noteName to name of currentNote
set noteContent to plaintext of currentNote
-- Limit content for preview
if (length of noteContent) > 200 then
set noteContent to (characters 1 thru 200 of noteContent) as string
set noteContent to noteContent & "..."
end if
set noteInfo to {name:noteName, content:noteContent}
set notesList to notesList & {noteInfo}
set noteCount to noteCount + 1
on error
-- Skip problematic notes
end try
end repeat
return notesList
end tell
132:137: execution error: Notes got an error: AppleEvent timed out. (-1712)
The fix
This is the most useful thing on the page, so read it before you trust an empty answer. The AppleScript above is the one apple-mcp sends to Notes for a list operation, and when it fails the package catches the error, prints it to stderr and returns an empty array, which the tool then reports as "No notes exist." with no error flag. An empty answer from this server is ambiguous by design. Three things fix it in practice. Grant the permission: open System Settings, then Privacy and Security, then Automation, find the app that starts the server, and tick Notes. Keep the Mac unlocked and awake for the first call, since that prompt has to be answered by a person. And prefer a narrow request over a bulk one: the script above walks every note in your library, which is slow enough to time out, while a search for one term came back quickly for us on the same Mac.
The assistant calls a tool the server does not have
What you see
Unknown tool: notess
The fix
There are exactly seven tools here, one per app: contacts, notes, messages, mail, reminders, calendar and maps. Anything else, including a near miss like the typo we sent on purpose, comes straight back as an unknown tool with no AppleScript involved. If your assistant keeps inventing names such as create_note or list_folders, tell it that everything about notes goes through the notes tool, with an operation of search, list or create.
Every wrong argument gives the same unhelpful error
What you see
Error: Invalid arguments for notes tool
The fix
We triggered this message three different ways and it never changed: sending no operation at all, sending an operation that is not on the list, and asking for a search with no searchText. The schema check runs before any AppleScript, so the reply is instant, which at least tells you the failure is in the arguments rather than in Notes. When you see it, name the operation and the field it needs: search takes searchText, create takes title and body plus an optional folderName, and list takes nothing else.
A reminders lookup comes back empty
What you see
No matching reminders found
The fix
This one is honest, and it doubles as a quick way to check that automation works at all. We asked for a reminder that does not exist, and the server answered in well under a minute and flagged the result as an error instead of pretending to find nothing. If narrow lookups like this answer quickly while list operations hang, your permission is fine and the problem is scale: the library is big enough that the bulk AppleScript times out.
Your MCP client cannot start the server at all
The fix
The bunx command belongs to bun, which is not installed on a Mac out of the box, so every client on this page fails at the spawn step before the server can say a word. Install bun with brew install oven-sh/bun/bun, restart your MCP client, and try again. The very first start also downloads the package, so it needs an internet connection and takes longer than later ones.
FAQ
Questions people ask.
What is the Apple Notes MCP server?
It is a Model Context Protocol server that lets an AI assistant read and write your Apple Notes, and in the same package your Reminders, Calendar, Mail, Messages, Contacts and Maps. The one on this page is apple-mcp by Dhravya Shah, published to npm under the MIT license. It runs as a process on your Mac, started by bunx, talks to your AI app over stdio, and drives the Apple apps through AppleScript rather than any cloud API, which is why it works with whatever accounts Notes is already signed into. [1][4][3]
What tools does the Apple Notes MCP server include?
The running server exposed 7 tools, and the table above is that live tools/list output, word for word. There is one tool per Apple app, keyed by an operation argument rather than one tool per action: notes (search, list, create), reminders (list, search, open, create, listById), calendar (search, open, list, create), mail (unread, search, send, mailboxes, accounts, latest), messages (send, read, schedule, unread), contacts, and maps (search, save, directions, pin, and three guide operations).
Does the Apple Notes MCP server need an API key or an account?
No. There is nothing to sign up for and no credential to paste, which is why our run could start the server and list all 7 tools with an empty environment. What it does need is permission from macOS itself: the first time a tool reaches Notes or Reminders, the system asks whether the app that started the server may control that app, and you approve or refuse it in System Settings, then Privacy and Security, then Automation. That prompt has to be answered by a person sitting at the Mac, which is exactly why our own unattended call timed out. [5][4]
Is the Apple Notes MCP server safe?
Judge it by its widest tool, not its narrowest. Despite the name, this package can also send Messages and send Mail, so an assistant acting on a careless instruction can do more than tidy your notes. Three things help. The Automation permission is granted per app and can be revoked, so you can allow Notes and Reminders and refuse the rest in System Settings. Everything runs on your own Mac, so no third party is left holding a token that keeps working after you close the laptop. And you can keep scheduled routines to the reading operations, list and search, saving create and send for moments you are watching. One more honest point: the repository is archived, so nobody is shipping fixes for it today. [3][5]
Why does this page say tools enumerated instead of verified?
Because the one real tool call we made did not truly succeed, and we will not round that up. Calling notes with operation list took 120.3 seconds and returned "No notes exist." with no error flag, which looks like a clean answer, but the same run's stderr shows the AppleScript failed with an AppleEvent timeout, and the package converts any such failure into an empty list. Both lines are printed in the verification section above. We reproduced the same timeout with a plain osascript command and with a different Notes package on the same Mac, screen unlocked and awake, so the cause is the machine and its pending Automation permission rather than one package. [5]
Is apple-mcp still maintained?
Not actively, and you should know that before you install it. The npm release we ran, 1.0.0, was published on 2025-08-11, and the GitHub repository behind it, supermemoryai/apple-mcp, carries 3,128 stars but is archived, with its last push on that same August 2025 day. It still started and enumerated cleanly for us, and it is still the package that covers seven Apple apps through one connector. If Notes is all you want, the alternative below is fresher. [1][3]
What is apple-notes-mcp, and should I use it instead?
It is a second, Notes only MCP server by sweetrb, and on maintenance signals it wins: version 2.6.12 published 2026-08-01, a repository pushed the day before we captured this page and not archived, and 1,283 npm downloads in the same week apple-mcp got 204. We ran it on the same Mac to compare: it enumerated 36 Notes specific tools and, faced with the identical AppleEvent timeout, reported an honest error instead of an empty list. Choose apple-mcp when you want Reminders, Calendar and Mail from one connector, and apple-notes-mcp when Notes is all you need. [6][7][8][2]
Sources
Every external claim, receipted.
Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.
3,128 stars, 282 forks, archived true, last push 2025-08-11, license MIT, per the GitHub API. The older Dhravya/apple-mcp URL redirects to this same repository.
Source for the bunx --no-cache apple-mcp@latest invocation and the client config blocks; it also documents a Smithery installer and a one-click Claude Desktop install, neither of which we tested.
getAllNotes() catches any error, logs it to stderr and returns an empty array, which is how an AppleScript timeout becomes "No notes exist."; the same file tells the reader to enable the app under System Settings, Privacy and Security, Automation.
How Routines runs one-click OAuth connectors and any MCP server.
This page describes Apple Notes as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.
Behind this directory
Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines