Skip to main content
Glama
wangwang0204

mac-stickies-mcp

by wangwang0204

mac-stickies-mcp

A local MCP server for reading and safely editing Apple Stickies on macOS.

Status: pre-release alpha (0.2.0a1). Text tools and recoverable create/delete/restore have passed local validation. Layout inspection is an early v0.3 read-only capability, not a stable layout API. This build has not been published to PyPI.

Scope

  • Runs locally on macOS through MCP stdio.

  • Is intended to be installed with uvx mac-stickies-mcp once published.

  • Does not send note contents to a remote service.

  • Does not use the Anthropic Python SDK or call an LLM.

Read the detailed product contract in docs/spec.md. The reproducible running-App write study is in docs/compatibility-study.md.

Related MCP server: apple-mcp

Available tools

Tool

Purpose

list_notes

List note titles, previews, versions, and modification times

get_note

Read one note and obtain its version

search_notes

Search current local text without uploading or indexing it

update_note

Replace text after version check and backup

append_to_note

Add plain text while retaining the existing RTF body

backup_note

Save a complete local note package snapshot

undo

Revert an MCP edit if the note has not changed since

create_note

Create a new note only after Stickies exposes a new UUID

get_note_layout

Read exposed position, size, and window state without moving a note

delete_note

Back up then delete a note with a recovery ID

list_deleted_notes / restore_note

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.

v0.2 visual-state boundary

v0.2 deliberately does not set note color, size, position, 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 an error without writing into the currently active note. This build still needs a clean-user, manual compatibility pass across supported macOS releases before publication.

Known alpha limitations

  • delete_note is recoverable, but the only verified Stickies deletion route brings Stickies and the target note to the foreground. It can interrupt work or leave the desktop visible after closing the last focused note.

  • get_note_layout only reads the position, size, visibility, minimized, and full-screen state exposed by the current Accessibility tree. It does not move or resize a note; color, floating, collapsed, rich text, multi-display placement, and layout commands remain unimplemented.

  • Never remove or replace a .rtfd package 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 doctor

It 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.

Install and connect

The package is not published yet. After its PyPI release, install it as a user-level tool rather than a one-off uvx invocation so the Accessibility client has a stable local installation:

uv tool install mac-stickies-mcp
mac-stickies-mcp doctor

Then add it to a local Codex client:

codex mcp add mac-stickies -- mac-stickies-mcp
codex mcp list

The 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-mcp

Uninstalling 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. The eventual PyPI installation command will be 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/                  Design and user-facing technical documentation
work/                  Local generated files; never committed

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server for macOS that provides async, cache-backed access and background queued writes to Apple Notes. It enables seamless integration for reading, creating, and managing notes through standard tools like ScriptingBridge while supporting background service execution.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    CLI and MCP server to search and browse Apple Notes with fuzzy matching, full-text search, and PDF text extraction.
    19 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A read-only MCP server that enables searching, retrieving, and managing local UpNote notes, notebooks, and tags via SQLite and UpNote's official URL scheme.
    18 npm
    2
    MIT