obrobka-mcp
obrobka
브라우저에서 완전히 실행되는 이미지 처리 — 변환, 크기 조정, 배경 제거. 파일이 기기를 떠나지 않습니다.
우크라이나어 우선, 영어는 그다음. MIT 라이선스.
기능
변환 | PNG · JPEG · WebP · AVIF 출력; HEIC도 읽기 가능 |
정확한 크기 맞춤 | 다섯 가지 모드 — contain, cover, fill, inside, outside |
배경 제거 | 4.4 MB에서 84 MB까지 세 가지 모델 등급 |
외곽선 | 피사체 주위에 색상 테두리, 캔버스가 맞춰 커짐 |
피사체 인식 크롭 | 중앙이 아닌 피사체를 기준으로 프레임 구성 |
업스케일 | Swin2SR ×2 또는 ×4, 메모리를 일정하게 유지하도록 타일링 |
일괄 처리 | 여러 파일을 한 번에, ZIP으로 출력 |
메타데이터 | 파일이 기록하는 정보 확인; 결과물에는 아무것도 남지 않음 |
모든 것이 Web Worker 안에서 WebAssembly로 실행됩니다. 서버도, 업로드도, 계정도 없습니다.
Related MCP server: Agent Helper
관심을 가질 만한 이유
동일한 코어가 브라우저 앱과 MCP 서버를 동시에 구동합니다. packages/core는
DOM도 Node API도 없습니다. RGBA 버퍼에 대한 순수 함수일 뿐이며, 모든 I/O는
포트 뒤에 있습니다. 하나의 runJob()이 브라우저 탭과 AI 에이전트 양쪽을
제공합니다.
npx obrobka-mcp에이전트에게 convert_image, resize_image,
remove_background, smart_crop, upscale_image, read_metadata,
strip_metadata, process_batch라는 여덟 가지 도구를 제공하며,
base64 블롭이 아닌 파일 경로를 대상으로 동작합니다.
모델 선택은 모델 카드가 아닌 측정값에 기반합니다. 모든 후보를 다운로드하고 프로파일링한 뒤 선택했습니다. 수치는 the M2 plan을 참조하세요. 설계를 바꾼 발견이 두 가지 있었습니다:
MODNet과 ormbg는 사람만 학습했습니다. 사람이 아닌 피사체에서는 빈 마스크를 반환하므로 일반적인 기본값으로는 적합하지 않습니다.
BiRefNet_lite는 4.2 GB가 비어 있는 상태에서 1024×1024에서 OOM 킬러에 의해 종료되었습니다. 브라우저 탭의 한도는 더 낮으므로 제외되었습니다.
U²-Netp는 4.4 MB로 범용 성능을 보여주어, 기본 등급이 원래 계획보다 10배 가벼워졌습니다.
휴대폰 사진이 옆으로 나오는데 아무도 알려주지 않았습니다. JPEG과
HEIC는 방향을 픽셀이 아닌 태그로 저장합니다. @jsquash/jpeg는 이를
무시하고, 브라우저의 <img>는 적용합니다. 그래서 "변환 전" 미리보기는
똑바로 보였는데 결과물은 옆으로 나왔습니다. Orientation: 6 태그를
담은 의도적으로 만든 8×4 JPEG로 측정했는데, 태그 유무와 관계없이 8×4로
디코딩되었습니다. 이제 파이프라인은 태그를 읽고 좌표를 다루는 모든
연산 전에 먼저 회전을 적용합니다.
일괄 처리 동시성에는 두 가지 서로 다른 정답이 있습니다. 모델이
없으면 워커 4개가 20개 파일을 3639 ms에서 1186 ms로 줄입니다. 223 MB에
대해 3.1배입니다. 모델이 있으면 같은 풀은 함정입니다. ONNX Runtime은
이미 세션 내부에서 병렬화하므로 U²-Netp 세션 4개는 1.2 GB에 대해 1.8배만
얻고, isnet 세션 2개는 2.2 GB에 도달하여 탭이 감당할 수 있는 한도를
넘습니다. 그래서 풀은 needsModel ? 1 : min(cores − 1, 4)입니다.
ZIP 압축은 형식에 따라 달라지며, 예상과는 다른 방식으로 작동합니다. WebP를 deflate하면 CPU를 10배 쓰고 0.1%만 절약됩니다. 예상대로입니다. 우리 PNG를 deflate하면 15.2% 절약됩니다. 인코더가 빠르게 압축하고 중복을 남겨두기 때문입니다. PNG는 레벨 4, 나머지는 저장만 합니다.
아키텍처
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에 캐시됩니다. EXIF 방향과
GPS를 담은 JPEG을 포함한 나머지 모든 것은 테스트 시점에 바이트 단위로
구성됩니다. 저장소에 있는 사진은 누군가의 좌표가 담긴 누군가의 사진이
될 테니까요.
엔드투엔드 테스트는 프로덕션 _headers를 적용하는 정적 서버를 대상으로
실행됩니다. crossOriginIsolated는 그렇지 않으면 검증할 수 없기
때문입니다:
pnpm --filter @obrobka/web build
pnpm exec playwright test테스트에 관한 참고 사항
분할(segmentation)은 사진이 아닌 절차적으로 생성된 음영 구체를 대상으로 테스트됩니다. 이는 파이프라인(전처리, 추론, 마스크, 합성)이 작동한다는 것을 증명하지만, 머리카락, 유리, 털에 대한 품질에 대해서는 아무것도 말해주지 않습니다. 그 부분은 사이트를 직접 사용해서 판단하세요.
이전 픽스처인 딱딱한 가장자리의 평평한 원은 이 모델들에 대해 분포 외(out-of-distribution)인 것으로 밝혀졌습니다. 같은 모양이 업스케일 여부에 따라서만 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