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.

What you get: Claude sees the exact app, window, selected text, git branch, and accessibility tree behind every screenshot — plus whatever you drew on it. No more "which file is that?" or "what app is this?".

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:

Download Stash 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.

Architecture: the skill package carries the protocol-stable stuff — how to recognize a Stash banner, filename, or XMP tag, plus offline fallback rules. The MCP server carries the release-variable stuff — current tool list, trigger phrases, response field layouts. When you update Stash via Sparkle, Claude gets the fresh guidance on its next connect without you reinstalling anything.

What Claude can do with Stash

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.