immich-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IMMICH_API_KEY | Yes | API key from Immich → Account Settings → API Keys | |
| IMMICH_TIMEOUT | No | HTTP timeout in seconds | 30.0 |
| IMMICH_BASE_URL | Yes | Immich server URL (e.g. https://photos.example.com) | |
| IMMICH_MAX_RETRIES | No | Retry attempts on transient errors | 3 |
| IMMICH_EXTERNAL_URL | No | Public URL used for web_url links (useful when base URL is internal) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| immich.pingA | Verify connectivity and authentication with the Immich server. Returns server version and status. |
| immich.capabilitiesB | Discover Immich server features and supported API capabilities. |
| immich.assets.listB | List assets with optional filters. Returns paginated results. |
| immich.assets.getB | Get full metadata for a single asset by its ID. |
| immich.assets.viewA | Get direct URLs for viewing or downloading an asset. Returns thumbnail, original file, and Immich web UI links. URLs include the API key as a query parameter for direct browser access. |
| immich.assets.uploadA | Upload an asset to Immich from a local file path or a URL. For file paths, the MCP server process must have read access to the file. For URLs (http/https), the server downloads the file then uploads it to Immich. |
| immich.assets.updateB | Update metadata for a single asset (favorite, archived, description, rating). |
| immich.assets.bulk_updateA | Update metadata for multiple assets at once. Supports dry_run to preview changes. |
| immich.assets.deleteA | Delete one or more assets. Set force=true to permanently delete (skip trash). Always use dry_run=true first to preview. |
| immich.assets.statisticsB | Get asset counts broken down by type (images, videos, total). |
| immich.search.metadataB | Search assets using metadata filters: date range, type, location, camera model, person, filename. |
| immich.search.smartA | Semantic search using CLIP/ML. Describe what you're looking for in natural language (e.g. 'sunset at the beach', 'birthday party'). |
| immich.search.exploreB | Get discovery data: popular places, recognized people, and notable things in your library. |
| immich.albums.listA | List all albums. Optionally filter by shared status. |
| immich.albums.getB | Get full details of an album including its assets. |
| immich.albums.createC | Create a new album with an optional list of asset IDs. |
| immich.albums.updateB | Update album metadata: name, description, or cover asset. |
| immich.albums.deleteA | Delete an album. This does not delete the assets inside it. |
| immich.albums.add_assetsB | Add one or more assets to an album. |
| immich.albums.remove_assetsA | Remove one or more assets from an album. The assets themselves are not deleted. |
| immich.people.listA | List all recognized people from face recognition. Supports pagination. |
| immich.people.getB | Get details for a specific person by ID. |
| immich.people.updateB | Update a person's name or visibility (hidden/visible). |
| immich.people.mergeA | Merge two person clusters into one. The source person will be merged into the target. |
| immich.people.statisticsB | Get asset count statistics for a specific person. |
| immich.tags.listB | List all tags in the library. |
| immich.tags.getB | Get details of a specific tag by ID. |
| immich.tags.createA | Create a new tag. Use '/' as separator for nested tags (e.g. 'Travel/Japan'). |
| immich.tags.updateB | Update a tag's name or color. |
| immich.tags.deleteB | Delete a tag by ID. |
| immich.shared_links.listB | List all shared links. |
| immich.shared_links.getB | Get details of a specific shared link by ID. |
| immich.shared_links.createC | Create a shareable link for an album or specific assets. Optionally set expiry and password. |
| immich.shared_links.updateB | Update shared link settings: expiry, password, download permission. |
| immich.shared_links.removeA | Remove a shared link, revoking access to its content. |
| immich.activities.listB | List comments and likes for an album, optionally filtered by asset. |
| immich.activities.createC | Add a comment or like to an album or specific asset within an album. |
| immich.activities.deleteB | Delete a comment or like by activity ID. |
| immich.activities.statisticsB | Get comment count for an album or specific asset within an album. |
| immich.duplicates.listA | List all duplicate asset groups detected by Immich. Each group contains assets with matching content hashes. Returns full metadata needed for deletion decisions: file format, size, resolution, favorite status, album membership, Live Photo status. |
| immich.duplicates.deleteA | Delete specific assets from duplicate groups. Always run with dry_run=true first to confirm what will be deleted. Set force=true to permanently delete (bypass trash). Do NOT delete assets that are favorited or belong to albums without explicit user approval. |
| immich.duplicates.dismissA | Dismiss duplicate groups without deleting any assets. Use this when the assets are intentionally kept as separate copies and should no longer appear in the duplicate list. The asset files are NOT deleted — only the duplicate grouping is removed. Always run with dry_run=true first. |
| immich.user.meA | Get the profile of the currently authenticated user (name, email, quota, role). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| immich/review_duplicates | |
| immich/organize_album | |
| immich/find_untagged |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/whitehara/immich-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server