Skip to main content
Glama

MCP Server - Image

A Model Context Protocol (MCP) server that provides tools for fetching and processing images from URLs, local file paths, and numpy arrays. The server includes a tool called fetch_images that returns images as base64-encoded strings along with their MIME types.

Support Us

If you find this project helpful and would like to support future projects, consider buying us a coffee! Your support helps us continue building innovative AI solutions.

Your contributions go a long way in fueling our passion for creating intelligent and user-friendly applications.

Related MCP server: Image Toolkit MCP Server

Table of Contents

Features

  • Fetch images from URLs (http/https)

  • Load images from local file paths

  • Specialized handling for large local images

  • Automatic image compression for large images (>1MB)

  • Parallel processing of multiple images

  • Proper MIME type mapping for different file extensions

  • Comprehensive error handling and logging

Prerequisites

  • Python 3.10+

  • uv package manager (recommended)

Installation

  1. Clone this repository

  2. Create and activate a virtual environment using uv:

uv venv
# On Windows:
.venv\Scripts\activate
# On Unix/MacOS:
source .venv/bin/activate
  1. Install dependencies using uv:

uv pip install -r requirements.txt

Running the Server

There are two ways to run the MCP server:

1. Direct Method

To start the MCP server directly:

uv run python mcp_image.py

2. Configure for Windsurf/Cursor

Windsurf

To add this MCP server to Windsurf:

  1. Edit the configuration file at ~/.codeium/windsurf/mcp_config.json

  2. Add the following configuration:

{
  "mcpServers": {
    "image": {
      "command": "uv",
        "args": ["--directory", "/path/to/mcp-image", "run", "mcp_image.py"]
    }
  }
}

Cursor

To add this MCP server to Cursor:

  1. Open Cursor and go to Settings (Navbar → Cursor Settings)

  2. Navigate to FeaturesMCP Servers

  3. Click on + Add New MCP Server

  4. Enter the following configuration:

{
  "mcpServers": {
    "image": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-image", "run", "mcp_image.py"]
    }
  }
}

Available Tools

The server provides the following tools:

fetch_images: Fetch and process images from URLs or local file paths Parameters: image_sources: List of URLs or file paths to images Returns: List of processed images with base64 encoding and MIME types

Usage Examples

You can now use commands like:

  • "Fetch these images: [list of URLs or file paths]"

  • "Load and process this local image: [file_path]"

Examples

# URL-only test
[
  "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Chocolate_%28blue_background%29.jpg/400px-Chocolate_%28blue_background%29.jpg",
  "https://imgs.search.brave.com/Sz7BdlhBoOmU4wZjnUkvgestdwmzOzrfc3GsiMr27Ik/rs:fit:860:0:0:0/g:ce/aHR0cHM6Ly9pbWdj/ZG4uc3RhYmxlZGlm/ZnVzaW9ud2ViLmNv/bS8yMDI0LzEwLzE4/LzJmOTY3NTViLTM0/YmQtNDczNi1iNDRh/LWJlMTVmNGM5MDBm/My5qcGc",
  "https://shigacare.fukushi.shiga.jp/mumeixxx/img/main.png"
]

# Mixed URL and local file test
[
  "https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Chocolate_%28blue_background%29.jpg/400px-Chocolate_%28blue_background%29.jpg",
  "C:\\Users\\username\\Pictures\\image1.jpg",
  "https://imgs.search.brave.com/Sz7BdlhBoOmU4wZjnUkvgestdwmzOzrfc3GsiMr27Ik/rs:fit:860:0:0:0/g:ce/aHR0cHM6Ly9pbWdj/ZG4uc3RhYmxlZGlm/ZnVzaW9ud2ViLmNv/bS8yMDI0LzEwLzE4/LzJmOTY3NTViLTM0/YmQtNDczNi1iNDRh/LWJlMTVmNGM5MDBm/My5qcGc",
  "C:\\Users\\username\\Pictures\\image2.jpg"
]

Debugging

If you encounter any issues:

  1. Check that all dependencies are installed correctly

  2. Verify that the server is running and listening for connections

  3. For local image loading issues, ensure the file paths are correct and accessible

  4. For "Unsupported image type" errors, verify the content type handling

  5. Look for any error messages in the server output

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

1 tool
fetch_imagesA
Fetch and process images from URLs or local file paths, returning them in a format suitable for LLMs.

This tool accepts a list of image sources which can be either:
1. URLs pointing to web-hosted images (http:// or https://)
2. Local file paths pointing to images stored on the local filesystem (e.g., "C:/images/photo1.jpg")

For a single image, provide a one-element list. The function will process images in parallel
when multiple sources are provided. Images that exceed the size limit (1MB) will be automatically 
compressed while maintaining aspect ratio and reasonable quality.

Args:
    image_sources: A list of image URLs or local file paths. For a single image, provide a one-element list.
    
Returns:
    A list of Image objects or None values (if processing failed) in the same order as the input sources.
ParametersJSON Schema
NameRequiredDescriptionDefault
image_sourcesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and discloses key behavioral traits: parallel processing for multiple images, automatic compression for images over 1MB with aspect ratio and quality preservation, and failure handling (returns None for failed processing). It doesn't cover aspects like rate limits or authentication needs, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by detailed input specifications, processing behavior, and return values. Every sentence adds value without redundancy, and it's appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is largely complete: it covers purpose, input semantics, processing behavior, and return format. However, it lacks details on the 'Image objects' structure (e.g., format, metadata) and any error specifics, which would enhance completeness for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate fully. It clearly explains the single parameter 'image_sources' as a list of URLs or file paths, specifies format examples (http/https URLs, local paths like 'C:/images/photo1.jpg'), and clarifies handling for single images (one-element list). This adds comprehensive meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('fetch and process images') and resources ('from URLs or local file paths'), and distinguishes its output format ('suitable for LLMs'). With no sibling tools, it fully defines its scope without redundancy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying input types (URLs or file paths) and handling of single vs. multiple images, but lacks explicit guidance on when to use this tool versus alternatives (e.g., other image tools or direct file handling). With no siblings, this is less critical but still a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'fetch_images' has a clearly defined and distinct purpose that cannot be confused with any other tool in this server.

Naming Consistency5/5

The single tool name 'fetch_images' follows a clear verb_noun pattern, and with only one tool, there is perfect consistency. No naming conventions can conflict when only one tool exists.

Tool Count2/5

A single tool is generally too few for most server purposes, creating a thin surface that limits functionality. While this tool handles image fetching and processing well, the server's scope as an 'Image Server' suggests potential gaps that would require additional tools for comprehensive image operations.

Completeness2/5

For an 'Image Server' domain, having only a fetch/processing tool leaves significant gaps. There are no tools for image manipulation (resize, crop, filter), analysis (object detection, metadata extraction), or management (list, delete, organize images), making the surface severely incomplete for typical image-related workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/IA-Programming/mcp-images'

If you have feedback or need assistance with the MCP directory API, please join our Discord server