Install
$ agentstack add mcp-drolosoft-immich-photo-manager β scanned Β· β verified β works with Claude Code, Cursor, and more.
Security review
β PassedNo issues found. Passed automated security review. Β· v0.1.0 How review works β
- β Prompt-injection patterns
- β Secret / credential exfiltration
- β Dangerous shell & filesystem operations
- β Untrusted network calls
- β Known-malicious package signatures
What it can access
- β Network access No
- β Filesystem access No
- β Shell / process execution No
- β Environment & secrets No
- β Dynamic code execution No
From automated source analysis of v0.1.0. βUsedβ means the capability is present in the source β more access means more to trust, not that itβs unsafe.
About
immich-photo-manager
> MCP server for intelligent photo management with Immich β your self-hosted library, understood.
If your Immich library has grown past what you can manage by hand, immich-photo-manager gives any AI assistant direct access to your instance β search, organize, deduplicate, and curate albums through natural conversation. Works with Claude, Gemma, or any MCP-compatible client. Runs locally β your photos never leave your server.
What It Does
Say "create albums for all my trips" and watch it work:
GPS coordinates, CLIP visual search, and temporal matching β combined in one request to create dozens of curated albums. No scripts, no manual sorting.
Quick Start
Prerequisites
- A running Immich instance (self-hosted, v1.90+)
- An Immich API key (how to create one)
- Python 3.10+ with
pip(download)
Install as Claude Plugin (recommended)
git clone https://github.com/drolosoft/immich-photo-manager.git
cd immich-photo-manager
claude plugin marketplace add .
claude plugin install immich-photo-manager
That's it. Ask Claude: "how healthy is my photo library?"
> For manual MCP server setup, see [Getting Started](doc/GETTING-STARTED.md).
Works in Claude Code
The same plugin runs in Claude Code β search your library, curate albums, and generate galleries right from the terminal.
> Full conversation transcript: [Claude Code demo](doc/demos/cc/claude-code-example-demo.txt)
Works with Any MCP Client
immich-photo-manager is an MCP server β it works with any AI assistant that speaks the Model Context Protocol, not just Claude.
Use the package entry point directly with uvx:
{
"mcpServers": {
"immich": {
"command": "uvx",
"args": ["immich-photo-manager"],
"env": {
"IMMICH_BASE_URL": "https://your-immich-server.com",
"IMMICH_API_KEY": "your-api-key"
}
}
}
}
immich-photo-manager defaults to MCP stdio transport. Set MCP_TRANSPORT=http when you want to run the server as a Streamable HTTP service.
============================================================
IMMICH-PHOTO-MANAGER Γ GEMMA 4 (LM STUDIO)
============================================================
Immich: https://your-immich-server.com
Model: gemma4-26b-it (local, LM Studio)
Query: "Show me my Lanzarote albums"
1. Getting MCP tool schemas...
50 MCP tools available
2. Asking Gemma 4...
Gemma 4 chose: list_albums({})
3. Executing 'list_albums' against Immich...
Found 124 total albums, 14 Lanzarote albums:
- Lanzarote Amarillo (26 photos)
- Lanzarote Rojo (201 photos)
- Lanzarote Azul (187 photos)
- Lanzarote MarrΓ³n (208 photos)
- Lanzarote Negro (193 photos)
- Lanzarote Verde (201 photos)
- Lanzarote Gasolina (174 photos)
...
4. Gemma 4 interpreting results...
"I found 14 Lanzarote albums β 7 color-themed with
1,190 photos and 7 location-specific albums."
RESULT: Zero cloud dependency β fully self-hosted stack.
| Client | Status | |--------|--------| | Claude Code | Tested | | Claude Desktop | Tested | | LM Studio (Gemma 4) | Tested | | Cursor, Windsurf, VS Code, Cline, Zed | Compatible (MCP stdio) |
> Full transcript: [Gemma 4 demo](doc/demos/cc/lm-studio-gemma4-demo.txt) Β· Test script: test-lmstudio-mcp.py
Highlights
- AI-powered search β natural language photo search via CLIP ("sunset at the beach", "birthday cake")
- Geographic albums β create albums organized by place, combining GPS + CLIP + temporal matching
- Metadata repair β fix noon/midnight timestamps, infer missing GPS from neighboring photos, correct timezone offsets
- Library cleanup β detect screenshots, duplicates, and low-quality images with multi-signal analysis
- Duplicate detection β cross-source analysis using perceptual hashing (finds re-encoded copies across Apple Photos, Google Photos, and other imports)
- Bulk rotation β rotate entire albums or selections at once (90Β°/180Β°/270Β°); non-destructive, accumulates across calls, one-click revert
- People & face management β list, search, merge, and organize recognized people; reassign misidentified faces; view face thumbnails
- Trash & asset lifecycle β safely delete assets to trash, permanently remove, restore from trash; complete asset lifecycle management
- Library health β one command for asset inventory, metadata quality, storage breakdown, and recommendations
- Tags & organization β create, apply, and manage tags across your library; bulk tag and untag assets
- Interactive galleries β self-contained HTML pages with embedded thumbnails, 3 themes, 4 view modes, and a Cowork Actions Panel for batch operations
> Select photos in the gallery, click an action, and paste the command into Claude. See [Skills Reference](doc/SKILLS.md) for all 11 skills.
Why immich-photo-manager?
Immich is excellent at storing and viewing your photos. But managing a large library β deduplication, metadata repair, album curation, storage analysis β still requires manual effort or custom scripts.
| | Manual / scripts | immich-photo-manager | |:---:|---|---| | π | Write API calls, parse JSON | Natural language β "find my sunset photos from Italy" | | πΊοΈ | Export GPS, cluster manually | Geographic albums β automatic GPS + CLIP + temporal matching | | π§Ή | Hash files, diff checksums | Perceptual hashing β finds re-encoded duplicates across import sources | | π§ | Edit EXIF one file at a time | Metadata repair β batch-fix timestamps, infer GPS, correct timezones | | π | Query database, build reports | Library health β one command for metadata quality, storage, recommendations | | π | Rotate one photo at a time | Bulk rotation β rotate entire albums at once, non-destructive | | π·οΈ | No tag management in UI | Tags β create, bulk apply/remove across assets | | π‘οΈ | Manual review of every action | Safety first β shows findings, asks before acting |
Documentation
| Document | Description | |----------|-------------| | [Getting Started](doc/GETTING-STARTED.md) | Installation, manual MCP setup, deployment options, and troubleshooting | | [Skills Reference](doc/SKILLS.md) | All 12 skills β workflows, triggers, parameters, output formats | | [MCP Tools Reference](doc/MCP-TOOLS.md) | All 50 MCP tools β parameters, return types, examples | | [Architecture](doc/ARCHITECTURE.md) | How base64-embedded thumbnails solve the Cowork sandbox restriction | | [CORS Setup Guide](doc/CORS-SETUP.md) | Optional β enable direct URL thumbnail loading for browser-viewed galleries |
π¦ Glama Score
Contributing
Contributions are welcome β bug fixes, new skills, feature ideas. Open an issue or submit a PR.
If immich-photo-manager helps manage your library, consider giving it a star on GitHub β it helps others discover the project.
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!
License
MIT License β free to use, modify, and distribute.
Forged by Drolosoft Β· Tools we wish existed
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source β we do not rehost the code.
- Author: drolosoft
- Source: drolosoft/immich-photo-manager
- License: MIT
- Homepage: https://drolosoft.com/immich-photo-manager.html?lang=en
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet β be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.