Everything is resized to at most 512x512 before encoding, which is the whole design: base64 images are expensive in context and this keeps one screenshot from taking the budget. When the detail matters more than the size, raise max_width and max_height on the call.
A small server that converts images to base64 the model can read. Three tools, one per source: a path on disk, an HTTP or HTTPS URL, or data you already hold.
- extract_image_from_file for a screenshot, photo, diagram or scanned document sitting on disk
- extract_image_from_url for anything reachable over HTTP or HTTPS
- extract_image_from_base64 for clipboard grabs and generated images, with mime_type defaulting to image/png
- Automatic downscaling to at most 512x512 before encoding, so one image does not swallow the context window
- Resize, max_width and max_height on every tool when the default bounds are wrong for the picture
Nothing to authorize — no account and no key. Run it with npx -y mcp-image-extractor. Three optional environment variables tune it: MAX_IMAGE_SIZE caps the bytes accepted (default 10485760, which is 10MB), ALLOWED_DOMAINS restricts which hosts URL extraction may fetch from, and PORT sets the port (default 8000) for the alternative of starting the server yourself and pointing a client at http://localhost:8000.
One command — npx -y mcp-image-extractor
