ImageMagick MCP — изменение размера и обрезка изображений для ИИ-агентов
До: изменение размера изображения до точных размеров внутри процесса агента означало вызов команды через shell, ручной расчёт соотношения сторон и обработку крайних случаев с отступами вручную. После: один вызов инструмента — агент указывает размеры и режим, получает готовый файл.

Стек
Задача
ИИ-агентам, работающим с изображениями, часто нужно приводить их к точным размерам в пикселях — миниатюры, обрезка под соцсети, соотношения сторон под конкретную платформу. Наивный подход — собрать shell-команду, но для этого агенту нужно знать флаги CLI ImageMagick, корректно обрабатывать несовпадение соотношений сторон и давать чистый результат в сценариях с размытием, обрезкой и леттербоксингом. Одна неверная опция — и результат искажён или пуст.
Рассмотренные варианты
- Попросить агента напрямую выполнять shell-команды ImageMagick — теоретически работает, но построение корректных конвейеров
convertдля всех трёх режимов соотношения сторон подвержено ошибкам и даёт непоследовательные результаты от сессии к сессии. - Python-скрипт на Pillow — надёжно, но требует окружения Python, добавляет зависимость и всё равно нужно оформлять как инструмент, вызываемый агентом.
- MCP-сервер на Go, оборачивающий ImageMagick — выбранный вариант. Единый самодостаточный бинарник; агент передаёт путь к исходному файлу, путь к результату и размеры; вся логика ImageMagick обрабатывается внутри сервера.
Решение
Минималистичный MCP-сервер на Go предоставляет один узкоспециализированный инструмент: crop_resize_blur_bg. Агент указывает путь к исходному файлу, путь к результату, целевые ширину и высоту и, опционально, режим. Сервер выполняет изменение размера — с корректной обработкой соотношения сторон во всех случаях — и возвращает путь к результату по завершении.
Реализация
Сервер оборачивает ImageMagick через выполнение shell-команд по фиксированному, проверенному шаблону — никаких CLI-строк, собранных пользователем. Три режима покрывают все типовые задачи по компоновке: blur заполняет фон размытой версией исходного изображения (режим по умолчанию, выглядит естественно для любого контента), cover обрезает изображение так, чтобы заполнить кадр без отступов, а contain вписывает изображение в целевую область со сплошными отступами. Радиус размытия настраивается.
Бинарник статически скомпилирован и кросс-собран для macOS, Linux и Windows (amd64 + arm64). Никаких зависимостей времени выполнения, кроме самого ImageMagick. Интегрируется с любым MCP-совместимым хостом через одну запись в конфигурации серверов хоста.
Результат
Изменение размера изображений внутри процесса агента теперь сводится к одному детерминированному вызову инструмента. Агенту больше не нужно знать API ImageMagick — он указывает намерение (размеры, режим), а сервер каждый раз выдаёт корректный результат. Пакетные конвейеры изменения размера последовательно выполняют несколько вызовов без ручного вмешательства.
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта — запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок