By stuk88
Read, search, and edit Apple Notes from Claude Code. Eight tools for browsing accounts/folders, listing and searching notes, reading content, creating new notes, and appending or updating existing ones. macOS only; uses JXA via osascript.
An MCP server that lets Claude Code read, search, and edit notes in the macOS Notes app.
Runs locally over stdio. Talks to Notes via JXA (/usr/bin/osascript -l JavaScript). Works with every Notes account on your machine — iCloud, Google, On My Mac, IMAP — without touching the Notes SQLite database directly.
"os": ["darwin"])Add the marketplace, then install the plugin:
claude plugin marketplace add stuk88/mac-notes-mcp
claude plugin install mac-notes@mac-notes-mcp
That's it. Claude Code spawns the MCP server automatically; no separate registration needed. The compiled dist/ is shipped in the repo, so you don't need to run npm install or npm run build.
If you'd rather wire it up yourself (no plugin manager):
git clone https://github.com/stuk88/mac-notes-mcp
cd mac-notes-mcp
npm install
npm run build
Point Claude Code at the compiled entry. The cleanest way is the built-in CLI:
claude mcp add --scope user mac-notes -- node /absolute/path/to/mac-notes-mcp/dist/index.js
Then verify:
claude mcp list
You should see mac-notes ... ✓ Connected.
The first time the server tries to read or write Notes, macOS will prompt you to authorize Automation access. Approve it. If you missed the prompt, grant it manually:
System Settings → Privacy & Security → Automation → expand the entry for your terminal (or for Claude Code) → enable Notes.
If you skip this, every tool call fails with PERMISSION_DENIED and a hint pointing here.
| Tool | What it does |
|---|---|
list_accounts | Returns every Notes account with its folders. |
list_folders | Flat list of folders across all accounts. |
list_notes | List notes, optionally restricted to one folder. Default limit 50, max 500. |
search_notes | Case-insensitive substring search across note titles and/or bodies. HTML tags are stripped before matching. |
read_note | Fetch a note by id. Returns both HTML body and a plain-text rendering. |
create_note | Create a new note in a folder. body defaults to plain text (each line wrapped in <div>); pass bodyFormat: "html" for raw HTML. |
append_to_note | Append content to an existing note. |
update_note | Replace a note's title and/or body. |
A "Notes" folder usually exists in multiple accounts. Two ways to disambiguate:
folderId (the stable CoreData URI returned by list_folders / list_accounts).account and folderName together (e.g. account: "iCloud", folderName: "Notes").Without either, create_note writes to the default account's default folder.
// Find every account and folder
{ "name": "list_accounts" }
// Search the iCloud Notes folder for a substring
{
"name": "search_notes",
"arguments": {
"query": "weekly review",
"account": "iCloud",
"folderName": "Notes",
"limit": 20
}
}
// Create a plain-text note
{
"name": "create_note",
"arguments": {
"title": "Grocery list",
"body": "milk\neggs\nbread",
"account": "iCloud",
"folderName": "Notes"
}
}
// Append to an existing note
{
"name": "append_to_note",
"arguments": {
"id": "x-coredata://.../ICNote/p274",
"body": "another bullet",
"separator": "\n"
}
}
git clone <repo>
cd notes-connector-claude-code
npm install
npm run build # compile TS -> dist/
npm test # run integration tests against the real Notes app
The integration test creates a folder named mcp-test-<uuid> in your default account, exercises every tool, and deletes the folder at the end. If a run is interrupted, the folder may need manual cleanup (look in the Notes sidebar).
Design decisions and trade-offs live in design-log/0001-mac-notes-mcp.md.
Built by Stas Arshanski at Kolivri.com. Issues and pull requests welcome at github.com/stuk88/mac-notes-mcp.
MIT © Stas Arshanski / Kolivri.com
Admin access level
Server config contains admin-level keywords
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub stuk88/mac-notes-mcp --plugin mac-notesHarness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Browser automation and end-to-end testing MCP server by Microsoft. Enables Claude to interact with web pages, take screenshots, fill forms, click elements, and perform automated browser testing workflows.
Reliable automation, in-depth debugging, and performance analysis in Chrome using Chrome DevTools and Puppeteer
Plugin that includes the Figma MCP server and Skills for common workflows
Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,561 supported skills.