Skip to main content
Glama

Azure AI Image Editor MCP Server

by satomic

Azure Image Editor MCP Server

δΈ­ζ–‡ | English

This is an MCP (Model Context Protocol) server that supports Azure AI Foundry image generation and editing capabilities.

Features

  1. Text-to-Image Generation - Generate high-quality images from text descriptions using Azure AI Foundry models

  2. Image Editing - Edit and modify existing images

  3. Configurable Models - Support for multiple Azure AI models via environment variables

Demo

Click πŸ‘‡ to go to the demo on YouTube

Using GitHub Copilot & Azure AI Foundry with FLUX 1 Kontext Full Walkthrough for Image Generation Demo

Project Structure

azure-image-editor/ β”œβ”€β”€ .venv/ # Python virtual environment β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ azure_image_client.py # Azure API client β”‚ β”œβ”€β”€ mcp_server.py # STDIO MCP server β”‚ └── mcp_server_http.py # HTTP/JSON-RPC MCP server β”œβ”€β”€ tests/ # Test files β”œβ”€β”€ logs/ # Server logs β”œβ”€β”€ tmp/ # Temporary files β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ .env # Environment configuration β”œβ”€β”€ .env.example # Environment configuration template └── README.md # Project documentation

Prerequisites

⚠️ Important: Before using this MCP server, you must deploy the required model in your Azure AI Foundry environment.

Azure AI Foundry Model Deployment

  1. Access Azure AI Foundry: Go to Azure AI Foundry

  2. Deploy the model: Deploy flux.1-kontext-pro (or your preferred model) in your Azure AI Foundry workspace

  3. Get deployment details: Note down your:

    • Base URL (endpoint)

    • API key

    • Deployment name

    • Model name

Without proper model deployment, the MCP server will not function correctly.

Installation and Setup

  1. Clone and setup environment:

git clone https://github.com/satomic/Azure-AI-Image-Editor-MCP.git cd azure-image-editor python -m venv .venv source .venv/bin/activate # Linux/Mac # or .venv\Scripts\activate # Windows pip install -r requirements.txt

Server Modes

This project supports two MCP server modes:

1. STDIO Mode (Default)

Communicates via standard input/output. Suitable for VSCode integration.

2. HTTP/JSON-RPC Mode

Communicates via HTTP with JSON-RPC 2.0 protocol. Suitable for web applications and remote access.

Configuration

Configure STDIO Mode (VSCode MCP)

Add the following to your VSCode MCP configuration:

{ "servers": { "azure-image-editor": { "command": "/full/path/to/.venv/bin/python", "args": ["/full/path/to/azure-image-editor/src/mcp_server.py"], "env": { "AZURE_BASE_URL": "https://your-endpoint.services.ai.azure.com", // deployment endpoint "AZURE_API_KEY": "${input:azure-api-key}", "AZURE_DEPLOYMENT_NAME": "FLUX.1-Kontext-pro", // The name you gave your deployment "AZURE_MODEL": "flux.1-kontext-pro", // Default model "AZURE_API_VERSION": "2025-04-01-preview" // Default API version } } }, "inputs": [ { "id": "azure-api-key", "type": "promptString", "description": "Enter your Azure API Key", "password": "true" } ] }

Important: Replace /full/path/to/ with the actual absolute path to this project directory.

Configure HTTP/JSON-RPC Mode

Option 1: Run directly with environment variables

# Activate virtual environment source .venv/bin/activate # Linux/Mac # or .venv\Scripts\activate # Windows # Set environment variables export AZURE_BASE_URL="https://your-endpoint.services.ai.azure.com" export AZURE_API_KEY="your-api-key" export AZURE_DEPLOYMENT_NAME="FLUX.1-Kontext-pro" export AZURE_MODEL="flux.1-kontext-pro" export AZURE_API_VERSION="2025-04-01-preview" # Optional: Configure server host and port (defaults to 127.0.0.1:8000) export MCP_SERVER_HOST="0.0.0.0" # Listen on all interfaces export MCP_SERVER_PORT="8000" # Server port # Start the HTTP server python src/mcp_server_http.py

Option 2: Use .env file

Create a .env file in the project root:

AZURE_BASE_URL=https://your-endpoint.services.ai.azure.com AZURE_API_KEY=your-api-key AZURE_DEPLOYMENT_NAME=FLUX.1-Kontext-pro AZURE_MODEL=flux.1-kontext-pro AZURE_API_VERSION=2025-04-01-preview # Optional server configuration MCP_SERVER_HOST=127.0.0.1 MCP_SERVER_PORT=8000 DEFAULT_IMAGE_SIZE=1024x1024

Then start the server:

source .venv/bin/activate python src/mcp_server_http.py

Server Endpoints

When the HTTP server is running, the following endpoints are available:

  • JSON-RPC Endpoint: http://127.0.0.1:8000/ - Main JSON-RPC 2.0 endpoint (POST)

  • Health Check: http://127.0.0.1:8000/health - Server health status (GET)

Connecting to HTTP Server

Important for HTTP Mode: When using HTTP mode, even if you provide an output_path parameter, the server will:

  1. Save the image to the specified path on the server

  2. Also return the base64-encoded image data to the client

This allows the MCP client to receive the image data and save it locally without needing additional file transfer.

Using VSCode MCP Client:

{ "servers": { "azure-image-editor-http": { "type": "http", "url": "http://127.0.0.1:8000" } } }

Using curl:

# List available tools curl -X POST http://127.0.0.1:8000/ \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' # Call generate_image tool curl -X POST http://127.0.0.1:8000/ \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "generate_image", "arguments": { "prompt": "A beautiful sunset over mountains", "size": "1024x1024", "output_path": "./images/sunset.png" } } }'

Available MCP Tools

1. generate_image

Generate images from text prompts

Parameters:

  • prompt (required): English text description for image generation

  • size (optional): Image size - "1024x1024", "1792x1024", "1024x1792", default: "1024x1024"

  • output_path (optional): Output file path, returns base64 encoded image if not provided

Example:

{ "name": "generate_image", "arguments": { "prompt": "A beautiful sunset over mountains", "size": "1024x1024", "output_path": "/path/to/output/image.png" } }

2. edit_image

Edit existing images with intelligent dimension preservation

Parameters:

STDIO mode:

  • image_path (required): Path to the image file to edit

  • prompt (required): English text description of how to edit the image

  • size (optional): Output image size, uses original dimensions if not specified

  • output_path (optional): Output file path

HTTP mode:

  • image_data_base64 (required): Base64 encoded image data

    • Supports raw base64 format: iVBORw0KGgoAAAANS...

    • Supports Data URL format: data:image/png;base64,iVBORw0KGgoAAAANS...

  • prompt (required): English text description of how to edit the image

  • size (optional): Output image size, uses original dimensions if not specified

  • output_path (optional): Output file path (server-side), image data always returned to client

Example (STDIO mode):

{ "name": "edit_image", "arguments": { "image_path": "/path/to/input/image.png", "prompt": "Make this black and white", "output_path": "/path/to/output/edited_image.png" } }

Example (HTTP mode):

{ "name": "edit_image", "arguments": { "image_data_base64": "iVBORw0KGgoAAAANS...", "prompt": "Make this black and white", "output_path": "/tmp/edited_image.png" } }

Or using Data URL format:

{ "name": "edit_image", "arguments": { "image_data_base64": "data:image/png;base64,iVBORw0KGgoAAAANS...", "prompt": "Make this black and white", "output_path": "/tmp/edited_image.png" } }

Technical Specifications

  • Python version: 3.8+

  • Main dependencies:

    • mcp: MCP protocol support

    • httpx: HTTP client with timeout handling

    • pillow: Image processing and dimension detection

    • aiofiles: Async file operations

    • pydantic: Data validation

    • python-dotenv: Environment variable management

    • starlette: ASGI framework for HTTP server (HTTP mode only)

    • uvicorn: ASGI server (HTTP mode only)

  • Azure AI Foundry:

    • Default model: flux.1-kontext-pro (configurable)

    • Default API version: 2025-04-01-preview (configurable)

    • Supported image sizes: 1024x1024, 1792x1024, 1024x1792

    • Timeout: 5 minutes per request

Troubleshooting

  1. Timeout Errors: Image processing has 5-minute timeout, check network connectivity

  2. API Errors: Verify Azure credentials and endpoint URL

  3. Dependency Issues: Ensure virtual environment is activated and dependencies installed

  4. Server Connection Issues: Verify VSCode MCP configuration path is correct

License

MIT License

-
security - not tested
F
license - not found
-
quality - not tested

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    A server that integrates Flux's advanced image generation and manipulation features into AI coding assistants, enabling seamless text-to-image and image control workflows in IDEs like Cursor and Windsurf.
    Last updated -
    4
    21
    MIT License
  • -
    security
    A
    license
    -
    quality
    A server that provides AI-powered image generation, modification, and processing capabilities through the Model Context Protocol, leveraging Google Gemini models and other image services.
    Last updated -
    15
    MIT License
    • Linux
    • Apple
  • -
    security
    A
    license
    -
    quality
    Provides tools for generating and editing images using OpenAI's gpt-image-1 model via an MCP interface, enabling AI assistants to create and modify images based on text prompts.
    Last updated -
    16
    Apache 2.0
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that enables generating and editing images using OpenAI's gpt-image-1 model, allowing AI assistants to create and modify images from text prompts.
    Last updated -
    2
    33
    17
    MIT License
    • Linux
    • Apple

View all related MCP servers

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/satomic/Azure-AI-Image-Editor-MCP'

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