immich-photo-manager

Manage your self-hosted Immich photo library through conversation โ€” natural language search, geographic album curation, duplicate detection, and interactive HTML galleries

immich-photo-manager

immich-photo-manager

License: MIT

๐Ÿ“ธ๐Ÿงน๐Ÿ—บ๏ธ MCP server for intelligent photo management with Immich โ€” your self-hosted library, understood.

If you self-host Immich and your library has grown past the point where you can manage it by hand, immich-photo-manager gives Claude direct access to your Immich instance through 21 MCP tools and 11 specialized skills โ€” from finding cross-ecosystem duplicates with perceptual hashing to generating interactive HTML galleries with a Cowork Actions Panel.

immich-photo-manager demo


๐Ÿš€ Quick Start

Prerequisites

Option A: Install as Claude Plugin (recommended)

git clone https://github.com/drolosoft/immich-photo-manager.git
cd immich-photo-manager

# Register the marketplace and install
claude plugin marketplace add .
claude plugin install immich-photo-manager

Verify with claude plugin list.

That's it. Open Claude and say "how healthy is my photo library?" to get started.

Note: The plugin connects to your Immich MCP server at localhost:8626. Make sure the server is running before using the plugin. See Option B for how to build and start the server.

Option B: Manual MCP Server Setup

If you prefer to configure the MCP server manually instead of using the setup script:

git clone https://github.com/drolosoft/immich-photo-manager.git
cd immich-photo-manager
pip3 install -r src/requirements.txt

Create .mcp.json in the project root:

{
  "mcpServers": {
    "immich": {
      "command": "python3",
      "args": ["-m", "immich_mcp_server"],
      "env": {
        "PYTHONPATH": "/ABSOLUTE/PATH/TO/immich-photo-manager/src",
        "MCP_TRANSPORT": "stdio",
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key-here"
      }
    }
  }
}

Important: Use PYTHONPATH pointing to the src/ directory. Do NOT use cwd (it is silently ignored by Claude Code).

Note on Smart Search (CLIP): The search_smart tool requires the Immich machine learning service to be running and Smart Search enabled in Administration > Settings > Machine Learning Settings > Smart Search. If the ML service is not configured, the tool will return a helpful error message instead of failing silently. All other tools work without the ML service. See the Immich Smart Search docs for setup details.


๐ŸŽฌ Core Workflow

You: "Create albums for all the places I've traveled"

โ†’ Scans GPS data from 28,000+ photos
โ†’ Clusters by location, identifies 47 destinations across 14 countries
โ†’ Proposes album list for approval
โ†’ Creates albums with curated selections (20-50 photos each)
โ†’ Publishes to Gallery with shared links

โœ… Created: ๐Ÿ‡ฎ๐Ÿ‡น Roma, Italia (47 photos, Jun 2023)
โœ… Created: ๐Ÿ‡ช๐Ÿ‡ฌ Cairo & Luxor, Egypt (63 photos, Mar 2024)
โœ… Created: ๐Ÿ‡ฒ๐Ÿ‡ฝ Oaxaca, Mรฉxico (38 photos, Dec 2022)
... 44 more albums

Geographic album creation combines GPS coordinates, CLIP visual search, and temporal matching โ€” then filters out screenshots and duplicates automatically. One request, dozens of curated albums.


โœจ Features

FeatureWhat it does
๐Ÿ”AI-powered searchNatural language photo search via CLIP ("sunset at the beach", "birthday cake")
๐Ÿ—บ๏ธGeographic albumsCreate albums organized by place โ€” GPS + CLIP combined for smart curation
๐ŸงนLibrary cleanupDetect screenshots, duplicates, and low-quality images with multi-signal analysis
๐Ÿ”ŽDuplicate reportDeep cross-source duplicate analysis using perceptual hashing โ€” finds re-encoded copies across Apple Photos, Google Photos, and other imports
๐ŸฅLibrary healthComprehensive health check โ€” asset inventory, metadata quality, storage breakdown, and recommendations
๐Ÿ“…Timeline gapsFind missing months, sparse periods, and single-source coverage risks in your photo timeline
๐Ÿ”งMetadata fixerDetect and repair broken dates (noon/midnight), missing GPS, wrong timezones โ€” with neighbor interpolation
๐Ÿ“ŒAuto-album curatorFinds new photos that belong in existing albums using GPS, CLIP, and temporal matching
๐Ÿ’พStorage optimizerIdentify RAW+JPEG pairs, oversized videos, and other space hogs with reclaimable space estimates
๐Ÿ‘ฅPeople reportFace recognition insights โ€” who appears most, unnamed clusters worth naming, co-occurrence patterns
๐ŸŒTravel mapInteractive Leaflet.js map with clustered pins showing every place you've photographed
๐Ÿ”—Gallery publishingCreate shared links to make albums publicly accessible
๐Ÿ–ผ๏ธInteractive HTML galleriesSelf-contained gallery pages with embedded thumbnails, 3 themes (light/system/dark), 4 view modes, slideshow, and keyboard navigation
๐ŸŽ›๏ธCowork Actions PanelSelect photos in the gallery and copy batch commands (Create Album, Get EXIF, Find Similar, Download, etc.) straight into Cowork chat
๐Ÿ›ก๏ธSafety firstNever deletes automatically โ€” always shows findings and asks before acting

๐Ÿ–ผ๏ธ Interactive Gallery & Cowork Actions

Say "show me photos from Barcelona" and the plugin generates a self-contained HTML gallery โ€” no server required, opens in any browser.

You: "Show me my Egypt album"

โ†’ Fetches album + base64 thumbnails from Immich
โ†’ Generates single-file HTML with embedded images
โ†’ 3 themes (light/system/dark), 4 view modes, slideshow, keyboard nav
โ†’ Cowork Actions Panel for batch operations

โœ… egypt-album.html โ€” open it, browse your photos, select & act

The Cowork Actions Panel is a sticky toolbar inside each gallery. Select photos, then click any action โ€” the command is copied to your clipboard, ready to paste into Cowork chat:

ActionWhat it copies
๐Ÿ“‹ Copy IDsRaw asset IDs for scripting
โž• Create Album"Create a new album with these photos: ..."
๐Ÿ“‚ Add to Album"Add these photos to album [name]: ..."
๐Ÿ“ฆ Move to Album"Move these photos to a different album: ..."
๐Ÿ” Get EXIF Info"Get EXIF metadata for these photos: ..."
๐Ÿ”Ž Find Similar"Find visually similar photos to: ..."
๐Ÿ–ผ๏ธ Set as Cover"Set this photo as the album cover: ..."
โฌ‡๏ธ Download"Download these photos: ..."
โค๏ธ Add to Favs"Mark these photos as favorites: ..."
โš ๏ธ Remove from Album"Remove these from album [name]: ..."
๐Ÿ—‘๏ธ Delete Photos"Delete these photos permanently: ..."

The gallery is fully responsive, works offline once generated, and supports touch gestures on mobile.


๐Ÿค” Why immich-photo-manager?

Immich is excellent at storing, viewing, and searching your photos. But managing a large library โ€” deduplication, metadata repair, album curation, storage analysis โ€” still requires manual effort or custom scripts. immich-photo-manager bridges that gap.

Manual / scriptsimmich-photo-manager
๐Ÿ”Write API calls, parse JSONNatural language โ€” "find my sunset photos from Italy"
๐Ÿ—บ๏ธExport GPS, cluster manuallyGeographic albums โ€” automatic GPS + CLIP + temporal matching
๐ŸงนHash files, diff checksumsPerceptual hashing โ€” finds re-encoded duplicates across import sources
๐Ÿ“ŠQuery database, build reportsLibrary health โ€” one command for metadata quality, storage, recommendations
๐Ÿ“…SQL queries on timestampsTimeline gaps โ€” detects empty months and single-source coverage risks
๐Ÿ”งEXIF tools, manual reviewMetadata fixer โ€” neighbor interpolation for missing GPS, broken timestamps
๐Ÿ›ก๏ธHope you don't delete the wrong thingSafety first โ€” never deletes without showing findings and asking

๐Ÿงฉ Skills

Skills are specialized workflows that combine MCP tools with domain knowledge. Each handles a specific photo management task end-to-end.

SkillWhat it does
๐Ÿ—บ๏ธ Album ManagerCreate and curate albums organized by geography โ€” GPS + CLIP + filtering
๐Ÿ” Photo SearchNatural language search combining GPS, CLIP, and metadata filters
๐Ÿงน Photo CleanupDetect screenshots, duplicates, and low-quality images with confidence levels
๐Ÿ”Ž Duplicate ReportCross-source duplicate analysis using perceptual hashing (pHash)
๐Ÿฅ Library HealthAsset inventory, metadata completeness, storage breakdown, recommendations
๐Ÿ“… Timeline GapsDetect empty months, sparse periods, single-source coverage risks
๐Ÿ”ง Metadata FixerRepair broken dates, missing GPS, wrong timezones with neighbor interpolation
๐Ÿ“Œ Auto-Album CuratorFind new photos that match existing albums using GPS, CLIP, and temporal patterns
๐Ÿ’พ Storage OptimizerIdentify RAW+JPEG pairs, oversized videos, reclaimable space estimates
๐Ÿ‘ฅ People ReportFace recognition insights โ€” top faces, unnamed clusters, co-occurrence patterns
๐ŸŒ Travel MapInteractive Leaflet.js map with clustered pins and heatmap overlay

See the Skills Reference for detailed workflows, triggers, and output formats.


โš™๏ธ How It Works

Claude โ†โ†’ MCP (stdio) โ†โ†’ Python Server โ†โ†’ Immich REST API
                                              your-instance

The MCP server is a Python module (immich_mcp_server) that communicates with Claude over stdio transport. It exposes 21 tools that map to Immich REST API endpoints, with added intelligence for batch operations, thumbnail embedding, and credential management.

Gallery HTML files are fully self-contained โ€” thumbnails are fetched from Immich, encoded as base64, and embedded directly in the HTML. This is required because the Cowork viewer runs in an about: sandbox that blocks all external network requests. See Architecture for the full technical explanation.

21 MCP Tools

CategoryTools
๐Ÿฅ Health (3)ping, get_server_version, get_statistics
๐Ÿ“ท Assets (2)get_asset_info, get_map_markers
๐Ÿ” Search (2)search_metadata, search_smart (CLIP)
๐Ÿ“ Albums (7)list_albums, get_album, create_album, update_album, delete_album, add_assets_to_album, remove_assets_from_album
๐Ÿ”— Sharing (2)list_shared_links, create_shared_link
๐Ÿ–ผ๏ธ Thumbnails (3)get_asset_thumbnail, get_album_thumbnails, get_thumbnails_batch
๐Ÿ”ง Config (2)get_connection_info, update_credentials

See the MCP Tools Reference for parameters, return types, and examples.


๐Ÿ“š Documentation

DocumentDescription
Getting StartedInstallation, configuration, deployment options, and troubleshooting
ArchitectureHow base64-embedded thumbnails solve the Cowork sandbox restriction
Skills ReferenceAll 11 skills โ€” workflows, triggers, parameters, output formats
MCP Tools ReferenceAll 21 MCP tools โ€” parameters, return types, examples
CORS Setup GuideOptional โ€” enable direct URL thumbnail loading for browser-viewed galleries

Additional dependencies (optional)

Some advanced skills require Python packages or direct database access:

pip3 install Pillow imagehash pillow-heif
PackageUsed byPurpose
Pillowduplicate-reportImage loading
imagehashduplicate-reportPerceptual hashing (pHash)
pillow-heifduplicate-reportHEIC/HEIF support (Apple Photos)
PostgreSQL clientlibrary-health, timeline-gaps, people-report, storage-optimizerDatabase-level analysis

๐Ÿค Contributing

Contributions are welcome. If you find a bug, have a feature idea, or want to improve a skill:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes
  4. Open a pull request

For bug reports and feature requests, use GitHub Issues.


โ˜• Support

If immich-photo-manager saved you time or made your photo library easier to manage, consider buying me a coffee โ€” it keeps the next one coming!

Buy Me A Coffee


๐Ÿ“œ License

MIT License โ€” free to use, modify, and distribute.

Forged by Drolosoft ยท Tools we wish existed

Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension