It handles the parts that otherwise break: several images at once, local files and remote URLs in the same request, and oversized files compressed before they arrive rather than after they fail.
A fetch-and-prepare step for images. It takes a mixed list of web URLs and local file paths, retrieves them in parallel, compresses the large ones, and hands each back as a base64 string with its MIME type, so the model receives something it can actually look at.
- `fetch_images` — takes `image_sources`, a list of URLs or file paths, and returns each processed image as base64 with its MIME type
- Both sources in one call: http and https URLs alongside local paths, mixed freely in the same list
- Automatic compression for images larger than 1MB, and specialised handling for large local files
- Parallel processing across the list, and MIME types mapped from the file extension
Python 3.10+ and the uv package manager. Create a virtual environment, `uv pip install -r requirements.txt`, and point your client at `uv --directory /path/to/mcp-image run mcp_image.py`. When a fetch fails, the README's checklist is the right order: confirm the dependencies installed, then that local paths are correct and readable, then whether the content type is one the server maps.
