Skip to main content
Glama
ChristopheZhao

Multi-Provider Image Generation Server

MCP Image Generation Server

A Model Context Protocol (MCP) server for image generation using multiple AI providers including Tencent Hunyuan, OpenAI GPT Image, and Doubao APIs.

Version: 0.2.0

Features

🎯 Multi-API Provider Support

  • Tencent Hunyuan: 18 artistic styles with Chinese optimization

  • OpenAI GPT Image: High-quality image generation with English optimization

  • Doubao (ByteDance): Balanced quality and speed with 12 styles

πŸš€ Core Features

  • Generate images from text descriptions

  • Support for multiple image styles across different providers

  • Support for different image resolutions

  • Negative prompts for excluding unwanted elements

  • Intelligent provider selection and management

  • Unified parameter format with provider-specific options

🌐 Transport Modes (New in v0.2.0)

  • stdio Transport: Local IDE integration (Cursor, Windsurf)

  • HTTP Transport: Remote access and enterprise deployment

    • Multi-client concurrent connections

    • Bearer Token authentication

    • Session management

    • RESTful API endpoints

    • Suitable for cloud deployment and remote access

Why HTTP Transport? Version 0.2.0 adds Streamable HTTP support (MCP's official standard as of 2024-11-05) to enable:

  • Remote Access: Claude remote MCP requires public HTTP endpoints (stdio only works locally)

  • Enterprise Deployment: Centralized service deployment with multiple concurrent clients

  • Cloud Native: Compatible with containers, Kubernetes, and load balancers

Note: This uses Streamable HTTP (POST/GET/DELETE), not the deprecated SSE-only approach. SSE is retained for compatibility but Streamable HTTP is the recommended standard.

πŸ”§ Smart Provider Management

  • Automatic detection of available API providers

  • Support for specifying particular providers or automatic selection

  • Unified error handling and retry mechanisms

  • Flexible parameter formats: provider:style and provider:resolution

Installation

UV is a fast, modern Python package manager. Recommended usage:

# Install UV (Windows)
curl -sSf https://astral.sh/uv/install.ps1 | powershell

# Install UV (macOS/Linux)
curl -sSf https://astral.sh/uv/install.sh | bash

# Clone the project and enter the directory
cd path/to/image-gen-mcp-server

# Create a UV virtual environment
uv venv
# Or specify an environment name
# uv venv my-env-name

# Activate the virtual environment (Windows)
.venv\Scripts\activate
# Activate the virtual environment (macOS/Linux)
source .venv/bin/activate

# Install dependencies (recommended)
uv pip install -e .

# Or use the lock file for exact versions
uv pip install -r requirements.lock.txt

Using Traditional pip

If you prefer traditional pip:

# Create a virtual environment
python -m venv venv
# Activate the virtual environment (Windows)
venv\Scripts\activate
# Activate the virtual environment (macOS/Linux)
source venv/bin/activate

# Install dependencies
pip install -e .
# Or use the lock file
pip install -r requirements.lock.txt

Environment Setup

Create a .env file in the project root. See .env.example for all available options.

Basic Configuration

# Image save directory
MCP_IMAGE_SAVE_DIR=./generated_images
# Public base URL for generated image links (HTTP mode, optional but recommended)
# MCP_PUBLIC_BASE_URL=https://mcp.your-domain.com
# Metadata TTL for get_image_data cache (seconds)
# MCP_IMAGE_RECORD_TTL=86400
# Max bytes allowed in get_image_data base64 response
# MCP_GET_IMAGE_DATA_MAX_BYTES=10485760

# API Provider Credentials (configure at least one)
TENCENT_SECRET_ID=your_tencent_secret_id
TENCENT_SECRET_KEY=your_tencent_secret_key
OPENAI_API_KEY=your_openai_api_key
DOUBAO_API_KEY=your_doubao_api_key
# Optional but recommended when multiple providers are configured
# MCP_DEFAULT_PROVIDER=openai

Transport Configuration (Optional)

# Transport mode: stdio (default, for local IDE) or http (for remote access)
MCP_TRANSPORT=stdio

# HTTP transport settings (only needed for HTTP mode)
MCP_HOST=127.0.0.1
MCP_PORT=8000

# Authentication (recommended for HTTP mode)
MCP_AUTH_TOKEN=your-secure-random-token

Usage

πŸ”„ Transport Modes

This server supports two transport modes:

Feature

stdio Transport

HTTP Transport

Use Case

Local IDE integration

Remote access, enterprise deployment

Connection

Subprocess communication

HTTP/HTTPS network

Multi-client

❌ Single client

βœ… Multiple concurrent clients

Remote Access

❌ Not supported

βœ… Supported

Authentication

Not needed

Bearer Token

Deployment

Simple

Cloud-ready

πŸš€ Quick Start

Unified Entry Point (Recommended)

# Method 1: Run as module (recommended)
python -m mcp_image_server

# Method 2: Use entry script
./mcp-server

# Method 3: After pip install
mcp-image-server

The unified server will automatically use the transport mode specified in your .env file:

  • MCP_TRANSPORT=stdio β†’ Local stdio mode for IDE integration

  • MCP_TRANSPORT=http β†’ HTTP server mode for remote access

πŸ“‘ HTTP Transport Mode

For remote access and enterprise deployment, use HTTP transport:

1. Configure HTTP Mode

# Set in .env file
MCP_TRANSPORT=http
MCP_HOST=127.0.0.1
MCP_PORT=8000
MCP_AUTH_TOKEN=your-secure-token  # Optional but recommended

2. Start HTTP Server

python -m mcp_image_server

Server will start on http://127.0.0.1:8000 with endpoints:

  • GET /health - Health check

  • POST /mcp/v1/messages - Send JSON-RPC messages

  • GET /mcp/v1/messages - Subscribe to SSE events

  • DELETE /mcp/v1/messages - Close session

  • GET /images/{filename} - Serve generated image files

generate_image tool returns images[].url for HTTP clients.
If server is exposed through reverse proxy/public domain, set MCP_PUBLIC_BASE_URL to ensure URL is externally reachable. /images/* is intentionally public so browser/front-end image rendering works even when MCP API auth is enabled.

Best-practice agent flow:

  1. Call generate_image to get renderable image + stable image_id/url.

  2. Call get_image_data(image_id=...) only when programmable base64 text is required.

3. Test HTTP Server

# Check server health
curl http://127.0.0.1:8000/health

# Run comprehensive tests
python test_mcp_server.py

# Test with API key for actual image generation
python test_mcp_server.py --with-api

4. Use HTTP Client

# Run example client
python example_http_client.py basic       # Explore server capabilities
python example_http_client.py generate    # Generate images (requires API key)

For detailed HTTP transport documentation, see HTTP_TRANSPORT_GUIDE.md

Screenshot of MCP server running successfully:

MCP Server Running

Connecting to the Server

You can connect from MCP-compatible client(recommand cursor now). The server provides the following features:

Resources

  • styles://list - List all available image styles

  • resolutions://list - List all available image resolutions

Tools

  • generate_image - Generate images based on prompt, style, and resolution (OpenAI also supports background/output_format/output_compression/moderation)

  • get_image_data - Fetch base64 text for a previously generated image by image_id

Prompts

  • image_generation_prompt - Create image generation prompt templates

🎨 Multi-API Usage Examples

Basic Usage

# Auto-select best available provider
generate_image(prompt="A cute cat in a garden")

# Specify a particular provider
generate_image(prompt="A cute cat", provider="openai")
generate_image(prompt="δΈ€εͺε―ηˆ±ηš„ε°ηŒ«", provider="hunyuan")
generate_image(prompt="Cute kitten", provider="doubao")

Advanced Parameter Usage

# Use provider-specific styles and resolutions
generate_image(
    prompt="Cyberpunk city skyline", 
    style="hunyuan:saibopengke", 
    resolution="hunyuan:1024:768"
)

# Mix provider selection with standard parameters
generate_image(
    prompt="Fantasy magical forest",
    provider="doubao",
    style="fantasy",
    resolution="1024x768",
    negative_prompt="low quality, blurry"
)

# OpenAI with high-resolution output
generate_image(
    prompt="Artistic portrait of a musician",
    provider="openai",
    style="artistic",
    resolution="1536x1024"
)

πŸ“Š Supported Providers and Parameters

Tencent Hunyuan

  • Styles: 18 options including riman, xieshi, shuimo, saibopengke, youhua

  • Resolutions: 8 options from 768:768 to 1280:720

  • Specialty: Chinese-optimized, rich artistic styles

OpenAI GPT Image

  • Styles: 12 options including natural, vivid, realistic, artistic, anime

  • Resolutions: 4 options: 1024x1024, 1536x1024, 1024x1536, auto

  • Advanced options: background, output_format, output_compression, moderation (via MCP client)

  • Specialty: High-quality output, English optimization

Doubao (ByteDance)

  • Styles: 12 options including general, anime, chinese_painting, cyberpunk

  • Resolutions: Model-dependent (auto-validated by configured model/fallback model)

  • Specialty: Balanced quality and speed

Cursor Integration

For integration setup details and sample config JSON, see:

Recommended minimum environment variables:

  • MCP_IMAGE_SAVE_DIR

  • Provider credentials you actually use: TENCENT_SECRET_ID + TENCENT_SECRET_KEY, OPENAI_API_KEY, DOUBAO_API_KEY

Optional provider/model controls:

  • OPENAI_BASE_URL, OPENAI_MODEL

  • DOUBAO_ENDPOINT, DOUBAO_MODEL, DOUBAO_FALLBACK_MODEL

  • MCP_DEFAULT_PROVIDER (recommended when multiple providers are enabled)

After changing .env model/default-provider values at runtime, call reload_config.

πŸ§ͺ Testing

The project includes comprehensive testing tools:

Protocol Tests (No API Key Required)

# Test MCP protocol functionality without API keys
python test_mcp_server.py

This tests:

  • βœ… Health check endpoint

  • βœ… MCP initialization handshake

  • βœ… Tools listing

  • βœ… Resources listing and reading

  • βœ… Prompts listing

  • βœ… Session management

Functional Tests (API Key Required)

# Test actual image generation with configured providers
python test_mcp_server.py --with-api

This additionally tests:

  • βœ… Real image generation with OpenAI

  • βœ… Real image generation with Hunyuan

  • βœ… Real image generation with Doubao

Note: At least one API key must be configured in .env to run functional tests.

Troubleshooting

General Issues

  • Ensure environment variables are set correctly

  • Check for spaces in paths; use quotes if needed

  • Ensure the virtual environment is activated (if using one)

  • Try running the server script directly to check for errors

  • Check UV environment with uv --version

HTTP Transport Issues

  • Connection refused: Ensure server is running on correct host/port

  • 401 Unauthorized: Check MCP_AUTH_TOKEN configuration

  • 404 Session not found: Re-initialize connection to get new session ID

  • No provider available: Configure at least one API provider in .env

For detailed troubleshooting, see HTTP_TRANSPORT_GUIDE.md

Front-end Demo

For a front-end integration example, see web-design-demo/. This example demonstrates how to develop a real project using Cursor IDE, where you can generate and manage images directly within your development environment using our MCP tool πŸ› οΈ. No need to switch between different image generation tools or leave your IDE - everything can be done right in your development workflow ✨.

  • screenshot of the demo web web demo screenshot

API Reference

Multi-API Architecture

The project now supports multiple image generation APIs through a unified interface:

Supported APIs

  1. Tencent Hunyuan Image Generation API (Original)

  2. OpenAI GPT Image API (New)

  3. Doubao Image Generation API (New)

Unified MCP Resources

  • providers://list - List all available providers

  • styles://list - List all styles from all providers

  • resolutions://list - List all resolutions from all providers

  • styles://provider/{provider_name} - Get styles for specific provider

  • resolutions://provider/{provider_name} - Get resolutions for specific provider

Enhanced MCP Tools

  • generate_image - Multi-provider image generation with intelligent routing

  • get_image_data - Retrieve base64 text data for a generated image by id

  • reload_config - Reload runtime config/models from env/.env without process restart (safe subset only)

Tencent Hunyuan Image Generation API

The project originally used and continues to support Tencent Hunyuan Image Generation API. Here are the key details:

API Endpoints

  • Domain: hunyuan.tencentcloudapi.com

  • Region: ap-guangzhou (Currently only supports Guangzhou region)

  • Default API Rate Limit: 20 requests/second

  • Concurrent Tasks: Default 1 task at a time

Task Flow

  1. Submit Task: Submit an asynchronous image generation task with text description

  2. Query Task: Get task status and results using task ID

  3. Result URL: Generated image URLs are valid for 1 hour

For detailed API documentation and pricing, please refer to:

OpenAI GPT Image API

API Features

  • High-quality image generation

  • Automatic prompt optimization

  • Multiple style options

  • High-resolution output support

Doubao API (ByteDance)

API Features

  • ByteDance's proprietary image generation model

  • Balanced quality and speed

  • Chinese and English prompt support

  • Multiple artistic styles

RoadMap

  • Version 0.2.0 (Current)

    • βœ… Tencent Hunyuan image generation API

    • βœ… OpenAI GPT Image API integration

    • βœ… Doubao API integration

    • βœ… Multi-provider management system

    • βœ… Intelligent provider selection

    • βœ… Unified parameter interface

    • βœ… HTTP transport with Streamable HTTP protocol

    • βœ… Remote access support

    • βœ… Multi-client concurrent connections

    • βœ… Bearer Token authentication

    • βœ… Session management

    • βœ… Comprehensive testing suite

  • Future Plans

    • Support more mainstream text-to-image model APIs, including:

      • Qwen-Image (Qwen/Wan family)

      • Open-source model API services (for example: FLUX, SDXL/SD3.5)

    • Advanced features:

      • Image editing and modification

      • Batch image generation

      • Style transfer capabilities

      • Custom model fine-tuning support

    • Enhanced MCP integration:

      • Real-time generation progress

      • Image history and management

      • Advanced prompt templates

Community contributions for more model integrations and new features are welcome!

Compatibility

  • stdio: Verified with Cursor and Windsurf.

  • HTTP (Streamable HTTP): Works with MCP clients that support HTTP transport.

  • For other clients/environments, compatibility depends on the client-side MCP implementation.

Contributing

We welcome contributions of all kinds! Here are some ways you can help:

  • πŸ› Report bugs and issues

  • πŸ’‘ Suggest new features or improvements

  • πŸ”§ Submit pull requests

  • 🎨 Add support for more image generation models

Getting Started with Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'feat: add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

Please make sure to update tests as appropriate and follow the existing coding style.

We appreciate your interest in making this project better!

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/ChristopheZhao/image-gen-mcp-server'

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