Skip to main content

Your Mac screenshots folder is a disaster. This fixes it โ€” with vision, embeddings, and semantic search.

Project description

๐Ÿง  snapsearch

Your Mac screenshots folder is a disaster. This fixes it โ€” with vision, embeddings, and semantic search.

An AI agent + custom MCP server that sees your screenshots, understands what's in them, organizes them into clean folders, and lets you find anything with natural language.

Fully local. No cloud uploads. No subscriptions.


How it works

screenshot.png
      โ”‚
      โ–ผ
GPT-4o vision         "React error about invalid hook call in App.js, line 23"
      โ”‚
      โ–ผ
text-embedding-3-small  [0.021, -0.847, 0.334, ...]
      โ”‚
      โ–ผ
ChromaDB (local)      stored permanently on disk
      โ”‚
      โ–ผ
search("hooks problem") โ†’ finds it, even with a garbage filename

The result

~/Screenshots/
โ”œโ”€โ”€ code/
โ”‚   โ”œโ”€โ”€ errors/         react-hooks-invalid-call.png
โ”‚   โ”‚                   python-importerror-requests.png
โ”‚   โ””โ”€โ”€ snippets/       vim-config-lsp-setup.png
โ”œโ”€โ”€ design/
โ”‚   โ”œโ”€โ”€ figma/          darkmode-mobile-v3.png
โ”‚   โ””โ”€โ”€ other/          canva-instagram-post.png
โ”œโ”€โ”€ chats/              whatsapp-trip-planning-march.png
โ”œโ”€โ”€ docs/               notion-q2-sprint-board.png
โ”œโ”€โ”€ memes/              drake-hotline-bling-coding.png
โ””โ”€โ”€ web/                vercel-deployment-dashboard.png

Architecture

snapsearch (Agent)
    โ”‚
    โ”‚   MCPServerStdio
    โ–ผ
snapsearch-mcp (MCP server โ€” 8 tools)
    โ”œโ”€โ”€ vision.py        GPT-4o vision โ†’ structured description
    โ”œโ”€โ”€ embeddings.py    OpenAI embeddings + ChromaDB
    โ””โ”€โ”€ models.py        Pydantic data models

Why MCP and not just a script?

A script renames blindly. This agent:

  • Understands context across a conversation
  • Lets you say "actually split design into figma vs other" and re-organizes
  • Finds screenshots by meaning: "that slack message about the deploy" works
  • Remembers decisions across sessions (ChromaDB persists to ~/.snapsearch/)

Setup (No Clone Needed!)

Using uvx (the modern Python alternative to npx), you can run snapsearch instantly without manual cloning or pip installs.

1. Set your Environment Variables

You need to provide your OpenAI API key and optionally your screenshots directory. You can set them in your environment:

export OPENAI_API_KEY=sk-...
export SCREENSHOTS_DIR="/Users/yourname/Desktop" # Optional, defaults to ~/Desktop/screenshots-demo

2. Run the Agent

You can trigger the autonomous organizer right away:

# Full auto-organize (scan โ†’ vision โ†’ embed โ†’ move โ†’ rename)
uvx snapsearch

# Semantic search
uvx snapsearch "find my react error screenshots"
uvx snapsearch "show me figma mockups from last month"
uvx snapsearch "that slack conversation about the deployment"

# Partial organize
uvx snapsearch "organize only the code screenshots"

# Index health
uvx snapsearch --stats

MCP Tools

Tool What it does
scan_screenshots List all images + metadata
read_screenshot Return base64 image for direct visual inspection
describe_and_index Main tool โ€” GPT-4o vision + ChromaDB embedding
search_screenshots Semantic search (meaning, not filenames)
move_screenshot Move to category subfolder, updates index
rename_screenshot Human-readable rename, updates index
list_categories Folder structure + counts
index_stats ChromaDB health check

Use in Claude Desktop (MCP server only)

Because it's distributed on PyPI, using it in Claude Desktop is extremely simple.

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "snapsearch": {
      "command": "uvx",
      "args": ["snapsearch-mcp"],
      "env": {
        "SCREENSHOTS_DIR": "/Users/yourname/Desktop",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Where data lives

What Where
ChromaDB index ~/.snapsearch/chroma/
Your screenshots wherever SCREENSHOTS_DIR points
Nothing else nothing is uploaded anywhere

Stack

  • MCP server โ€” mcp Python SDK v1.27+
  • Agent โ€” OpenAI Agents SDK v0.17+
  • Vision โ€” gpt-4o (low detail mode โ€” fast + cheap)
  • Embeddings โ€” text-embedding-3-small
  • Vector DB โ€” ChromaDB (local, persistent)
  • Validation โ€” Pydantic v2

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snapsearch_mcp-0.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snapsearch_mcp-0.1.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file snapsearch_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: snapsearch_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for snapsearch_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 30230ae9dc7ef0cbdd004c4ce1d2422ebce88db9999152d28d7705e65f2ccc16
MD5 27a95f72cc62a24d4abe079b90e94d51
BLAKE2b-256 9701fbe43c1e0a9c3fcbd0c4f9b3f254523d281349e130d5e847e31a9f94fcc9

See more details on using hashes here.

File details

Details for the file snapsearch_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: snapsearch_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for snapsearch_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f4718960459cc56b9eb5bec0fe1366392a84170ebdbd8306c692004ab81c376
MD5 a1df7c486b798b02fca60c3dce763b90
BLAKE2b-256 74953be5ccdaca849d29900b6c88b5f8e544ed0270118859d95fb18206b25d2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page