Skip to main content

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

Project description

snapsearch logo

snapsearch

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

PyPI Version Python Versions License: MIT

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.


✨ Features

  • Context-Aware Organization: Unlike scripts that blindly rename files, this agent understands context and categorizes intelligently.
  • Semantic Search: Find screenshots by meaning (e.g., "that slack message about the deploy"), even with garbage filenames.
  • Adaptive: Tell it to "actually split design into figma vs other" and it re-organizes on the fly.
  • Persistent Memory: Decisions are remembered across sessions using a local ChromaDB.

🚀 Quickstart (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

Trigger the autonomous organizer right away with these commands:

# Full auto-organize (scan → vision → embed → move → rename)
uvx snapsearch

# Semantic search queries
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 check
uvx snapsearch --stats

🤖 How it works

Behind the scenes, snapsearch builds a powerful pipeline to understand your images:

  1. 🖼️ screenshot.png
  2. 👁️ GPT-4o vision"React error about invalid hook call in App.js, line 23"
  3. 🔢 text-embedding-3-small[0.021, -0.847, 0.334, ...]
  4. 💾 ChromaDB (local) → Stored permanently on disk
  5. 🔍 search("hooks problem") → Finds it instantly!

The Resulting Organization

Your chaotic screenshots folder turns into a clean, categorized structure:

  • 📂 ~/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)
    • 🔌 Connects via MCPServerStdio to:
    • ⚙️ snapsearch-mcp (MCP server — 8 tools)
      • 👁️ vision.py — GPT-4o vision to structured descriptions
      • 🧠 embeddings.py — OpenAI embeddings & ChromaDB operations
      • 🧱 models.py — Pydantic data models

MCP Tools Available

Tool Description
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-..."
      }
    }
  }
}

🔒 Privacy & Data

Component Location
ChromaDB index ~/.snapsearch/chroma/
Your screenshots wherever SCREENSHOTS_DIR points
Cloud Uploads None. Nothing is uploaded anywhere.

🏗️ Stack

  • MCP servermcp Python SDK v1.27+
  • AgentOpenAI Agents SDK v0.17+
  • Visiongpt-4o (low detail mode — fast + cheap)
  • Embeddingstext-embedding-3-small
  • Vector DBChromaDB (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.1.tar.gz (19.0 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.1-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: snapsearch_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 19.0 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.1.tar.gz
Algorithm Hash digest
SHA256 530100bb7b6c3ca2fbdba5cb2db345996c68a0bfc9c6bb60133f0504f564d4ee
MD5 24b124415ff1896587afd1008e2ac311
BLAKE2b-256 dc46f2a15f9e640d1e802fc79a9128bb296240160b4d40090ebfa11226fa0edd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: snapsearch_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f047479683b4e17e8747beb2e73086a70bc94a9c122372a726cdb6f6f5e98a3
MD5 4ebab7cd2134687b5676d060eec173e0
BLAKE2b-256 d47cc59d4ba0f79f8790554dcb6e5e8c4550b3481ab82877fdbcb8d827e892f0

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