mac-stickies-mcp
Allows reading, searching, creating, updating, appending to, backing up, deleting, and restoring Apple Stickies notes on macOS, with version checks, undo support, and layout inspection.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mac-stickies-mcp
A local MCP server for reading and safely editing Apple Stickies on macOS.
Status:
1.0.0is the stable contract for one currently open Stickies app on one screen. It is published on PyPI.
Runs locally through MCP stdio. Note contents stay on your Mac; writes check for conflicts and keep local backups.
Quick start
uv tool install mac-stickies-mcp==1.0.0
mac-stickies-mcp doctor
codex mcp add mac-stickies -- mac-stickies-mcpReading and searching do not require Accessibility. Writing does; doctor
identifies the executable to authorize. Deletion is recoverable, but brings
Stickies to the foreground and requires explicit allow_foreground: true.
Related MCP server: @cardmagic/notes
For MCP clients and agents
This is a local stdio server. Configure your MCP host to launch:
command: mac-stickies-mcpThe host's configuration format differs, and installing the server or granting Accessibility always requires the user's approval. Once connected, use the tool schemas returned by the server as the machine-readable source of truth.
Read or search, then call
get_notebefore choosing a note to change.For text writes, pass that note's current
expected_version; on conflict, re-read rather than force an overwrite.Before deletion, warn that Stickies will come to the foreground and obtain explicit user approval before setting
allow_foreground: true.Do not bypass these safeguards with GUI automation, AppleScript, or direct
.rtfdfile changes while Stickies is open.
Start with the documentation guide. The public tool contract is in docs/reference/mcp-tools.md; internal behaviour and safety rules are in docs/specification.md. The reproducible running-App write study is in docs/research/compatibility-study.md. For local development rules, see AGENTS.md and docs/development.md.
Available tools
Tool | Purpose |
| List note titles, previews, versions, and modification times |
| Read one note and obtain its version |
| Search current local text without uploading or indexing it |
| Read current screen and Dock/menu-bar-safe rectangles without Accessibility |
| Suggest a fully visible origin for a known note size without moving it |
| Replace text after version check and backup |
| Add plain text while retaining the existing RTF body |
| Save a complete local note package snapshot |
| Revert an MCP edit if the note has not changed since |
| Create a new note only after Stickies exposes a new UUID |
| Read exposed position, size, and window state without moving a note |
| Move a visible note only if its last-read position still matches |
| Back up then delete a note with a recovery ID; requires |
| Inspect and recreate a deleted note |
Writes require the expected_version returned by get_note. With a running,
visible Stickies note that version starts with ui-sha256: and the mutation is
performed through Accessibility; Stickies, not this package, owns the later
disk save. A conflict or unsaved human UI edit is reported as a tool error; no
data is overwritten. Every completed write has an operation_id that can be
passed to undo.
The server keeps backups in
~/Library/Application Support/mac-stickies-mcp/backups/. Backups are local
and private to the current user, retained for up to 30 days and 100 per note.
The original Stickies files remain under the user's Stickies container.
Stable visual-state boundary
The stable API deliberately does not set note color, size, or rich-text
styles. Stickies Accessibility exposes commands to change some of these values,
but it does not reliably expose a current note color. Those values therefore
cannot yet receive the same before/after backup and undo guarantees as text.
They are deferred to a read-first state compatibility study. restore_note
creates a new note with a new UUID; it restores backed-up text, not an
unverifiable visual state.
create_note has a strict safety guard: if Stickies does not surface a new
window with a distinct document UUID, it returns create_unidentified without
writing into the currently active note. It waits up to three seconds for the package to
appear, then returns persistence: "persisted" or "pending"; clients must
wait for the latter before a file-dependent follow-up such as deletion. Successful
responses include ui_exposure_ms and persistence_wait_ms for diagnostics.
Stable-scope limitations
delete_noteis recoverable, but the only verified Stickies deletion route brings Stickies and the target note to the foreground. It requires explicitallow_foreground: true, so clients must warn the user before it can interrupt work or leave the desktop visible after closing the last focused note.move_notechanges only a UUID-matched window'sAXPosition, verifies the result, and does not activate or raise Stickies. It requiresexpected_positionfromget_note_layout, so a human drag is a safelayout_conflictrather than an overwrite. Color, resizing, floating, collapsed state, multi-display placement, and layout commands remain unimplemented.Never remove or replace a
.rtfdpackage while Stickies is running. The App can retain an in-memory copy and later overwrite or conflict with the file.
Accessibility setup for writes
Reading and searching do not require Accessibility. Editing a note while Stickies is open does: the server uses macOS Accessibility to update the exact visible note rather than replacing its RTF file behind the app's back.
After installation, run this once in the same environment that will launch the MCP server:
mac-stickies-mcp doctorIt requests the macOS consent prompt and prints the executable that macOS must
trust. In System Settings → Privacy & Security → Accessibility, enable that
reported executable. If an update changes the executable identity, run doctor
again and repeat the one-time approval. A missing grant causes a safe
accessibility_required error; no note is changed.
Client configuration and local development
For development from a source checkout, use the project's installed CLI so the Accessibility client has a stable executable:
uv tool install mac-stickies-mcp
mac-stickies-mcp doctorThen add it to a local Codex client:
codex mcp add mac-stickies -- mac-stickies-mcp
codex mcp listThe equivalent ~/.codex/config.toml entry is:
[mcp_servers.mac-stickies]
command = "mac-stickies-mcp"
default_tools_approval_mode = "writes"writes keeps read tools convenient while asking before mutation tools. In the
ChatGPT desktop app, the same shared configuration can also be added from
Settings → MCP servers → Add server, selecting STDIO and entering
mac-stickies-mcp as the command.
Uninstall and local data
uv tool uninstall mac-stickies-mcpUninstalling the tool does not touch Apple Stickies or its backups. To remove
MCP-only recovery data, first inspect
~/Library/Application Support/mac-stickies-mcp/backups/, then move the
mac-stickies-mcp folder to Trash manually if it is no longer needed. Remove
the corresponding Accessibility entry in System Settings → Privacy &
Security → Accessibility if you no longer want the executable to control
Stickies.
Development
uv sync --all-groups
uv run python -m unittest discover -s tests -v
uv run ruff check .
uv run ruff format --check .For a local development connection, use the project's installed CLI at
.venv/bin/mac-stickies-mcp as the MCP stdio command. For an ephemeral PyPI
run, use uvx mac-stickies-mcp.
The prototype exporter lives at scripts/export_stickies.py. It reads local
Stickies and writes a Markdown snapshot under work/, which is ignored by Git.
Project layout
src/mac_stickies_mcp/ Package source
tests/ Automated tests and non-private fixtures
scripts/ Development-only helper scripts
docs/ Public reference, maintainer docs, and research evidence
work/ Local generated files; never committedLicense
This server cannot be deployed
Maintenance
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Search, read, write, and organize your Scratchpad notes from any MCP client.
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server for macOS Apple apps. Enables read/write access to Notes, Reminders, Calendar, Contacts, and Safari using SQLite and JXA, all running locally.287 npm4MIT
- AlicenseNot gradedqualityBmaintenanceCLI and MCP server to search and browse Apple Notes with fuzzy matching, full-text search, and PDF text extraction.9 npm7MIT
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server that enables searching, retrieving, and managing local UpNote notes, notebooks, and tags via SQLite and UpNote's official URL scheme.37 npm2MIT
- AlicenseNot gradedqualityAmaintenanceA local MCP server that enables Claude to read and, where permitted, safely write Apple Calendar, Reminders, Contacts, Notes, Mail, and Music data on macOS over stdio without Full Disk Access. It includes guarded changes, activity logging, undo, and optional Music play history.1,196 npmMIT