MCP Image Generation Server
Project description
Image Generation MCP Server
A FastMCP server for generating and editing images using OpenAI's gpt-image-1 and Azure FLUX.1-Kontext-pro models. This component is part of the AppKit platform and is designed to be integrated into the main application.
Features
- Text-to-Image Generation: Create images from natural language prompts using multiple AI models
- Image Editing & Inpainting: Edit existing images with text prompts and optional masks (gpt-image-1)
- Multiple Formats: Output as PNG, JPEG, or WEBP with customizable quality
- Prompt Enhancement: Auto-refine prompts via LLM for better results
Configuration
This component uses AppKit's configuration system (appkit_commons) and is configured via MCPImageGeneratorConfig. The settings are loaded from configuration/config.yaml or environment variables mapped by appkit_commons.
Settings
| Setting | Description | Default |
|---|---|---|
backend_server |
URL of the backend server (for retrieving images) | http://localhost:8000 |
max_file_size_mb |
Maximum allowed file size for input images | 10 |
max_images_to_keep |
Storage retention limit for generated images | 50 |
generator |
Active image generator backend (azure or google) |
azure |
azure_api_key |
Azure OpenAI API key | None |
azure_base_url |
Azure OpenAI endpoint URL | None |
azure_prompt_optimizer |
LLM model used for prompt enhancement (Azure) | gpt-5-mini |
azure_image_model |
Image generation model identifier (Azure) | FLUX.1-Kontext-pro |
google_api_key |
Google AI API key | None |
google_prompt_optimizer |
LLM model used for prompt enhancement (Google) | gemini-2.0-flash-001 |
google_image_model |
Image generation model identifier (Google) | imagen-4.0-generate-preview-06-06 |
auth_tokens |
List of MCP tokens and scopes for authentication | [] |
Integration
This module is designed to be integrated into the main AppKit application rather than running standalone. The create_image_mcp_server function returns a configured FastMCP instance which is mounted by the main application.
Usage in AppKit
In app/app.py, the server is initialized effectively as follows:
from appkit_commons.registry import service_registry
from appkit_user.authentication.services import get_verifier
from appkit_mcp_image.server import create_image_mcp_server, init_generators
from appkit_mcp_image.configuration import MCPImageGeneratorConfig
# ... inside initialization ...
image_mcp_config = service_registry().get(MCPImageGeneratorConfig)
_generators = init_generators(image_mcp_config)
# Create and mount the MCP server
servers["/image"] = create_image_mcp_server(
_generators[image_mcp_config.generator],
auth=get_verifier(),
)
Tools & API
generate_image
Create images from text descriptions.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt |
string | required | Image description (max 32,000 chars) |
size |
string | 1024x1024 |
Dimensions: 1024x1024, 1536x1024, 1024x1536, or auto |
output_format |
string | jpeg |
Output format: png, jpeg, or webp |
seed |
integer | 0 |
Random seed for reproducibility (0 = random) |
enhance_prompt |
boolean | true |
Auto-enhance prompt via LLM |
background |
string | auto |
Background: transparent, opaque, or auto |
Example:
generate_image(
prompt="A serene mountain landscape at sunset with golden light reflecting off a lake",
size="1536x1024",
output_format="png",
enhance_prompt=True
)
edit_image
Edit existing images with text prompts and optional masks for inpainting.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt |
string | required | Description of desired edits (max 32,000 chars) |
image_paths |
array | required | Image URLs, file paths, or base64 data URLs (max 16) |
mask_path |
string | optional | Optional mask image for inpainting (transparent areas indicate edit zones) |
size |
string | auto |
Output dimensions |
output_format |
string | jpeg |
Output format: png, jpeg, or webp |
background |
string | auto |
Background setting |
Example:
edit_image(
prompt="Add a vibrant rainbow across the sky",
image_paths=["https://example.com/landscape.jpg"],
mask_path="https://example.com/sky_mask.png",
output_format="png"
)
Image Input Formats
Supported input methods for image_paths parameter:
- HTTP/HTTPS URLs:
https://example.com/image.jpg - Local file paths:
/path/to/image.png - Base64 data URLs:
data:image/png;base64,iVBORw0KG...
Inpainting with Masks
For precise control over edits, use mask images:
- Create a PNG image with alpha transparency
- Transparent areas (alpha=0) mark regions to edit
- Opaque areas remain unchanged
- Mask dimensions must match the input image
License
This project is licensed under the MIT License - see LICENSE.md for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file appkit_mcp_image-1.9.4.tar.gz.
File metadata
- Download URL: appkit_mcp_image-1.9.4.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c54add5e459b71139597b878b9270615f55a320d7d4f997d5764246c7be3b958
|
|
| MD5 |
cf88dfe665f4a454021de4f438cf440b
|
|
| BLAKE2b-256 |
22cd780f7afed17cbbc7f8b00c00a130fa039dced769c2327827d8da79d91266
|
File details
Details for the file appkit_mcp_image-1.9.4-py3-none-any.whl.
File metadata
- Download URL: appkit_mcp_image-1.9.4-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61e7867b8806e2d164932da1aa8f51e9f103a638ba07b91175b27e75b6ba0243
|
|
| MD5 |
dc7e989cf0d8dffcb25c3ee51a5790eb
|
|
| BLAKE2b-256 |
210885414ab30f7c0dc48c32df09b204965996d268439339a132ea4a984729fe
|