Give Claude Code a memory of your screen with Sharpy MCP
One command adds Sharpy as an MCP server. Claude Code, Cursor and Claude Desktop can then search what you read, wrote and decided on your Mac, with the source.
You open Claude Code, and the first five minutes go to explaining. What the gateway decision was on Wednesday. What the client asked for in the Telegram thread. Which of the three approaches you tried yesterday and rejected. The agent is capable and blank.
Sharpy fixes the blank part. It already remembers the text your Mac showed you, in one SQLite file on the machine. The MCP server hands that memory to the agent.
One command
claude mcp add sharpy -- /Applications/Sharpy.app/Contents/Helpers/sharpy-mcp
Then, on the first connection, approve the client inside the Sharpy app. That is the whole setup for Claude Code. Cursor and Claude Desktop take the same binary in their MCP configuration, as a stdio server with no arguments.
The server runs locally and reads the same database the app writes. There is no second copy, no sync, no account for the MCP itself. Sharpy.app has to be running; reading works even signed out, capture does not. By default a client gets the first 1,000 characters of a passage; full text for that client is a switch in Settings → Integrations.
What the agent can now do
The server exposes a handful of tools. In practice you never call them; you ask, and the agent picks.
- search_memory. Full-text search over everything captured, with a from/to window and an app filter. “Find where we agreed on the retry policy” returns the matching passages, each with its snapshot and session id, app, window title, URL and time.
- get_recent_activity. The last minutes of screen activity, newest first: app, window, URL, seconds spent, an excerpt. No model involved, so it is the cheapest call. Made for “what was I just doing?”.
- get_working_memory. The sessions of the last few hours (three by default) with the full text of the latest moment in each. The agent reads this to orient before it searches, or to load your context before writing in your voice.
- read_session. One continuous stretch of work end to end: a whole email thread, a Slack channel, a coding session.
- get_snapshots. The full text of specific moments by id, for quoting exact wording, numbers and dates.
- wiki search. The pages Sharpy maintains about people and projects, built from captured text with citations.
Every row carries a snapshot id. When the agent tells you “you agreed on Thursday 18:00”, it can open that exact moment and quote it, and so can you, in Sharpy.
Three ways people use it
Stop re-explaining. Start a session with “read my working memory, then plan the migration we discussed in Slack this morning”. The agent reads those sessions, searches for the Slack thread, and plans from what was said, not from your retelling of it.
Turn conversations into tickets. “Search the last two days for anything Dana asked me to do and write the issues.” The agent finds the requests in Telegram and Mail, quotes them, and drafts.
Debug from what you saw. You hit an error at 14:07, took a screenshot in your head, and moved on. “What was the error I saw in the terminal around two o’clock?” The text was captured; the agent finds it.
Limits worth knowing
Sharpy captures the front window through macOS Accessibility. Native apps read well. Electron apps, which is most AI desktop clients and many chat apps, expose their text less cleanly, so some passages will be missing or partial. If a search comes back thin, the browser version of the same app usually reads better.
What the agent pulls into its context leaves the Mac with that context. Claude Code sends it to Anthropic; Cursor sends it to whatever model you picked. Sharpy itself masks card numbers, IBANs and tokens before they are stored, and never captures banks, password fields, login pages or incognito windows. Narrow questions keep the rest narrow.
Sharpy is macOS 14 or later, by invite. If your day is Claude Code plus Telegram plus a browser, get on the list and mention it in the reply to the welcome email; developers go early.
Questions
Does Claude Code have persistent memory?
Claude Code keeps notes you write into CLAUDE.md and its own memory files, and it remembers the current session. It does not know what you read in Telegram, decided in Slack or looked up in the browser. An MCP server like Sharpy's fills that gap by letting it search the text your Mac showed you.
What does the Sharpy MCP server expose?
search_memory over everything captured, get_recent_activity for the last minutes, get_working_memory for the last few hours, read_session for one stretch of work end to end, get_snapshots for the full text of a moment, and search over the wiki pages Sharpy builds about people and projects. Every row carries a snapshot id so the agent can open and quote the source.
Does my screen history leave the Mac when Claude Code reads it?
The MCP server runs on your Mac and reads the local SQLite file. What the agent pulls into its context goes wherever that agent sends its context; for Claude Code that is Anthropic's API. Ask narrow questions and the agent pulls narrow results.
Does it work with Cursor and Claude Desktop?
Yes. Any client that speaks MCP over stdio can add the same binary. Cursor and Claude Desktop take it in their MCP settings; Claude Code takes it from the command line.