drolosoft/immich-photo-manager

drolosoft/immich-photo-manager

от drolosoft
MCP сервер для умного управления фотографиями в Immich. Даёт AI-ассистентам искать, создавать альбомы по геолокации или описанию, находить дубликаты и исправлять метаданные. Полезен владельцам саморазмещённых библиотек.

immich-photo-manager

immich-photo-manager

CI License: MIT immich-photo-manager MCP server GitHub Release Immich PyPI

Tested live on Immich 2.7.5 and 3.1.0 364 unit tests on every push 18 demos from real sessions

MCP server for intelligent photo management with Immich: your self-hosted library, understood.

An unofficial community plugin by Drolosoft. It is not affiliated with, sponsored by or endorsed by Immich or FUTO; "Immich" is their name and is used here only to say which server the plugin works with. It talks to your Immich server through its public API.

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 and talks only to your Immich; your originals stay on your server (see what leaves your network).

Tested, not assumed. Every push runs 364 unit tests on CI. Every release is also run live against real Immich 2.7.5 and 3.1.0 (Docker, all 94 tools over the MCP protocol's legacy era, state re-read after each write) before it is tagged; both protocol eras (the legacy handshake and stateless 2026-07-28) are pinned on every push by SDK-free wire tests (tests/test_raw_wire_eras.py). The kit is in tests/live/, reproducible by anyone. The demos in doc/demos/ are transcripts of real sessions, Demo 11 is this exact flow prompt by prompt, and Demo 12 runs the video frames and PDF photobook on a real clip. Demos 13 to 18 cover everything added in 2.x (library discovery, OCR and people search, memories and stacks, partners and downloads, asset notes, the Docker image) from real sessions. Details: How it's tested.

Часто задаваемые вопросы

Инструменты были проиндексированы:
add_assets_to_album

Добавляет существующие активы в альбом. Используйте это для подбора альбомов из результатов поиска или других списков активов. Активы могут одновременно принадлежать нескольким альбомам. Побочный эффект: изменяет членство в альбоме. Аргументы: album_id: UUID целевого альбома. asset_ids: Список UUID активов для добавления в альбом. Возвращает: JSON с album_id, количеством добавленных элементов и деталями успеха/ошибки для каждого актива.

Параметры
  • album_idstringобязательный
  • asset_idsstring[]обязательный
create_album

Создает новый альбом, опционально предварительно заполненный фотографиями. Используйте это, чтобы организовать фото в коллекции. Побочный эффект: создает новый альбом в Immich. Аргументы: name: Отображаемое имя альбома (например, 'Roma, Italia', 'Birthday 2024'). description: Необязательный текст описания альбома. asset_ids: Необязательный список UUID ресурсов, добавляемых сразу при создании. Возвращает: JSON с id, name и количеством ресурсов нового альбома.

Параметры
  • asset_idsstring[] | null
  • descriptionstring
  • namestringобязательный
create_shared_link

Создаёт публичную общую ссылку для альбома и делает его доступным по URL без аутентификации. Используется для публикации галереи для внешнего просмотра.Побочный эффект: создаётся общедоступный URL. Аргументы:album_id: UUID альбома, который нужно опубликовать.allow_download: Разрешить посетителям скачивать исходные файлы (по умолчанию true).show_metadata: Показывать посетителям EXIF-данные (по умолчанию true).description: Необязательное читаемое описание для ссылки. Возвращает: JSON с идентификатором ссылки, ключом, идентификатором альбома и полным общедоступным URL.

Параметры
  • album_idstringобязательный
  • allow_downloadboolean
  • descriptionstring
  • show_metadataboolean
create_tag

Создаёт новый тег для категоризации ресурсов. Сначала используйте list_tags, чтобы избежать дубликатов. Побочный эффект: создаёт новый тег в Immich. Аргументы: name: Отображаемое имя тега (например 'Vacation', 'Family', 'Work'). Должно быть уникальным. color: Необязательный hex-цвет для тега (например '#FF5733'). Возвращает: JSON с id, name и color нового тега.

Параметры
  • colorstring
  • namestringобязательный
delete_album

Удаляет контейнер альбома. Фотографии внутри НЕ удаляются, они остаются в библиотеке. Используйте этот инструмент, чтобы удалить ненужные группировки альбомов. Побочный эффект: безвозвратно удаляет альбом (отменить нельзя). Аргументы: album_id: UUID альбома для удаления. Возвращает: JSON с подтверждением удаления и album_id.

Параметры
  • album_idstringобязательный
delete_assets

Удаляет активы (мягкое удаление в корзину или безвозвратное). Используйте для удаления ненужных фотографий/видео. По умолчанию — мягкое удаление (восстанавливается через restore_assets). При force=true удаление НАВСЕГДА и НЕОБРАТИМО. Побочный эффект: перемещает/удаляет активы. Аргументы: asset_ids: Список UUID активов для удаления. force: false (по умолчанию) = перемещение в корзину (восстанавливаемо). true = удаление НАВСЕГДА (без отмены). Возвращает: JSON с количеством удалённых и указанием, использовался ли force.

Параметры
  • asset_idsstring[]обязательный
  • forceboolean
delete_shared_link

Удаляет (отзывает) общую ссылку, делая публичный URL немедленно недоступным. Альбом и его фотографии не затрагиваются. Побочный эффект: навсегда удаляет ссылку. Аргументы: link_id: UUID общей ссылки для удаления. Возвращает: JSON с подтверждением удаления и link_id.

Параметры
  • link_idstringобязательный
delete_tag

Удаляет тег и убирает его из всех активов. Сами активы не затрагиваются. Побочный эффект: безвозвратно удаляет тег (отменить нельзя). Аргументы: tag_id: UUID тега для удаления. Возвращает: JSON с подтверждением удаления и tag_id.

Параметры
  • tag_idstringобязательный
empty_trash

Удаляет навсегда ВСЕ ресурсы, находящиеся в корзине. РАЗРУШИТЕЛЬНО и НЕОБРАТИМО. Используйте это только после подтверждения, что пользователь хочет очистить все удалённые элементы. Для удаления конкретных ресурсов используйте delete_assets. Побочный эффект: навсегда уничтожает все удалённые ресурсы и освобождает хранилище. Возвращает: JSON с подтверждением успеха.

Параметры

Без параметров.

export_pdf

Создаёт PDF (обложка, оглавление, места, по одному разделу на актив) из альбома или списка активов на машине, где работает этот сервер. Всегда включает метаданные Immich (дата, место, камера, люди, теги); передавайте captions {asset_id: текст} с тем, что вы увидели, чтобы добавить свой анализ. Кадры видео попадают сразу в PDF и не расходуют токены (до 120 на видео). PDF никогда не попадает в диалог, если только return_base64=True. Если пользователь запросил PDF, не уточнив, как его оформить, сначала вызовите get_export_preview и спросите его о вариантах, которые он перечисляет. Следите, чтобы подборка была цельной: один сюжет на PDF. Никогда не смешивайте несвязанные активы (два видео о разных вещах, фото с разных событий) только ради того, чтобы показать больше; если материал пользователя охватывает несколько сюжетов, предложите вместо этого отдельный PDF для каждого сюжета. Аргументы: album_id: UUID альбома, или asset_ids: явные UUID активов (ровно один из двух). output_path: куда сохранять (по умолчанию ~/Desktop/<title>.pdf). Не перезаписывает существующие файлы. title: заголовок обложки (по умолчанию: название альбома или «Immich export <дата>»). captions: {asset_id: текст}, пишутся после просмотра изображений. layout: 'detail' (по одному активу на страницу с его данными, по умолчанию), 'grid' (по шесть на страницу) или 'photobook' (по одному активу на страницу, изображение максимально большого размера, подпись под ним; видео с несколькими выбранными кадрами разворачивается в одну полную страницу на каждый кадр). frames_per_video: количество кадров на видео, равномерно распределённых (0-120, по умолчанию 4; 0 = только постер). frame_interval: один кадр каждые N секунд вместо frames_per_video (тот же лимит 120). frame_times: {asset_id: [секунды, ...]} точные моменты для конкретных видео, выбранные после просмотра их кадров («показательный кадр»). Для указанных видео имеет приоритет над frames_per_video/frame_interval; остальные сохраняют равномерное распределение. frame_captions: {asset_id: [текст, ...]} одна подпись на каждый извлечённый кадр, в порядке кадров (photobook печатает каждую на странице своего кадра; остальные макеты их игнорируют).

Параметры
  • album_idstring
  • asset_idsstring[]
  • captionsobject
  • confirmboolean
  • coverboolean
  • footerstring
  • frame_captionsobject
  • frame_intervalnumber
  • frame_sizestring
  • frames_per_videointeger
  • frame_timesobject
  • headerboolean
  • image_sizestring
  • indexboolean
  • languagestring
  • layoutstring
  • limitinteger
  • mapboolean
  • orderstring
  • output_pathstring
  • placesboolean
  • return_base64boolean
  • titlestring
  • videos_positionstring
get_album

Получает полные сведения о конкретном альбоме, включая все идентификаторы его ресурсов. Используйте его, чтобы просмотреть содержимое альбома или получить идентификаторы ресурсов для дальнейших операций (миниатюры, метаданные, поворот). Для вывода списка всех альбомов используйте вместо этого list_albums. Только чтение. Аргументы: album_id: UUID альбома (из list_albums или create_album). Возвращает: JSON с метаданными альбома, плоский список всех asset_ids и массив assets (id, filename, type, date, recognized people), чтобы на вопрос «кто появляется в этом альбоме / кто повторяется» можно было ответить без дополнительных вызовов.

Параметры
  • album_idstringобязательный
get_album_images

Получает миниатюры альбома в виде блоков изображений для встроенного визуального отображения. Используйте этот инструмент для визуального просмотра альбома в клиентах, которые отображают изображения. Для генерации HTML-галереи с base64 data URIs (Cowork/skills) используйте вместо этого get_album_thumbnails: он возвращает JSON с именами файлов и датами. Только чтение. Args: album_id: UUID альбома. size: 'thumbnail' (250px) или 'preview' (1440px). По умолчанию: 'thumbnail'. limit: Максимальное количество миниатюр для возврата (1-50, по умолчанию 20). Возвращает: список блоков изображений, подходящих для визуального отображения.

Параметры
  • album_idstringобязательный
  • limitinteger
  • sizestring
get_album_thumbnails

Получает миниатюры фотографий из альбома в кодировке base64. Используйте это, чтобы создавать визуальные HTML-галереи из существующего альбома. Для миниатюр из результатов поиска (без альбома) используйте get_thumbnails_batch. Только для чтения. Аргументы: album_id: UUID альбома. size: 'thumbnail' (250px) или 'preview' (1440px). По умолчанию: 'thumbnail'. limit: Максимум миниатюр к возврату (1-50, по умолчанию 20). Возвращает: JSON с информацией об альбоме и массивом миниатюр (каждая содержит asset_id, данные base64, имя файла, дату).

Параметры
  • album_idstringобязательный
  • limitinteger
  • sizestring
get_asset_faces

Получает все обнаруженные лица на фотографии с их привязкой к людям. Используйте это, чтобы увидеть, кто на конкретном фото, или найти ID лиц для reassign_face. Только для чтения. Аргументы: asset_id: UUID ресурса. Возвращает: JSON-массив обнаружений лиц (каждое содержит face_id, person_id, person_name, bounding box).

Параметры
  • asset_idstringобязательный
get_asset_image

Получает миниатюру одного ресурса в виде блока изображения для встроенного визуального отображения. Используйте это в клиентах, которые отображают изображения (Open WebUI, Claude Desktop). Для генерации HTML-галереи с base64 data URI (Cowork/skills) используйте вместо этого get_asset_thumbnail, он возвращает JSON. Только чтение. Аргументы: asset_id: UUID ресурса. size: 'thumbnail' (250px, быстро) или 'preview' (1440px, более высокое качество). По умолчанию: 'thumbnail'. Возвращает: блок изображения (MCP ImageContent) для визуального отображения.

Параметры
  • asset_idstringобязательный
  • sizestring
get_asset_info

Получает полные метаданные для одного ассета. Применяется, когда нужны детали EXIF, GPS-координаты, информация о камере или свойства файла для известного ID ассета. Для поиска ассетов вместо него служат search_metadata или search_smart. Только для чтения. Аргументы: asset_id: UUID ассета (из результатов поиска, списков альбомов или list_assets). Возвращает: JSON с данными EXIF, GPS, датами, размерами, размером файла, производителем и моделью камеры, а также владельцем.

Параметры
  • asset_idstringобязательный
get_asset_thumbnail

Получает изображение миниатюры в кодировке base64 для одного ресурса. Используйте это для визуального просмотра одного фото. Для нескольких фото используйте get_thumbnails_batch (по ID) или get_album_thumbnails (по альбому). Только чтение. Аргументы: asset_id: UUID ресурса. size: 'thumbnail' (250px, быстро) или 'preview' (1440px, более высокое качество). По умолчанию: 'thumbnail'. Возвращает: JSON с полями 'data' (строка в base64) и 'type' (MIME-тип, например 'image/jpeg').

Параметры
  • asset_idstringобязательный
  • sizestring
get_connection_info

Возвращает базовый URL Immich и маскированный ключ API. Использует это для заполнения заполнителей шаблона галереи (например, {{IMMICH_URL}}). Ключ API намеренно замаскирован в целях безопасности — миниатюры используют data URI в формате base64, а не прямые вызовы API. Только чтение. Возвращает: JSON с полями base_url и api_key_masked (только первые 8 и последние 4 символа).

Параметры

Без параметров.

get_duplicates

Получает группы дубликатов, обнаруженные ML-сервисом (одинаковые изображения, сохранённые более одного раза). Используйте этот инструмент для проверки потенциальных дубликатов перед их разрешением через resolve_duplicates. Требуется ML-сервис Immich. Примечание: «duplicates» означает одну и ту же фотографию, а не одного человека; для поиска людей используйте get_album (assets[].people) или get_asset_faces. Только для чтения. Параметры: album_id: Необязательный. Ограничивает выбор группами, которые затрагивают этот альбом; каждая группа также сообщает, какие из её ресурсов находятся внутри или снаружи альбома. Возвращает: JSON-массив групп дубликатов (каждая с duplicateId, массивом assets и оценками сходства).

Параметры
  • album_idstring
get_export_preview

Перечисляет, что включит export_pdf (id, type, filename, date, place, people, video duration), чтобы вы знали, какие активы существуют, прежде чем смотреть на изображения и писать подписи. Передавайте ровно один из параметров album_id / asset_ids. Только чтение. Результат также содержит options: каждый вариант, который принимает export_pdf, со значением по умолчанию. Когда пользователь запросил PDF, не уточнив, как его оформить, покажите ему эти варианты и спросите (макет, титульные страницы, какие моменты видео, подписи) перед экспортом; если он задал параметры или просто хочет «PDF, стандартные настройки подойдут», экспортируйте сразу. Аргументы: album_id: UUID альбома, или asset_ids: явные UUID активов (результаты поиска, выборка). limit: максимум активов (1-500, по умолчанию 100). Возвращает: JSON {title, count, assets:[...], warnings:[...]} или {"error": ...}.

Параметры
  • album_idstring
  • asset_idsstring[]
  • limitinteger
get_images_batch

Получает миниатюры для произвольных ID ресурсов в виде блоков изображений для встроенного визуального отображения. Используйте этот инструмент, чтобы визуально показывать результаты поиска в клиентах, которые отображают изображения. Чтобы создавать HTML-галереи с base64 data URI (Cowork/skills), используйте get_thumbnails_batch - он возвращает JSON с именами файлов и датами. Только чтение. Аргументы: asset_ids: список UUID ресурсов, для которых нужно получить миниатюры. size: 'thumbnail' (250px) или 'preview' (1440px). По умолчанию: 'thumbnail'. limit: максимум возвращаемых миниатюр (1-50, по умолчанию 20). Получаются только первые N ID. Возвращает: список блоков изображений, подходящих для визуального отображения.

Параметры
  • asset_idsstring[]обязательный
  • limitinteger
  • sizestring
get_map_markers

Получает GPS-маркеры на карте для всех геотегированных ресурсов. Используйте это, чтобы узнать, где были сделаны фотографии, или для построения карт путешествий. Для поиска по названию города/страны используйте search_metadata вместо этого. Только для чтения. Возвращает до 500 маркеров. Аргументы: file_created_after: Нижняя граница даты в формате ISO (например, '2023-01-01'). file_created_before: Верхняя граница даты в формате ISO. is_favorite: Если true, возвращает только избранные. Возвращает: JSON с общим количеством и массивом маркеров (каждый с идентификатором ресурса, широтой, долготой).

Параметры
  • file_created_afterstring
  • file_created_beforestring
  • is_favoriteboolean | null
get_person

Получает полную информацию о конкретном человеке, включая имя, дату рождения и количество фотографий. Используйте после того, как найдете человека через list_people или search_people. Только для чтения. Args: person_id: UUID человека (из list_people или search_people). Returns: JSON с информацией о человеке (id, name, birthDate, isHidden, photoCount, thumbnailPath).

Параметры
  • person_idstringобязательный
get_person_thumbnail

Получает миниатюру лица в формате base64 для человека. Используйте её для визуального определения личности перед объединением или переименованием. Только чтение. Аргументы: person_id: UUID человека. Возвращает: JSON с полями 'data' (строка base64 части лица) и 'type' (MIME-тип).

Параметры
  • person_idstringобязательный
get_server_version

Получает версию сервера Immich. Используйте это для проверки совместимости или чтобы сообщить работающую версию сервера. Только для чтения. Возвращает: JSON с номерами версий major, minor и patch.

Параметры

Без параметров.

get_shared_link

Получает полные сведения об общей ссылке, включая разрешения, срок действия и связанные ресурсы. Проверяет конфигурацию конкретной ссылки. Только для чтения. Аргументы: link_id: UUID общей ссылки (из list_shared_links). Возвращает: JSON со сведениями о ссылке, разрешениями, датой истечения срока действия и связанными ресурсами/альбомом.

Параметры
  • link_idstringобязательный
get_statistics

Получает статистику библиотеки. Используйте для быстрого обзора размера библиотеки без перечисления отдельных ресурсов. Только чтение. Возвращает: JSON с общим количеством фотографий, видео и объёмом хранилища в байтах.

Параметры

Без параметров.

get_tag

Получает детали о конкретном теге. Используйте этот инструмент, чтобы просмотреть свойства тега. Только чтение. Аргументы: tag_id: UUID тега (из list_tags). Возвращает: JSON с id тега, именем, цветом и количеством использований.

Параметры
  • tag_idstringобязательный
get_thumbnails_batch

Получает миниатюры в кодировке base64 для произвольных идентификаторов ресурсов без необходимости в альбоме. Используйте это для визуального отображения результатов поиска или любого произвольного набора фотографий. Для миниатюр на основе альбома используйте get_album_thumbnails. Для одной фотографии используйте get_asset_thumbnail. Только для чтения. Аргументы: asset_ids: Список UUID ресурсов, для которых нужно получить миниатюры. size: 'thumbnail' (250 пикселей) или 'preview' (1440 пикселей). По умолчанию: 'thumbnail'. limit: Максимальное количество возвращаемых миниатюр (1–50, по умолчанию 20). Будет обработано только первые N идентификаторов. Возвращает: JSON с массивом миниатюр (каждая содержит asset_id, данные в base64, имя файла, дату).

Параметры
  • asset_idsstring[]обязательный
  • limitinteger
  • sizestring
get_video_frames

Получает кадры видео в виде блоков изображений, чтобы «смотреть» клип. Immich хранит по одному постеру на видео; этот инструмент скачивает видео и извлекает кадры локально (PyAV, зависимость начиная с версии 1.7.1, или ffmpeg из PATH). Каждый кадр - это одно изображение для модели. Рабочий процесс: сначала 6 кадров; чтобы рассмотреть ближе, диапазон сужается с помощью start/end или используется интервал (до 1 с). Если кадров больше 12, инструмент возвращает JSON-план с полями frames_planned и estimated_tokens вместо изображений: план показывается пользователю, и повторный вызов с confirm=true выполняется только при его согласии. Жесткий лимит - 120 кадров на вызов. Для base64 JSON с временными метками используйте get_video_frames_json. Только для чтения. Args: asset_id: UUID видеозаписи. count: Кадры, равномерно распределённые по сегменту (по умолчанию 6). Игнорируется, если interval > 0. size: 'thumbnail' (250px, ~1.6 тыс. токенов на кадр) или 'preview' (1440px, ~6.4 тыс. токенов). По умолчанию 'thumbnail'. start: Начало сегмента в секундах (по умолчанию 0). end: Конец сегмента в секундах (0 = до конца). interval: Один кадр каждые N секунд вместо count (1 = один кадр в секунду, максимальная гранулярность). confirm: Требуется (true), если будет создано более 12 кадров; сначала спросите пользователя. sheet: Упаковывает кадры в контактные листы (30 кадров на изображение, с встроенными временными метками): длинное видео превращается в одно или два изображения вместо десятков, поэтому подтверждение не требуется. Используйте для быстрого просмотра, затем вырезайте важные моменты. Возвращает: JPEG-блоки изображений в хронологическом порядке или JSON (план подтверждения / ошибка).

Параметры
  • asset_idstringобязательный
  • confirmboolean
  • countinteger
  • endnumber
  • intervalnumber
  • sheetboolean
  • sizestring
  • startnumber
get_video_frames_json

Кадры видео в формате base64 JPEG с временными метками для HTML-галерей и навыков. Те же параметры, порог (подтверждение при >12) и лимит (120), что и у get_video_frames. Только чтение. Аргументы: asset_id: UUID видеоматериала. count: Кадры, равномерно распределённые по сегменту (по умолчанию 6). Игнорируется, когда interval > 0. size: 'thumbnail' (250px, ~1.6k токенов на кадр) или 'preview' (1440px, ~6.4k). По умолчанию 'thumbnail'. start: Начало сегмента в секундах (по умолчанию 0). end: Конец сегмента в секундах (0 = до конца). interval: Один кадр каждые N секунд вместо count (1 = один раз в секунду, максимальная детализация). confirm: Обязателен (true), если будет создано более 12 кадров; сначала спросите пользователя. Возвращает: JSON {asset_id, duration, backend, count, frames:[{timestamp, data, type}]}, план подтверждения {confirm_required, frames_planned, estimated_tokens, ...} или {"error": ...}.

Параметры
  • asset_idstringобязательный
  • confirmboolean
  • countinteger
  • endnumber
  • intervalnumber
  • sizestring
  • startnumber
list_albums

Перечисляет все альбомы в библиотеке с краткой информацией. Используйте эту возможность, чтобы узнать о существующих альбомах перед созданием новых или для поиска ID альбома. Только для чтения. Аргументы: shared: true = только общие альбомы, false = только не общие, опустить = все альбомы. Возвращает: JSON с общим количеством и массивом альбомов (каждый содержит id, name, description, assetCount, статус shared).

Параметры
  • sharedboolean | null
list_assets

Перечисляет активы с простыми фильтрами (поисковый запрос не требуется). Используйте это для просмотра библиотеки по статусу (избранное, архив, корзина) или типу. Для поиска конкретного содержимого используйте search_metadata (структурированный) или search_smart (визуальный ИИ). Только для чтения. Аргументы: is_favorite: true = только избранные, false = только неизбранные, не указывать = все. is_archived: true = только архивные, false = только не архивные, не указывать = все. is_trashed: true = только элементы в корзине; false/не указывать = активная библиотека (Immich никогда не смешивает оба состояния). asset_type: 'IMAGE' или 'VIDEO'. Не указывать = оба. page: Номер страницы, начиная с 1 (по умолчанию 1). size: Количество результатов на странице (1-200, по умолчанию 50). Возвращает: JSON с общим количеством, текущей страницей и массивом активов с идентификаторами, именами файлов, датами и типами.

Параметры
  • asset_typestring
  • is_archivedboolean | null
  • is_favoriteboolean | null
  • is_trashedboolean | null
  • pageinteger
  • sizeinteger
list_people

Перечисляет всех распознанных людей (кластеры лиц) в библиотеке. Используйте это, чтобы просмотреть, кто изображён в фототеке, или найти ID человека. Для поиска по имени используйте search_people. Только чтение. Аргументы: page: номер страницы, начиная с 1 (по умолчанию 1). size: количество результатов на странице (по умолчанию 50). with_hidden: включать людей, отмеченных как скрытые (по умолчанию false). Возвращает: JSON с общим количеством (total count), страницей (page) и массивом людей (people), каждый из которых содержит id, name, thumbnailPath, photoCount.

Параметры
  • pageinteger
  • sizeinteger
  • with_hiddenboolean
list_shared_links

Выводит список всех общих ссылок (публичных URL-адресов галереи). Используйте для просмотра того, что в данный момент опубликовано, или для поиска ID ссылки для обновления/удаления. Только чтение. Возвращает: JSON с общим количеством и массивом ссылок (каждая содержит id, key, type, description, album info).

Параметры

Без параметров.

list_tags

Перечисляет все теги в библиотеке. Используйте это, чтобы найти существующие теги перед созданием новых или получить ID тега для операций тегирования. Только для чтения. Возвращает: JSON с общим количеством и массивом тегов (каждый содержит id, name, color).

Параметры

Без параметров.

merge_people

Объединяет несколько кластеров людей в один. Используется, когда одного и того же реального человека разбили на несколько кластеров лиц. ДЕСТРУКТИВНО и НЕОБРАТИМО: объединённые люди удаляются навсегда, а все их лица переходят к целевому человеку. Аргументы: person_id: UUID целевого человека, которого нужно оставить (получает все объединённые лица). merge_ids: Список UUID людей, которых нужно влить в целевого. Эти люди удаляются навсегда. Возвращает: JSON с деталями результата объединения.

Параметры
  • merge_idsstring[]обязательный
  • person_idstringобязательный
ping

Проверяет соединение с сервером Immich. Используйте для проверки доступности сервера перед выполнением других операций. Только чтение. Возвращает: JSON со статусом 'server' ('pong' если здоров).

Параметры

Без параметров.

reassign_face

Переназначает обнаруженное лицо другому человеку. Используйте для исправления ошибок распознавания лиц (например, лицо, ошибочно приписанное лицу А, должно быть лицом Б). Сначала получите face_id через get_asset_faces. Побочный эффект: навсегда изменяет связь лицо-человек. Аргументы: face_id: UUID обнаружения лица (из результатов get_asset_faces). person_id: UUID правильного человека, которому нужно назначить это лицо. Возвращает: JSON с обновлённым назначением лица.

Параметры
  • face_idstringобязательный
  • person_idstringобязательный
remove_assets_from_album

Удаляет активы из альбома, не удаляя их сами. Фотографии остаются в библиотеке и других альбомах. Используйте это, чтобы отменить курирование ошибочно добавленных активов. Побочный эффект: изменяет состав альбома. Аргументы: album_id: UUID альбома, из которого нужно удалить активы. asset_ids: Список UUID активов, которые нужно удалить из этого альбома. Возвращает: JSON с album_id, количеством удалённых и деталями результата по каждому активу.

Параметры
  • album_idstringобязательный
  • asset_idsstring[]обязательный
resolve_duplicates

Разрешает дубликаты групп, выбирая, какие ассеты оставить, а какие отправить в корзину. Используйте этот инструмент после просмотра результатов get_duplicates. Ассеты в корзине можно восстановить через restore_assets. Побочный эффект: перемещает отклонённые дубликаты в корзину. Аргументы: groups: Список словарей, каждый с полями: duplicateId (из get_duplicates), assetIds (UUID для СОХРАНЕНИЯ), trashIds (UUID для УДАЛЕНИЯ). Возвращает: JSON с количеством разрешённых групп.

Параметры
  • groupsobject[]обязательный
restore_assets

Восстанавливает конкретные активы из корзины обратно в активную библиотеку. Используйте этот инструмент для выборочного восстановления случайно удалённых фотографий. Для восстановления всего сразу используйте restore_trash. Побочный эффект: перемещает указанные активы из корзины. Аргументы: asset_ids: список UUID активов, находящихся в корзине, которые нужно восстановить. Возвращает: JSON с количеством восстановленных активов.

Параметры
  • asset_idsstring[]обязательный
restore_trash

Восстанавливает ВСЕ удалённые активы обратно в библиотеку. Используйте это, чтобы отменить случайное массовое удаление. Для восстановления только определённых активов используйте restore_assets. Побочный эффект: перемещает все удалённые активы обратно в активную библиотеку. Возвращает: JSON с подтверждением успеха.

Параметры

Без параметров.

revert_asset_edits

Удаляет все недеструктивные изменения (поворот, кадрирование, отражение) из активов, восстанавливая исходный вид. Используйте это, чтобы отменить rotate_assets или любые другие преобразования отображения. Укажите ЛИБО asset_ids, ЛИБО album_id. Побочный эффект: удаляет все записи правок для активов. Аргументы: asset_ids: Список UUID активов для восстановления. Взаимоисключающе с album_id. album_id: Восстанавливает все активы в этом альбоме. Взаимоисключающе с asset_ids. Возвращает: JSON с количеством восстановленных и неудавшихся операций.

Параметры
  • album_idstring
  • asset_idsstring[] | null
rotate_assets

Применяет неразрушающий поворот по часовой стрелке к одному или нескольким активам. Используйте это для исправления проблем с ориентацией. Исходный файл никогда не изменяется — поворот только меняет отображение. Используйте revert_asset_edits для отмены. Укажите ЛИБО asset_ids, ЛИБО album_id. Побочный эффект: записывает правки поворота в Immich; накапливается с существующим поворотом. Args: angle: градусы по часовой стрелке, должно быть кратно 90 (90, 180 или 270). По умолчанию: 90. asset_ids: список UUID активов для поворота. Взаимоисключающие с album_id. album_id: повернуть все активы в этом альбоме. Взаимоисключающие с asset_ids. Возвращает: JSON с количеством повёрнутых/неудачных и применённым углом.

Параметры
  • album_idstring
  • angleinteger
  • asset_idsstring[] | null
search_metadata

Ищет активы по полям метаданных EXIF. Используй, когда знаешь конкретные критерии: город, модель камеры или диапазон дат. Для визуальных запросов на естественном языке (например, 'закат на пляже') лучше вызывай search_smart. Для просмотра без критериев используй list_assets. Только чтение. Аргументы: city: Название города из обратного геокодирования GPS в EXIF (с учётом регистра, например 'Barcelona'). state: Название штата или региона. country: Название страны (например, 'Spain', 'Egypt'). make: Производитель камеры (например, 'Apple', 'Canon', 'Sony'). model: Строка модели камеры (например, 'iPhone 14 Pro', 'EOS R5'). taken_after: Дата в формате ISO - возвращает только активы, снятые после этой даты. taken_before: Дата в формате ISO - возвращает только активы, снятые до этой даты. is_favorite: Если true, возвращает только избранное. asset_type: 'IMAGE' или 'VIDEO'. Пропусти, чтобы получить оба типа. page: Номер страницы, начиная с 1 (по умолчанию 1). size: Результатов на странице (1-200, по умолчанию 50). Возвращает: JSON с общим числом совпадений, текущей страницей и массивом активов с ID, именами файлов и датами.

Параметры
  • asset_typestring
  • citystring
  • countrystring
  • is_favoriteboolean | null
  • makestring
  • modelstring
  • pageinteger
  • sizeinteger
  • statestring
  • taken_afterstring
  • taken_beforestring
search_people

Ищет людей по имени (частичное совпадение). Используйте этот инструмент, когда знаете имя человека. Для просмотра всех людей используйте list_people. Только чтение. Аргументы: name: Полное или частичное имя для поиска (без учёта регистра). with_hidden: Включает скрытых людей в результаты (по умолчанию false). Возвращает: JSON-массив подходящих людей с полями id, name и photo count.

Параметры
  • namestringобязательный
  • with_hiddenboolean
search_smart

Визуальный поиск на базе ИИ с использованием CLIP-эмбеддингов. Используйте его, когда описываете, как выглядит фото, на естественном языке (например, 'закат на пляже', 'собака приносит мяч'). Для структурированных критериев (город, камера, дата) используйте вместо этого search_metadata. Требует сервис Immich ML с включённым Smart Search. Только чтение. Аргументы: query: описание искомого визуального содержимого на естественном языке. city: необязательный фильтр по городу, сужает результаты географически. state: необязательный фильтр по штату/региону. country: необязательный фильтр по стране. taken_after: дата в формате ISO - только файлы, снятые после этой даты. taken_before: дата в формате ISO - только файлы, снятые до этой даты. page: номер страницы, начиная с 1 (по умолчанию 1). size: результатов на странице (1-200, по умолчанию 50). Возвращает: JSON с общим количеством, страницей и файлами, отсортированными по визуальному сходству с запросом.

Параметры
  • citystring
  • countrystring
  • pageinteger
  • querystringобязательный
  • sizeinteger
  • statestring
  • taken_afterstring
  • taken_beforestring
tag_assets

Применяет тег к нескольким ресурсам одновременно. Используйте это для массовой категоризации фотографий (например, отметить все фотографии с отпуска). Побочный эффект: добавляет связь тега с ресурсами. Аргументы: tag_id: UUID тега для применения (из list_tags или create_tag). asset_ids: Список UUID ресурсов для тегирования. Не должен быть пустым. Возвращает: JSON с tag_id, количество тегированных и результаты по каждому ресурсу.

Параметры
  • asset_idsstring[]обязательный
  • tag_idstringобязательный
untag_assets

Удаляет тег из нескольких активов. Сам тег остаётся; удаляется только связь. Побочный эффект: удаляет связи тега с активами. Аргументы: tag_id: UUID тега, который нужно удалить из активов. asset_ids: Список UUID активов, с которых нужно снять тег. Не может быть пустым. Возвращает: JSON с tag_id, количеством снятых тегов и результатами по каждому активу.

Параметры
  • asset_idsstring[]обязательный
  • tag_idstringобязательный
update_album

Обновляет название или описание альбома. Используйте это, чтобы переименовать или изменить описание существующего альбома. Побочный эффект: изменяет метаданные альбома в Immich. Аргументы: album_id: UUID альбома. name: Новое название альбома. Оставьте пустым, чтобы сохранить текущее название. description: Новое описание. Оставьте пустым, чтобы сохранить текущее описание. Возвращает: JSON с обновлённым объектом альбома.

Параметры
  • album_idstringобязательный
  • descriptionstring
  • namestring
update_asset_metadata

Обновляет поля метаданных конкретного актива. Используй, чтобы поправить даты, исправить GPS, добавить описания или изменить статус избранного/рейтинг. Меняются только переданные поля. Побочный эффект: безвозвратно меняет метаданные актива в Immich. Аргументы: asset_id: UUID актива. date_time_original: дата и время в формате ISO 8601 (например, '2019-07-14T15:23:41.000Z'). latitude: широта GPS в десятичных градусах (-90.0 до 90.0). longitude: долгота GPS в десятичных градусах (-180.0 до 180.0). description: произвольное текстовое описание/подпись для актива. is_favorite: устанавливает статус избранного (true/false). rating: рейтинг в звёздах (1-5) или null, чтобы сбросить. Возвращает: JSON с обновлённым объектом актива.

Параметры
  • asset_idstringобязательный
  • date_time_originalstring
  • descriptionstring
  • is_favoriteboolean | null
  • latitudenumber | null
  • longitudenumber | null
  • ratinginteger | null
update_credentials

Обновляет учётные данные подключения к Immich. Используйте это, когда API-ключ был сменён или изменился URL сервера. Проверяет учётные данные перед применением. Побочный эффект: сохраняет новые учётные данные на диск и заменяет активное подключение без перезапуска. Параметры: base_url: Полный URL сервера Immich, включая протокол (например, 'https://photos.example.com'). api_key: Действительный API-ключ Immich (создаётся в Immich > Настройки пользователя > API-ключи). Возвращает: JSON с статусом успеха, количеством фото/видео, подтверждающим доступ, и путём сохранения.

Параметры
  • api_keystringобязательный
  • base_urlstringобязательный
update_person

Обновляет данные профиля человека. Используйте, чтобы давать имена безымянным лицам, устанавливать даты рождения, скрывать лишние лица или менять основную миниатюру. Изменяются только указанные поля. Побочный эффект: обновляет метаданные человека в Immich. Аргументы: person_id: UUID человека. name: Отображаемое имя (например, 'Иван Петров'). Задайте имя для групп безымянных лиц. birth_date: Дата в формате ISO (например, '1990-05-15'). is_hidden: Скрыть из списка «Люди» (удобно для незнакомцев и лишних лиц). is_favorite: Отметить как избранного человека. feature_face_asset_id: UUID ресурса, чей фрагмент лица станет миниатюрой человека. color: Шестнадцатеричный цвет для группировки в интерфейсе. Возвращает: JSON с обновлённым объектом человека.

Параметры
  • birth_datestring
  • colorstring
  • feature_face_asset_idstring
  • is_favoriteboolean | null
  • is_hiddenboolean | null
  • namestring
  • person_idstringобязательный
update_shared_link

Обновляет разрешения или срок действия общей ссылки. Используйте это, чтобы усилить/ослабить доступ или установить дату истечения. Побочный эффект: немедленно изменяет поведение публичной ссылки. Аргументы: link_id: UUID общей ссылки. allow_download: Разрешает посетителям скачивать исходные файлы. show_metadata: Показывает метаданные EXIF посетителям. allow_upload: Разрешает посетителям загружать фотографии в общий альбом. description: Описание ссылки. Пустая строка очищает его. expiry_at: Дата и время истечения в формате ISO 8601. Пустая строка удаляет истечение (ссылка никогда не истекает). Возвращает: JSON с обновлённым объектом общей ссылки.

Параметры
  • allow_downloadboolean | null
  • allow_uploadboolean | null
  • descriptionstring | null
  • expiry_atstring | null
  • link_idstringобязательный
  • show_metadataboolean | null
update_tag

Обновляет цвет тега. Побочный эффект: изменения применяются ко всем ресурсам с этим тегом. API Immich не может переименовать тег (TagUpdateDto содержит только color). Чтобы переименовать, вызовите create_tag с новым именем, затем tag_assets, после чего вызовите delete_tag для старого тега. Аргументы: tag_id: UUID тега. name: не поддерживается Immich: если его передать, вернётся ошибка с объяснением обходного решения. color: новый hex-цвет (например, '#FF5733'). Не указывайте, чтобы сохранить текущий цвет. Возвращает: JSON с обновлённым объектом тега.

Параметры
  • colorstring | null
  • namestring | null
  • tag_idstringобязательный
upload_asset

Загружает локальную фотографию или видеофайл в Immich. Используется для добавления новых медиафайлов в библиотеку. Ограничения: макс. 25 МБ, разрешённые типы: jpg, jpeg, png, heic, mp4, mov, gif, webp. Символические ссылки отклоняются по соображениям безопасности. Исходный файл НЕ изменяется и НЕ удаляется. Побочный эффект: создаёт новый ресурс (asset) в Immich. Аргументы: file_path: Абсолютный путь к локальному файлу (напр. '/tmp/photo.jpg'). Файл должен существовать. album_id: Необязательный UUID альбома, в который нужно сразу добавить загружаемый ресурс. Возвращает: JSON с идентификатором нового ресурса, именем файла, размером в МБ и статусом назначения альбома, если применимо.

Параметры
  • album_idstring
  • file_pathstringобязательный
2.0.13основная
2.0.12
2.0.11
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.12.8
1.12.7
1.12.6
1.12.5
1.12.4
1.12.3
1.12.2
1.12.1
1.12.0
1.11.0
1.10.0
1.9.0
1.8.0
1.7.1
1.7.0
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.0
1.3.0

Выберите клиент, чтобы установить drolosoft/immich-photo-manager:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"drolosoft-immich-photo-manager-3ztc48fvwo\",\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"immich-photo-manager\"],\"env\":{\"IMMICH_BASE_URL\":\"https://your-immich-server.com\",\"IMMICH_API_KEY\":\"your-api-key\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add drolosoft-immich-photo-manager-3ztc48fvwo --env IMMICH_BASE_URL=https://your-immich-server.com --env IMMICH_API_KEY=your-api-key -- uvx immich-photo-manager

Либо через JSON-конфиг:

claude mcp add-json drolosoft-immich-photo-manager-3ztc48fvwo "{\"command\":\"uvx\",\"args\":[\"immich-photo-manager\"],\"env\":{\"IMMICH_BASE_URL\":\"https://your-immich-server.com\",\"IMMICH_API_KEY\":\"your-api-key\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add drolosoft-immich-photo-manager-3ztc48fvwo --env IMMICH_BASE_URL=https://your-immich-server.com --env IMMICH_API_KEY=your-api-key -- uvx immich-photo-manager

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.drolosoft-immich-photo-manager-3ztc48fvwo]
command = "uvx"
args = ["immich-photo-manager"]

[mcp_servers.drolosoft-immich-photo-manager-3ztc48fvwo.env]
IMMICH_BASE_URL = "https://your-immich-server.com"
IMMICH_API_KEY = "your-api-key"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите drolosoft/immich-photo-manager, а в поле команды запуска — строку ниже:
uvx immich-photo-manager

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например drolosoft-immich-photo-manager-3ztc48fvwo.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: drolosoft-immich-photo-manager-3ztc48fvwo
    command: uvx
    args:
      - "immich-photo-manager"
    env:
      IMMICH_BASE_URL: https://your-immich-server.com
      IMMICH_API_KEY: your-api-key
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "drolosoft-immich-photo-manager-3ztc48fvwo": {
      "command": "uvx",
      "args": [
        "immich-photo-manager"
      ],
      "env": {
        "IMMICH_BASE_URL": "https://your-immich-server.com",
        "IMMICH_API_KEY": "your-api-key"
      }
    }
  }
}

Похожие MCP-сервера

Prototypr/feedbagel-mcp

Prototypr/feedbagel-mcp

от prototypr

MCP-сервер для интеграции RSS-лент через Feedbagel. Позволяет агентам искать, подписываться и читать записи, а также управлять вебхуками. Полезен разработчикам, создающим автоматизированные системы...

TypeScript⭐ 3
GeiserX/lynxprompt-mcp

GeiserX/lynxprompt-mcp

от geiserx

LynxPrompt-MCP превращает любой экземпляр LynxPrompt в MCP-сервер, чтобы LLM могли просматривать, искать и управлять AI конфигурациями (blueprint-ами). Полезен разработчикам, автоматизирующим работ...

Go⭐ 2
kestra-io/mcp-server-python

kestra-io/mcp-server-python

официальный

от kestra-io

MCP сервер для интеграции AI-ассистентов с платформой Kestra. Инструмент предоставляет управление потоками, выполнениями и логами. Работает в Docker и локально через uv. Полезен разработчикам для автоматизации процессов.

Python⭐ 34
recursechat/mcp-server-apple-shortcuts

recursechat/mcp-server-apple-shortcuts

от recursechat

MCP сервер для управления Apple Shortcuts на macOS. Позволяет AI-ассистентам (Claude) запускать и автоматизировать быстрые команды и сценарии. Помогает автоматизировать рутинные задачи на Mac без лишних действий.

JavaScript⭐ 351
icoretech/warden-mcp

icoretech/warden-mcp

от icoretech

MCP-сервер для программного управления хранилищем Vaultwarden и Bitwarden через официальный CLI. Позволяет создавать, искать, читать и обновлять элементы, управлять вложениями и коллекциями. Идеаль...

TypeScript⭐ 22
offorte/offorte-mcp-server

offorte/offorte-mcp-server

от offorte

MCP-сервер для связи AI-агентов с платформой Offorte. Позволяет создавать и отправлять коммерческие предложения через API, используя голос или текст. Подходит для автоматизации продаж и быстрой ген...

TypeScript⭐ 5
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин