obrobka-mcp
obrobka
Обработка изображений, которая полностью работает в вашем браузере — конвертация, изменение размера, удаление фона. Файлы никогда не покидают устройство.
Сначала украинский, затем английский. Лицензия MIT.
Что делает
Конвертация | PNG · JPEG · WebP · AVIF на выходе; HEIC также читается на входе |
Подгонка под точный размер | пять режимов — contain, cover, fill, inside, outside |
Удаление фона | три уровня моделей, от 4.4 MB до 84 MB |
Контур | цветная обводка вокруг объекта, холст увеличивается, чтобы вместить |
Кадрирование по объекту | выделяет объект, а не центр |
Увеличение | Swin2SR ×2 или ×4, с разбиением на тайлы, чтобы память оставалась стабильной |
Пакетная обработка | много файлов сразу, результат в ZIP |
Метаданные | просмотр того, что хранит файл; результат не содержит их |
Всё работает как WebAssembly в Web Worker. Нет сервера, нет загрузки и нет аккаунта.
Related MCP server: mcp-image-tools
Почему это может вас заинтересовать
Одно и то же ядро обеспечивает работу браузерного приложения и MCP-сервера. packages/core не использует ни DOM, ни Node API — это чистые функции над RGBA-буферами, а весь ввод-вывод скрыт за портами. Один runJob() обслуживает и вкладку браузера, и ИИ-агента.
npx obrobka-mcpПредоставляет агенту восемь инструментов — convert_image, resize_image, remove_background, smart_crop, upscale_image, read_metadata, strip_metadata и process_batch — работающих с путями к файлам, а не с base64-блобами.
Выбор моделей основан на измерениях, а не на карточках моделей. Каждый кандидат был скачан и профилирован перед выбором — цифры см. в плане M2. Два результата изменили дизайн:
MODNet и ormbg обучены только на людях. На нечеловеческом объекте они возвращают пустую маску, что исключает их как универсальный вариант по умолчанию.
BiRefNet_lite был убит OOM killer'ом на 1024×1024 при 4.2 GB свободной памяти. У вкладки браузера потолок ещё ниже, поэтому он был исключён.
U²-Netp оказался универсальным при 4.4 MB, что делает уровень по умолчанию в десять раз легче, чем планировалось изначально.
Ваши фотографии с телефона выходили повёрнутыми набок, и ничто об этом не сообщало. JPEG и HEIC хранят ориентацию как тег, а не в пикселях. @jsquash/jpeg игнорирует его; браузерный <img> применяет его. Поэтому предпросмотр «до» выглядел вертикальным, а результат выходил набок — это было измерено на специально созданном JPEG 8×4 с тегом Orientation: 6, который декодировался в 8×4 как с тегом, так и без него. Теперь конвейер читает тег и сначала поворачивает изображение, до любой операции, которая рассуждает о координатах.
У пакетного параллелизма есть два разных правильных ответа. Без модели четыре воркера сокращают обработку 20 файлов с 3639 мс до 1186 мс — 3.1× для 223 MB. С моделью тот же пул — ловушка: ONNX Runtime уже распараллеливает внутри сессии, поэтому четыре сессии U²-Netp дают 1.8× для 1.2 GB, а две сессии isnet достигают 2.2 GB, что больше, чем может удержать вкладка. Поэтому пул — needsModel ? 1 : min(cores − 1, 4).
Сжатие ZIP зависит от формата, и не так, как можно было бы предположить. Дефлирование WebP экономит 0.1 % при десятикратном расходе CPU — как и ожидалось. Дефлирование наших PNG экономит 15.2 %, потому что энкодер сжимает быстро и оставляет избыточность. Для PNG — уровень 4, для всего остального — store.
Архитектура
packages/core pure ops over RGBA buffers — no DOM, no Node
ops/ resample · crop · fit · mask · outline · smartCrop
ports/ Codec · Segmenter · Upscaler · Metadata
packages/codecs jSquash, split into browser and Node adapters
packages/models model registry and three preprocessing recipes
packages/onnx-node onnxruntime-node + on-disk cache
packages/onnx-web onnxruntime-web + Cache Storage, WebGPU → WASM
packages/metadata EXIF reading (exifr) and byte-level stripping
packages/heic libheif, isolated — LGPL, loaded on demand
packages/contract-tests one suite, run against both adapters
apps/web Astro + Svelte island, PWA
apps/mcp stdio MCP serverКонтрактные тесты — это суть границы порта: один и тот же набор тестов запускается против onnxruntime-node и onnxruntime-web, поэтому расхождение между ними обнаруживается сразу, а не в продакшене.
Модели
Все модели распространяются под разрешительными лицензиями — проект принимает пожертвования, что делает некоммерческие лицензии моделей неподходящими.
Уровень | Модель | Размер | Лицензия | Охват |
Быстрый (по умолчанию) | 4.4 MB | Apache-2.0 | любой объект | |
Портрет | MODNet fp16 | 12.4 MB | Apache-2.0 | только люди |
Качество | 84.1 MB | MIT | любой объект |
Модели раздаются из R2 и кэшируются в браузере после первого использования.
Разработка
Требуются Node ≥ 22.12 и pnpm 11.
pnpm install
pnpm typecheck
pnpm test
pnpm --filter @obrobka/web devНекоторым тестам нужен настоящий HEIC, который нельзя сгенерировать локально — libheif только читает. Файл один раз загружается из набора соответствия HEIF и кэшируется в ~/.cache/obrobka/fixtures, рядом с моделями. Всё остальное, включая JPEG с EXIF-ориентацией и GPS, собирается байт за байтом во время теста: фотография в репозитории была бы чьей-то фотографией с чьими-то координатами.
Сквозные тесты запускаются против статического сервера, который применяет продакшн-заголовки _headers, потому что иначе crossOriginIsolated невозможно проверить:
pnpm --filter @obrobka/web build
pnpm exec playwright testПримечание о тестах
Сегментация тестируется на процедурно сгенерированной затенённой сфере, а не на фотографии. Это доказывает, что конвейер работает — предобработка, инференс, маска, композитинг — но ничего не говорит о качестве на волосах, стекле или шерсти. Судите об этом, пользуясь сайтом.
Более ранний тестовый образец — плоский круг с жёстким краем — оказался вне распределения для этих моделей: одна и та же форма получала оценку 0.97 или 0.03 в зависимости только от того, была ли она увеличена. Полезно знать, если вы пишете тесты против моделей сегментации.
Лицензия
MIT. Веса моделей имеют собственные лицензии, перечисленные выше.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Image processing for AI agents: resize, convert, compress, crop, and web-ready AI-generated images.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Resize, convert, compress, crop, thumbnail and watermark images from your AI chat.
AI image processing: upscale, resize, crop, compress, convert file format, and generate SEO metadata
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to process files locally — OCR images, extract text from PDFs and DOCX, and describe images using local vision models, all without sending data to external services.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to perform image processing tasks such as sprite sheet splitting, resizing, cropping, and batch operations on local images.MIT
- AlicenseAqualityCmaintenanceProvides AI agents with local file-processing capabilities for token counting, RAG chunking, CSV/JSON conversion, QR generation, and more, while keeping documents private on the user's machine.71MIT
- AlicenseNot gradedqualityAmaintenanceProvides local image understanding for text-only LLMs with tools for image analysis, OCR, object detection, and cropping, all processed on-device.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ThatHunky/obrobka'
If you have feedback or need assistance with the MCP directory API, please join our Discord server