Image Generation MCP Server
MCP server for AI image generation via OpenAI, Stable Diffusion (SD WebUI), or placeholders.
The record the registry holds
There is no address to call. This one is a package you install and run yourself, wherever your assistant runs.
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.pvliesdonk/image-generation-mcp",
"description": "MCP server for AI image generation via OpenAI, Stable Diffusion (SD WebUI), or placeholders.",
"title": "Image Generation MCP Server",
"repository": {
"url": "https://github.com/pvliesdonk/image-generation-mcp",
"source": "github"
},
"version": "1.12.0",
"websiteUrl": "https://pvliesdonk.github.io/image-generation-mcp/",
"packages": [
{
"registryType": "pypi",
"identifier": "image-generation-mcp",
"version": "1.12.0",
"runtimeHint": "uvx",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "When true, write-tagged tools (generate_image) are hidden. Set to false to enable image generation.",
"format": "boolean",
"default": "true",
"name": "IMAGE_GENERATION_MCP_READ_ONLY"
},
{
"description": "Directory for saved generated images. Created automatically on first use.",
"format": "filepath",
"name": "IMAGE_GENERATION_MCP_SCRATCH_DIR"
},
{
"description": "Default provider selection: auto (keyword-based), openai, sd_webui, or placeholder. Deprecated alias 'a1111' is also accepted.",
"default": "auto",
"name": "IMAGE_GENERATION_MCP_DEFAULT_PROVIDER"
},
{
"description": "OpenAI API key. Enables the OpenAI provider (gpt-image-1, dall-e-3) when set.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OPENAI_API_KEY"
},
{
"description": "SD WebUI base URL (e.g. http://localhost:7860). Enables the SD WebUI provider when set.",
"name": "IMAGE_GENERATION_MCP_SD_WEBUI_HOST"
},
{
"description": "SD WebUI checkpoint name for model-aware preset detection (SD 1.5 vs SDXL vs Lightning vs Flux).",
"name": "IMAGE_GENERATION_MCP_SD_WEBUI_MODEL"
},
{
"description": "Deprecated — use SD_WEBUI_HOST instead. Accepted as fallback.",
"name": "IMAGE_GENERATION_MCP_A1111_HOST"
},
{
"description": "Deprecated — use SD_WEBUI_MODEL instead. Accepted as fallback.",
"name": "IMAGE_GENERATION_MCP_A1111_MODEL"
},
{
"description": "Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG.",
"default": "INFO",
"choices": [
"DEBUG",
"INFO",
"WARNING",
"ERROR"
],
"name": "FASTMCP_LOG_LEVEL"
},
{
"description": "Server name shown to MCP clients in the initialization response.",
"default": "image-generation-mcp",
"name": "IMAGE_GENERATION_MCP_SERVER_NAME"
},
{
"description": "System-level instructions injected into LLM context.",
"name": "IMAGE_GENERATION_MCP_INSTRUCTIONS"
},
{
"description": "Static bearer token for HTTP authentication.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_BEARER_TOKEN"
},
{
"description": "OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.",
"name": "IMAGE_GENERATION_MCP_AUTH_MODE"
},
{
"description": "Public base URL for OIDC redirects (e.g. https://mcp.example.com). Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_BASE_URL"
},
{
"description": "OIDC discovery endpoint URL. Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_OIDC_CONFIG_URL"
},
{
"description": "OIDC client ID. Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_OIDC_CLIENT_ID"
},
{
"description": "OIDC client secret. Required for OIDC.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET"
},
{
"description": "Signing key for OIDC session JWTs (critical on Linux/Docker).",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY"
},
{
"description": "Expected JWT audience claim. Leave unset if your provider does not set one.",
"name": "IMAGE_GENERATION_MCP_OIDC_AUDIENCE"
},
{
"description": "Comma-separated required OIDC scopes (default: openid for oidc-proxy mode, none for remote mode).",
"name": "IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES"
},
{
"description": "Verify access token JWT instead of id_token.",
"format": "boolean",
"default": "false",
"name": "IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN"
}
]
},
{
"registryType": "oci",
"identifier": "ghcr.io/pvliesdonk/image-generation-mcp:v1.12.0",
"transport": {
"type": "streamable-http",
"url": "http://localhost:{--port}/mcp"
},
"packageArguments": [
{
"description": "Port for the HTTP transport",
"default": "8000",
"type": "named",
"name": "--port"
}
],
"environmentVariables": [
{
"description": "When true, write-tagged tools (generate_image) are hidden. Set to false to enable image generation.",
"format": "boolean",
"default": "true",
"name": "IMAGE_GENERATION_MCP_READ_ONLY"
},
{
"description": "Directory for saved generated images inside the container.",
"format": "filepath",
"default": "/data/scratch",
"name": "IMAGE_GENERATION_MCP_SCRATCH_DIR"
},
{
"description": "Default provider selection: auto (keyword-based), openai, sd_webui, or placeholder. Deprecated alias 'a1111' is also accepted.",
"default": "auto",
"name": "IMAGE_GENERATION_MCP_DEFAULT_PROVIDER"
},
{
"description": "OpenAI API key. Enables the OpenAI provider (gpt-image-1, dall-e-3) when set.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OPENAI_API_KEY"
},
{
"description": "SD WebUI base URL (e.g. http://localhost:7860). Enables the SD WebUI provider when set.",
"name": "IMAGE_GENERATION_MCP_SD_WEBUI_HOST"
},
{
"description": "SD WebUI checkpoint name for model-aware preset detection (SD 1.5 vs SDXL vs Lightning vs Flux).",
"name": "IMAGE_GENERATION_MCP_SD_WEBUI_MODEL"
},
{
"description": "Deprecated — use SD_WEBUI_HOST instead. Accepted as fallback.",
"name": "IMAGE_GENERATION_MCP_A1111_HOST"
},
{
"description": "Deprecated — use SD_WEBUI_MODEL instead. Accepted as fallback.",
"name": "IMAGE_GENERATION_MCP_A1111_MODEL"
},
{
"description": "Log level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG.",
"default": "INFO",
"choices": [
"DEBUG",
"INFO",
"WARNING",
"ERROR"
],
"name": "FASTMCP_LOG_LEVEL"
},
{
"description": "Persistent-state backend URL for pvl-core subsystems. Schemes: file:///path (survives restarts), memory:// (dev/ephemeral).",
"default": "file:///data/state",
"name": "IMAGE_GENERATION_MCP_KV_STORE_URL"
},
{
"description": "Server name shown to MCP clients in the initialization response.",
"default": "image-generation-mcp",
"name": "IMAGE_GENERATION_MCP_SERVER_NAME"
},
{
"description": "System-level instructions injected into LLM context.",
"name": "IMAGE_GENERATION_MCP_INSTRUCTIONS"
},
{
"description": "HTTP endpoint mount path for streamable-HTTP transport.",
"default": "/mcp",
"name": "IMAGE_GENERATION_MCP_HTTP_PATH"
},
{
"description": "EventStore backend for SSE session resumability. file:///path (file-backed, survives restarts) or memory:// (in-process only, dev mode).",
"default": "file:///data/state/events",
"name": "IMAGE_GENERATION_MCP_EVENT_STORE_URL"
},
{
"description": "Run as this UID (Docker entrypoint).",
"format": "number",
"default": "1000",
"name": "PUID"
},
{
"description": "Run as this GID (Docker entrypoint).",
"format": "number",
"default": "1000",
"name": "PGID"
},
{
"description": "Static bearer token for HTTP authentication.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_BEARER_TOKEN"
},
{
"description": "OIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.",
"name": "IMAGE_GENERATION_MCP_AUTH_MODE"
},
{
"description": "Public base URL for OIDC redirects (e.g. https://mcp.example.com). Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_BASE_URL"
},
{
"description": "OIDC discovery endpoint URL. Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_OIDC_CONFIG_URL"
},
{
"description": "OIDC client ID. Required for OIDC.",
"name": "IMAGE_GENERATION_MCP_OIDC_CLIENT_ID"
},
{
"description": "OIDC client secret. Required for OIDC.",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET"
},
{
"description": "Signing key for OIDC session JWTs (critical on Linux/Docker).",
"isSecret": true,
"name": "IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY"
},
{
"description": "Expected JWT audience claim. Leave unset if your provider does not set one.",
"name": "IMAGE_GENERATION_MCP_OIDC_AUDIENCE"
},
{
"description": "Comma-separated required OIDC scopes (default: openid for oidc-proxy mode, none for remote mode).",
"name": "IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES"
},
{
"description": "Verify access token JWT instead of id_token.",
"format": "boolean",
"default": "false",
"name": "IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN"
}
]
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-08-06T09:05:44.299132Z",
"publishedAt": "2026-08-06T09:05:44.299132Z",
"updatedAt": "2026-08-06T09:05:44.299132Z",
"isLatest": true
}
}
}
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
MCP server
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.
The publisher's own address
https://pvliesdonk.github.io/image-generation-mcp/
The address the publisher put in their registry record, printed as they wrote it. Nobody here has opened it.