mcp image extractor
A Model Context Protocol server that extracts images from URLs or base64 data and converts them into a format suitable for LLM analysis, allowing AI models to process and understand visual content.
A Model Context Protocol server that extracts images from URLs or base64 data and converts them into a format suitable for LLM analysis, allowing AI models to process and understand visual content.
MCP server for extracting and converting images to base64 for LLM analysis.
This MCP server provides tools for AI assistants to: - Extract images from local files - Extract images from URLs - Process base64-encoded images
How it looks in Cursor:
Suitable cases: - analyze playwright test results: screenshots
# Clone and install
git clone https://github.com/ifmelate/mcp-image-extractor.git
cd mcp-image-extractor
npm install
npm run build
npm link
This will make the mcp-image-extractor
command available globally.
For local development or when working in a specific project, you can add a .cursor/mcp.json
file in your project root:
{
"mcpServers": {
"image-extractor": {
"command": "node",
"args": ["/full/path/to/mcp-image-extractor/dist/index.js"],
"disabled": false
}
}
}
Or, if you've installed via npm link:
{
"mcpServers": {
"image-extractor": {
"command": "mcp-image-extractor",
"disabled": false
}
}
}
Important Note for Cursor Users: If you see "Failed to create client" error, try these alternatives:
Option 1: Use direct GitHub installation
git clone https://github.com/ifmelate/mcp-image-extractor.git cd mcp-image-extractor npm install npm run build npm link
Then configure in
.cursor/mcp.json
:{ "mcpServers": { "image-extractor": { "command": "mcp-image-extractor", "disabled": false } } }
Option 2: Clone and run locally
git clone https://github.com/ifmelate/mcp-image-extractor.git cd mcp-image-extractor npm install npm run build
Then configure in
.cursor/mcp.json
:{ "mcpServers": { "image-extractor": { "command": "node", "args": ["/full/path/to/mcp-image-extractor/dist/index.js"], "disabled": false } } }
Extracts an image from a local file and converts it to base64.
Parameters:
- file_path
(required): Path to the local image file
Note: All images are automatically resized to optimal dimensions (max 512x512) for LLM analysis to limit the size of the base64 output and optimize context window usage.
Extracts an image from a URL and converts it to base64.
Parameters:
- url
(required): URL of the image to extract
Note: All images are automatically resized to optimal dimensions (max 512x512) for LLM analysis to limit the size of the base64 output and optimize context window usage.
Processes a base64-encoded image for LLM analysis.
Parameters:
- base64
(required): Base64-encoded image data
- mime_type
(optional, default: "image/png"): MIME type of the image
Note: All images are automatically resized to optimal dimensions (max 512x512) for LLM analysis to limit the size of the base64 output and optimize context window usage.
Here's an example of how to use the tools from Claude:
Please extract the image from this local file: images/photo.jpg
Claude will automatically use the extract_image_from_file
tool to load and analyze the image content.
Please extract the image from this URL: https://example.com/image.jpg
Claude will automatically use the extract_image_from_url
tool to fetch and analyze the image content.
Build and run with Docker:
docker build -t mcp-image-extractor .
docker run -p 8000:8000 mcp-image-extractor
MIT
[
{
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"file_path": {
"description": "Path to the image file to analyze (supports screenshots, photos, diagrams, and documents in PNG, JPG, GIF, WebP formats)",
"type": "string"
},
"max_height": {
"default": 512,
"description": "For backward compatibility only. Default maximum height is now 512px",
"type": "number"
},
"max_width": {
"default": 512,
"description": "For backward compatibility only. Default maximum width is now 512px",
"type": "number"
},
"resize": {
"default": true,
"description": "For backward compatibility only. Images are always automatically resized to optimal dimensions (max 512x512) for LLM analysis",
"type": "boolean"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "extract_image_from_file"
},
{
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"max_height": {
"default": 512,
"description": "For backward compatibility only. Default maximum height is now 512px",
"type": "number"
},
"max_width": {
"default": 512,
"description": "For backward compatibility only. Default maximum width is now 512px",
"type": "number"
},
"resize": {
"default": true,
"description": "For backward compatibility only. Images are always automatically resized to optimal dimensions (max 512x512) for LLM analysis",
"type": "boolean"
},
"url": {
"description": "URL of the image to analyze for visual content, text extraction, or object recognition (supports web screenshots, photos, diagrams)",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "extract_image_from_url"
},
{
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"base64": {
"description": "Base64-encoded image data to analyze (useful for screenshots, images from clipboard, or dynamically generated visuals)",
"type": "string"
},
"max_height": {
"default": 512,
"description": "For backward compatibility only. Default maximum height is now 512px",
"type": "number"
},
"max_width": {
"default": 512,
"description": "For backward compatibility only. Default maximum width is now 512px",
"type": "number"
},
"mime_type": {
"default": "image/png",
"description": "MIME type of the image (e.g., image/png, image/jpeg)",
"type": "string"
},
"resize": {
"default": true,
"description": "For backward compatibility only. Images are always automatically resized to optimal dimensions (max 512x512) for LLM analysis",
"type": "boolean"
}
},
"required": [
"base64"
],
"type": "object"
},
"name": "extract_image_from_base64"
}
]