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: Agent Helper
Почему это может вас заинтересовать
Одно и то же ядро обеспечивает работу браузерного приложения и 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. Веса моделей имеют собственные лицензии, перечисленные выше.
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 Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with tools to convert images between formats and inspect image metadata, enabling seamless image processing within agent workflows.83MIT
- 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
- AlicenseAqualityAmaintenanceEnables text-only coding agents to analyze local images using a dedicated vision provider, returning markdown and structured JSON evidence for screenshots, diagrams, UI mockups, and error captures.1114711MIT
Related MCP Connectors
AI image processing: upscale, resize, crop, compress, convert file format, and generate SEO metadata
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
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