Image Generation MCP Server MCP Server
io.github.pvliesdonk/image-generation-mcp
What is the Image Generation MCP Server MCP server?
MCP server for AI image generation via OpenAI, Stable Diffusion (SD WebUI), or placeholders.
How to install Image Generation MCP Server
Copy-paste configuration for popular MCP clients.
IMAGE_GENERATION_MCP_READ_ONLYWhen true, write-tagged tools (generate_image) are hidden. Set to false to enable image generation.
IMAGE_GENERATION_MCP_SCRATCH_DIRDirectory for saved generated images. Created automatically on first use.
IMAGE_GENERATION_MCP_DEFAULT_PROVIDERDefault provider selection: auto (keyword-based), openai, sd_webui, or placeholder. Deprecated alias 'a1111' is also accepted.
IMAGE_GENERATION_MCP_OPENAI_API_KEYsecretOpenAI API key. Enables the OpenAI provider (gpt-image-1, dall-e-3) when set.
IMAGE_GENERATION_MCP_SD_WEBUI_HOSTSD WebUI base URL (e.g. http://localhost:7860). Enables the SD WebUI provider when set.
IMAGE_GENERATION_MCP_SD_WEBUI_MODELSD WebUI checkpoint name for model-aware preset detection (SD 1.5 vs SDXL vs Lightning vs Flux).
IMAGE_GENERATION_MCP_A1111_HOSTDeprecated — use SD_WEBUI_HOST instead. Accepted as fallback.
IMAGE_GENERATION_MCP_A1111_MODELDeprecated — use SD_WEBUI_MODEL instead. Accepted as fallback.
FASTMCP_LOG_LEVELLog level for FastMCP internals; app loggers default to INFO, -v overrides both to DEBUG.
IMAGE_GENERATION_MCP_SERVER_NAMEServer name shown to MCP clients in the initialization response.
IMAGE_GENERATION_MCP_INSTRUCTIONSSystem-level instructions injected into LLM context.
IMAGE_GENERATION_MCP_BEARER_TOKENsecretStatic bearer token for HTTP authentication.
IMAGE_GENERATION_MCP_AUTH_MODEOIDC auth mode: 'remote' (JWKS validation) or 'oidc-proxy' (OAuth proxy). Auto-detected if not set.
IMAGE_GENERATION_MCP_BASE_URLPublic base URL for OIDC redirects (e.g. https://mcp.example.com). Required for OIDC.
IMAGE_GENERATION_MCP_OIDC_CONFIG_URLOIDC discovery endpoint URL. Required for OIDC.
IMAGE_GENERATION_MCP_OIDC_CLIENT_IDOIDC client ID. Required for OIDC.
IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRETsecretOIDC client secret. Required for OIDC.
IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEYsecretSigning key for OIDC session JWTs (critical on Linux/Docker).
IMAGE_GENERATION_MCP_OIDC_AUDIENCEExpected JWT audience claim. Leave unset if your provider does not set one.
IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPESComma-separated required OIDC scopes (default: openid for oidc-proxy mode, none for remote mode).
IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKENVerify access token JWT instead of id_token.
IMAGE_GENERATION_MCP_KV_STORE_URLPersistent-state backend URL for pvl-core subsystems. Schemes: file:///path (survives restarts), memory:// (dev/ephemeral).
IMAGE_GENERATION_MCP_HTTP_PATHHTTP endpoint mount path for streamable-HTTP transport.
IMAGE_GENERATION_MCP_EVENT_STORE_URLEventStore backend for SSE session resumability. file:///path (file-backed, survives restarts) or memory:// (in-process only, dev mode).
PUIDRun as this UID (Docker entrypoint).
PGIDRun as this GID (Docker entrypoint).
{
"mcpServers": {
"image-generation-mcp": {
"command": "uvx",
"args": [
"image-generation-mcp"
],
"env": {
"IMAGE_GENERATION_MCP_READ_ONLY": "<YOUR_IMAGE_GENERATION_MCP_READ_ONLY>",
"IMAGE_GENERATION_MCP_SCRATCH_DIR": "<YOUR_IMAGE_GENERATION_MCP_SCRATCH_DIR>",
"IMAGE_GENERATION_MCP_DEFAULT_PROVIDER": "<YOUR_IMAGE_GENERATION_MCP_DEFAULT_PROVIDER>",
"IMAGE_GENERATION_MCP_OPENAI_API_KEY": "<YOUR_IMAGE_GENERATION_MCP_OPENAI_API_KEY>",
"IMAGE_GENERATION_MCP_SD_WEBUI_HOST": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_HOST>",
"IMAGE_GENERATION_MCP_SD_WEBUI_MODEL": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_MODEL>",
"IMAGE_GENERATION_MCP_A1111_HOST": "<YOUR_IMAGE_GENERATION_MCP_A1111_HOST>",
"IMAGE_GENERATION_MCP_A1111_MODEL": "<YOUR_IMAGE_GENERATION_MCP_A1111_MODEL>",
"FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
"IMAGE_GENERATION_MCP_SERVER_NAME": "<YOUR_IMAGE_GENERATION_MCP_SERVER_NAME>",
"IMAGE_GENERATION_MCP_INSTRUCTIONS": "<YOUR_IMAGE_GENERATION_MCP_INSTRUCTIONS>",
"IMAGE_GENERATION_MCP_BEARER_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_BEARER_TOKEN>",
"IMAGE_GENERATION_MCP_AUTH_MODE": "<YOUR_IMAGE_GENERATION_MCP_AUTH_MODE>",
"IMAGE_GENERATION_MCP_BASE_URL": "<YOUR_IMAGE_GENERATION_MCP_BASE_URL>",
"IMAGE_GENERATION_MCP_OIDC_CONFIG_URL": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CONFIG_URL>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_ID": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_ID>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET>",
"IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY": "<YOUR_IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY>",
"IMAGE_GENERATION_MCP_OIDC_AUDIENCE": "<YOUR_IMAGE_GENERATION_MCP_OIDC_AUDIENCE>",
"IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES": "<YOUR_IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES>",
"IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN>",
"IMAGE_GENERATION_MCP_KV_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_KV_STORE_URL>",
"IMAGE_GENERATION_MCP_HTTP_PATH": "<YOUR_IMAGE_GENERATION_MCP_HTTP_PATH>",
"IMAGE_GENERATION_MCP_EVENT_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_EVENT_STORE_URL>",
"PUID": "<YOUR_PUID>",
"PGID": "<YOUR_PGID>"
}
}
}
}{
"mcpServers": {
"image-generation-mcp": {
"command": "uvx",
"args": [
"image-generation-mcp"
],
"env": {
"IMAGE_GENERATION_MCP_READ_ONLY": "<YOUR_IMAGE_GENERATION_MCP_READ_ONLY>",
"IMAGE_GENERATION_MCP_SCRATCH_DIR": "<YOUR_IMAGE_GENERATION_MCP_SCRATCH_DIR>",
"IMAGE_GENERATION_MCP_DEFAULT_PROVIDER": "<YOUR_IMAGE_GENERATION_MCP_DEFAULT_PROVIDER>",
"IMAGE_GENERATION_MCP_OPENAI_API_KEY": "<YOUR_IMAGE_GENERATION_MCP_OPENAI_API_KEY>",
"IMAGE_GENERATION_MCP_SD_WEBUI_HOST": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_HOST>",
"IMAGE_GENERATION_MCP_SD_WEBUI_MODEL": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_MODEL>",
"IMAGE_GENERATION_MCP_A1111_HOST": "<YOUR_IMAGE_GENERATION_MCP_A1111_HOST>",
"IMAGE_GENERATION_MCP_A1111_MODEL": "<YOUR_IMAGE_GENERATION_MCP_A1111_MODEL>",
"FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
"IMAGE_GENERATION_MCP_SERVER_NAME": "<YOUR_IMAGE_GENERATION_MCP_SERVER_NAME>",
"IMAGE_GENERATION_MCP_INSTRUCTIONS": "<YOUR_IMAGE_GENERATION_MCP_INSTRUCTIONS>",
"IMAGE_GENERATION_MCP_BEARER_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_BEARER_TOKEN>",
"IMAGE_GENERATION_MCP_AUTH_MODE": "<YOUR_IMAGE_GENERATION_MCP_AUTH_MODE>",
"IMAGE_GENERATION_MCP_BASE_URL": "<YOUR_IMAGE_GENERATION_MCP_BASE_URL>",
"IMAGE_GENERATION_MCP_OIDC_CONFIG_URL": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CONFIG_URL>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_ID": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_ID>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET>",
"IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY": "<YOUR_IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY>",
"IMAGE_GENERATION_MCP_OIDC_AUDIENCE": "<YOUR_IMAGE_GENERATION_MCP_OIDC_AUDIENCE>",
"IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES": "<YOUR_IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES>",
"IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN>",
"IMAGE_GENERATION_MCP_KV_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_KV_STORE_URL>",
"IMAGE_GENERATION_MCP_HTTP_PATH": "<YOUR_IMAGE_GENERATION_MCP_HTTP_PATH>",
"IMAGE_GENERATION_MCP_EVENT_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_EVENT_STORE_URL>",
"PUID": "<YOUR_PUID>",
"PGID": "<YOUR_PGID>"
}
}
}
}{
"mcpServers": {
"image-generation-mcp": {
"command": "uvx",
"args": [
"image-generation-mcp"
],
"env": {
"IMAGE_GENERATION_MCP_READ_ONLY": "<YOUR_IMAGE_GENERATION_MCP_READ_ONLY>",
"IMAGE_GENERATION_MCP_SCRATCH_DIR": "<YOUR_IMAGE_GENERATION_MCP_SCRATCH_DIR>",
"IMAGE_GENERATION_MCP_DEFAULT_PROVIDER": "<YOUR_IMAGE_GENERATION_MCP_DEFAULT_PROVIDER>",
"IMAGE_GENERATION_MCP_OPENAI_API_KEY": "<YOUR_IMAGE_GENERATION_MCP_OPENAI_API_KEY>",
"IMAGE_GENERATION_MCP_SD_WEBUI_HOST": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_HOST>",
"IMAGE_GENERATION_MCP_SD_WEBUI_MODEL": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_MODEL>",
"IMAGE_GENERATION_MCP_A1111_HOST": "<YOUR_IMAGE_GENERATION_MCP_A1111_HOST>",
"IMAGE_GENERATION_MCP_A1111_MODEL": "<YOUR_IMAGE_GENERATION_MCP_A1111_MODEL>",
"FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
"IMAGE_GENERATION_MCP_SERVER_NAME": "<YOUR_IMAGE_GENERATION_MCP_SERVER_NAME>",
"IMAGE_GENERATION_MCP_INSTRUCTIONS": "<YOUR_IMAGE_GENERATION_MCP_INSTRUCTIONS>",
"IMAGE_GENERATION_MCP_BEARER_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_BEARER_TOKEN>",
"IMAGE_GENERATION_MCP_AUTH_MODE": "<YOUR_IMAGE_GENERATION_MCP_AUTH_MODE>",
"IMAGE_GENERATION_MCP_BASE_URL": "<YOUR_IMAGE_GENERATION_MCP_BASE_URL>",
"IMAGE_GENERATION_MCP_OIDC_CONFIG_URL": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CONFIG_URL>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_ID": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_ID>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET>",
"IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY": "<YOUR_IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY>",
"IMAGE_GENERATION_MCP_OIDC_AUDIENCE": "<YOUR_IMAGE_GENERATION_MCP_OIDC_AUDIENCE>",
"IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES": "<YOUR_IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES>",
"IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN>",
"IMAGE_GENERATION_MCP_KV_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_KV_STORE_URL>",
"IMAGE_GENERATION_MCP_HTTP_PATH": "<YOUR_IMAGE_GENERATION_MCP_HTTP_PATH>",
"IMAGE_GENERATION_MCP_EVENT_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_EVENT_STORE_URL>",
"PUID": "<YOUR_PUID>",
"PGID": "<YOUR_PGID>"
}
}
}
}{
"servers": {
"image-generation-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"image-generation-mcp"
],
"env": {
"IMAGE_GENERATION_MCP_READ_ONLY": "<YOUR_IMAGE_GENERATION_MCP_READ_ONLY>",
"IMAGE_GENERATION_MCP_SCRATCH_DIR": "<YOUR_IMAGE_GENERATION_MCP_SCRATCH_DIR>",
"IMAGE_GENERATION_MCP_DEFAULT_PROVIDER": "<YOUR_IMAGE_GENERATION_MCP_DEFAULT_PROVIDER>",
"IMAGE_GENERATION_MCP_OPENAI_API_KEY": "<YOUR_IMAGE_GENERATION_MCP_OPENAI_API_KEY>",
"IMAGE_GENERATION_MCP_SD_WEBUI_HOST": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_HOST>",
"IMAGE_GENERATION_MCP_SD_WEBUI_MODEL": "<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_MODEL>",
"IMAGE_GENERATION_MCP_A1111_HOST": "<YOUR_IMAGE_GENERATION_MCP_A1111_HOST>",
"IMAGE_GENERATION_MCP_A1111_MODEL": "<YOUR_IMAGE_GENERATION_MCP_A1111_MODEL>",
"FASTMCP_LOG_LEVEL": "<YOUR_FASTMCP_LOG_LEVEL>",
"IMAGE_GENERATION_MCP_SERVER_NAME": "<YOUR_IMAGE_GENERATION_MCP_SERVER_NAME>",
"IMAGE_GENERATION_MCP_INSTRUCTIONS": "<YOUR_IMAGE_GENERATION_MCP_INSTRUCTIONS>",
"IMAGE_GENERATION_MCP_BEARER_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_BEARER_TOKEN>",
"IMAGE_GENERATION_MCP_AUTH_MODE": "<YOUR_IMAGE_GENERATION_MCP_AUTH_MODE>",
"IMAGE_GENERATION_MCP_BASE_URL": "<YOUR_IMAGE_GENERATION_MCP_BASE_URL>",
"IMAGE_GENERATION_MCP_OIDC_CONFIG_URL": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CONFIG_URL>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_ID": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_ID>",
"IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET": "<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET>",
"IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY": "<YOUR_IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY>",
"IMAGE_GENERATION_MCP_OIDC_AUDIENCE": "<YOUR_IMAGE_GENERATION_MCP_OIDC_AUDIENCE>",
"IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES": "<YOUR_IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES>",
"IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN": "<YOUR_IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN>",
"IMAGE_GENERATION_MCP_KV_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_KV_STORE_URL>",
"IMAGE_GENERATION_MCP_HTTP_PATH": "<YOUR_IMAGE_GENERATION_MCP_HTTP_PATH>",
"IMAGE_GENERATION_MCP_EVENT_STORE_URL": "<YOUR_IMAGE_GENERATION_MCP_EVENT_STORE_URL>",
"PUID": "<YOUR_PUID>",
"PGID": "<YOUR_PGID>"
}
}
}
}claude mcp add image-generation-mcp --env IMAGE_GENERATION_MCP_READ_ONLY=<YOUR_IMAGE_GENERATION_MCP_READ_ONLY> --env IMAGE_GENERATION_MCP_SCRATCH_DIR=<YOUR_IMAGE_GENERATION_MCP_SCRATCH_DIR> --env IMAGE_GENERATION_MCP_DEFAULT_PROVIDER=<YOUR_IMAGE_GENERATION_MCP_DEFAULT_PROVIDER> --env IMAGE_GENERATION_MCP_OPENAI_API_KEY=<YOUR_IMAGE_GENERATION_MCP_OPENAI_API_KEY> --env IMAGE_GENERATION_MCP_SD_WEBUI_HOST=<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_HOST> --env IMAGE_GENERATION_MCP_SD_WEBUI_MODEL=<YOUR_IMAGE_GENERATION_MCP_SD_WEBUI_MODEL> --env IMAGE_GENERATION_MCP_A1111_HOST=<YOUR_IMAGE_GENERATION_MCP_A1111_HOST> --env IMAGE_GENERATION_MCP_A1111_MODEL=<YOUR_IMAGE_GENERATION_MCP_A1111_MODEL> --env FASTMCP_LOG_LEVEL=<YOUR_FASTMCP_LOG_LEVEL> --env IMAGE_GENERATION_MCP_SERVER_NAME=<YOUR_IMAGE_GENERATION_MCP_SERVER_NAME> --env IMAGE_GENERATION_MCP_INSTRUCTIONS=<YOUR_IMAGE_GENERATION_MCP_INSTRUCTIONS> --env IMAGE_GENERATION_MCP_BEARER_TOKEN=<YOUR_IMAGE_GENERATION_MCP_BEARER_TOKEN> --env IMAGE_GENERATION_MCP_AUTH_MODE=<YOUR_IMAGE_GENERATION_MCP_AUTH_MODE> --env IMAGE_GENERATION_MCP_BASE_URL=<YOUR_IMAGE_GENERATION_MCP_BASE_URL> --env IMAGE_GENERATION_MCP_OIDC_CONFIG_URL=<YOUR_IMAGE_GENERATION_MCP_OIDC_CONFIG_URL> --env IMAGE_GENERATION_MCP_OIDC_CLIENT_ID=<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_ID> --env IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET=<YOUR_IMAGE_GENERATION_MCP_OIDC_CLIENT_SECRET> --env IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY=<YOUR_IMAGE_GENERATION_MCP_OIDC_JWT_SIGNING_KEY> --env IMAGE_GENERATION_MCP_OIDC_AUDIENCE=<YOUR_IMAGE_GENERATION_MCP_OIDC_AUDIENCE> --env IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES=<YOUR_IMAGE_GENERATION_MCP_OIDC_REQUIRED_SCOPES> --env IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN=<YOUR_IMAGE_GENERATION_MCP_OIDC_VERIFY_ACCESS_TOKEN> --env IMAGE_GENERATION_MCP_KV_STORE_URL=<YOUR_IMAGE_GENERATION_MCP_KV_STORE_URL> --env IMAGE_GENERATION_MCP_HTTP_PATH=<YOUR_IMAGE_GENERATION_MCP_HTTP_PATH> --env IMAGE_GENERATION_MCP_EVENT_STORE_URL=<YOUR_IMAGE_GENERATION_MCP_EVENT_STORE_URL> --env PUID=<YOUR_PUID> --env PGID=<YOUR_PGID> -- uvx image-generation-mcpRelated MCP servers
Markdown vault MCP server with FTS5 + semantic search and frontmatter indexing
View repository →Scholarly-sources MCP: papers, patents, books, standards — search and cross-reference prior art.
View repository →