mcp image extractor

Local 2025-09-01 00:10:50 0
Image And Video Processing @ifmelate/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.


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

Image Extractor MCP server

How it looks in Cursor:

image

Suitable cases: - analyze playwright test results: screenshots

For Cursor or Other Clients

Manual Installation

# 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.

Using .cursor/mcp.json file

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
    }
  }
}

Available Tools

extract_image_from_file

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.

extract_image_from_url

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.

extract_image_from_base64

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.

Example 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.

Docker

Build and run with Docker:

docker build -t mcp-image-extractor .
docker run -p 8000:8000 mcp-image-extractor

License

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"
  }
]