Connect Claude to your Stash captures.
Stash ships a local Model Context Protocol server. Claude Code and Claude Desktop can read your screenshots, annotations, and video bundles directly — no cloud, no upload, no OCR fallback. Data never leaves your Mac.
One-line install
Install Stash, launch it once to grant permissions, then run:
curl -fsSL https://gostash.ai/install-claude.sh | bash
The installer compiles a native signed bridge to ~/.local/bin/stash-mcp,
registers your cert's team with Stash's MCP allowlist if needed, merges a
stash server entry into every Claude client it finds (Claude Code,
Claude Desktop, Cursor), and — when Claude Code is present — drops the Stash skill
into ~/.claude/skills/stash/ so the agent knows Stash's trigger phrases.
Safe to re-run. Nothing leaves your machine.
When it finishes, restart Claude Code and paste "what was my last Stash capture?" — if Stash answers with real capture details (app, window, time), you're done.
Prefer a download?
For Claude Desktop, the native install flow is a drag-drop skill package:
For Claude Desktop, unzip and point its extensions panel at the folder. For Claude
Code, unzip to ~/.claude/skills/stash/ so the stash skill
appears in /skills. Either way you'll still need to compile the bridge
separately — the skill package only carries recognition rules and documentation.
Manual setup
If you'd rather wire things up yourself, there are two pieces (plus a skill drop-in if you use Claude Code):
Compile the bridge
From a clone of the Stash repo:
./scripts/build-mcp-bridge.sh
Produces a signed ~/.local/bin/stash-mcp. If your code-signing
identity isn't the Stash team, the installer registers your team with Stash's
MCP allowlist for you. Doing it manually:
defaults write ai.gostash.stash mcpExtraTrustedTeamIDs <YOUR_TEAM>
Register the MCP server with your client
Register via the claude CLI (NOT by editing a JSON file — Claude Code doesn't read one):
claude mcp add stash /Users/<you>/.local/bin/stash-mcp -s user
Then install the skill so Claude knows Stash's trigger phrases:
mkdir -p ~/.claude/skills/stash
curl -fsSL https://gostash.ai/releases/stash-claude-skill.zip -o /tmp/stash-skill.zip
unzip -o /tmp/stash-skill.zip -d ~/.claude/skills/stash
Verify with claude mcp list — you should see stash … ✓ Connected. Restart your Claude Code session and try: "what was my last Stash capture?"
For project scope instead of user scope, drop -s user and run from inside the project root — it'll land in a project-local .mcp.json.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"stash": {
"command": "/Users/<you>/.local/bin/stash-mcp"
}
}
}
Quit and relaunch Claude Desktop. A tool icon appears in the input area.
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"stash": {
"command": "/Users/<you>/.local/bin/stash-mcp"
}
}
}
Restart Cursor. Stash tools appear in the tool palette.
What Claude can do with Stash
- Read a capture you just took — banner shortID, annotations, accessibility tree. "What's in my last Stash capture?"
- Find older captures — substring search across app, window, URL, text. "Find the Xcode error I captured yesterday."
- Open a video bundle — report.md, per-frame tags, audio. "Read my last screen recording and tell me what I was debugging."
- Work on actual files — when you capture from a dev app, the capture carries the active file path, git branch, and selected text. Claude can edit the right file without you pasting its path.
Privacy
The MCP socket is bound to a UNIX domain socket under your user account — local only, not networked. Stash rejects unsigned / unknown peers by default via codesign team-ID allowlist. Sensitive fields (selected text, file paths, git branches, terminal CWD, a11y tree) purge 24 hours after capture by default. Screenshots and basic metadata follow your normal history retention. Stash servers never see capture data — ever.
For the full protocol spec, see gostash.ai/protocol or fetch
the machine-readable version at gostash.ai/llms.txt.