{
    "$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.10.0",
    "websiteUrl": "https://pvliesdonk.github.io/image-generation-mcp/",
    "packages": [
        {
            "registryType": "pypi",
            "identifier": "image-generation-mcp",
            "version": "1.10.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 \u2014 use SD_WEBUI_HOST instead. Accepted as fallback.",
                    "name": "IMAGE_GENERATION_MCP_A1111_HOST"
                },
                {
                    "description": "Deprecated \u2014 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.10.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 \u2014 use SD_WEBUI_HOST instead. Accepted as fallback.",
                    "name": "IMAGE_GENERATION_MCP_A1111_HOST"
                },
                {
                    "description": "Deprecated \u2014 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-06-18T11:33:21.323247Z",
            "publishedAt": "2026-06-18T11:33:21.323247Z",
            "updatedAt": "2026-06-18T11:33:21.323247Z",
            "isLatest": false
        }
    }
}