- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- !No description
claude mcp add image-generation-mcp -- python -m image-generation-mcp{
"mcpServers": {
"image-generation-mcp": {
"command": "python",
"args": ["-m", "image-generation-mcp"]
}
}
}MCP Servers overview
<!-- mcp-name: io.github.pvliesdonk/image-generation-mcp -->
# Image Generation MCP
[](https://github.com/pvliesdonk/image-generation-mcp/actions/workflows/ci.yml) [](https://codecov.io/gh/pvliesdonk/image-generation-mcp) [](https://pypi.org/project/image-generation-mcp/) [](https://pypi.org/project/image-generation-mcp/) [](LICENSE) [](https://github.com/pvliesdonk/image-generation-mcp/pkgs/container/image-generation-mcp) [](https://pvliesdonk.github.io/image-generation-mcp/) [](https://pvliesdonk.github.io/image-generation-mcp/llms.txt) [](https://github.com/pvliesdonk/fastmcp-server-template)
Multi-provider image generation [MCP](https://modelcontextprotocol.io) server built on [FastMCP](https://gofastmcp.com). Generate images from Claude Desktop, Claude Code, or any MCP client using OpenAI, Google Gemini, Stable Diffusion (SD WebUI), or a zero-cost placeholder provider.
**[Documentation](https://pvliesdonk.github.io/image-generation-mcp/)** | **[PyPI](https://pypi.org/project/image-generation-mcp/)** | **[Docker](https://github.com/pvliesdonk/image-generation-mcp/pkgs/container/image-generation-mcp)**
## Features
<!-- DOMAIN-START -->
- **Multi-provider** — OpenAI (`gpt-image-1.5`, `gpt-image-1`, `dall-e-3`), Google Gemini (`gemini-2.5-flash-image`, `gemini-3.x` previews), SD WebUI (Stable Diffusion / Forge / reForge), and a zero-cost placeholder for testing.
- **Per-model style metadata** — every model carries a `style_profile` (strengths, prompt grammar, lifecycle); `list_providers` includes a top-level `warnings` array for deprecated models. See [Model Catalog](https://pvliesdonk.github.io/image-generation-mcp/providers/model-catalog/).
- **Keyword-based auto-selection** — `provider="auto"` routes by prompt content (text/logo → OpenAI, photoreal/anime → SD WebUI, draft → placeholder).
- **CDN-style image transforms** — `image://{id}/view?format=webp&width=512&crop_x=...` resizes / re-encodes / crops on demand without re-generating.
- **Hybrid background tasks** — long-running SD generations run with `task=True` (poll for status); short OpenAI calls stream progress in the foreground.
- **MCP Apps gallery + viewer** — interactive UI surfaces (browse generated images, edit / crop / rotate) for clients that support `app:` resources.
- **Production deployment** — Docker (multi-arch), `.deb`/`.rpm` with hardened systemd, OIDC + bearer auth, persistent EventStore for HTTP session resumability.
<!-- DOMAIN-END -->
## What you can do with it
<!-- DOMAIN-START -->
With this server mounted in an MCP client, you can ask:
- **"Generate a coffee mug product photo on a worn oak table, 16:9, no text."** Routes to `gpt-image-1.5` for typography-aware photorealism.
- **"Create three concept-art variations of a cyberpunk alley at dusk."** Composes `generate_image` with `provider="sd_webui"` and a stylised checkpoint like `dreamshaperXL`.
- **"Crop this image to a 1:1 square centred on the subject and resize to 512px."** Uses `image://{id}/view?width=512&height=512&crop_x=...` resource transforms.
- **"Show me my recent generations."** Browses the gallery via the `image://list` resource and the MCP Apps gallery viewer.
- **"Save this style as 'cyberpunk-night' so I can apply it to future requests."** Uses the style library — markdown briefs the LLM interprets per-provider.
<!-- DOMAIN-END -->
<!-- ===== TEMPLATE-OWNED SECTIONS BELOW — DO NOT EDIT; CHANGES WILL BE OVERWRITTEN ON COPIER UPDATE ===== -->
## Installation
### From PyPI
```bash
pip install image-generation-mcp
```
If you add optional extras via the `PROJECT-EXTRAS-START` / `PROJECT-EXTRAS-END` sentinels in `pyproject.toml`, document them below:
<!-- DOMAIN-START -->
| Extra | Includes | Use when |
|-------|----------|----------|
| `mcp` | `fastmcp[tasks]>=3.0,<4` | Background-task support (`task=True`) — required for long SD generations. |
| `openai` | `openai>=1.0` | Enables the OpenAI provider. |
| `google-genai` | `google-genai>=1.0` | Enables the Gemini provider. |
| `all` | `fastmcp[tasks]` + `openai` + `google-genai` | Everything except SD WebUI (which is HTTP-only — no extra needed). |
Example: `pip install image-generation-mcp[all]`.
<!-- DOMAIN-END -->
### From source
```bash
git clone https://github.com/pvliesdonk/image-generation-mcp.git
cd image-generation-mcp
uv sync --all-extras --all-groups
```
### Docker
```bash
docker pull ghcr.io/pvliesdonk/image-generation-mcp:latest
```
A `compose.yml` ships at the repo root as a starting point — copy `.env.example` to `.env`, edit, and `docker compose up -d`.
To attach a remote Python debugger (development only — the protocol is unauthenticated), see [Remote debugging](docs/deployment/docker.md#remote-debugging).
### Linux packages (.deb / .rpm)
Download `.deb` or `.rpm` packages from the [GitHub Releases](https://github.com/pvliesdonk/image-generation-mcp/releases) page. Both install a hardened systemd unit; env configuration is sourced from `/etc/image-generation-mcp/env` (copy from the shipped `/etc/image-generation-mcp/env.example`).
### Claude Desktop (.mcpb bundle)
Download the `.mcpb` bundle from the [GitHub Releases](https://github.com/pvliesdonk/image-generation-mcp/releases) page and double-click to install, or run:
```bash
mcpb install image-generation-mcp-<version>.mcpb
```
Claude Desktop prompts for required env vars via a GUI wizard — no manual JSON editing needed.
For manual Claude Desktop configuration and setup options, see [Claude Desktop deployment](docs/deployment/claude-desktop.md).
## Quick start
```bash
image-generation-mcp serve # stdio transport
image-generation-mcp serve --transport http --port 8000 # streamable HTTP
```
For library usage (embedding the domain logic without the MCP transport), import from the `image_generation_mcp` package directly — see the project's domain modules under `src/image_generation_mcp/` for entry points.
### Server info
The server registers a built-in `get_server_info` tool (via `fastmcp_pvl_core.register_server_info_tool`) so operators can confirm the deployed version with a single MCP call. The default response carries `server_name`, `server_version`, and `core_version`. Servers that talk to a remote upstream wire upstream version reporting inside the `DOMAIN-UPSTREAM-START` / `DOMAIN-UPSTREAM-END` sentinel in `src/image_generation_mcp/server.py` — see [`CLAUDE.md`](CLAUDE.md#server-info-tool-get_server_info) for the wiring pattern.
## Configuration
Core environment variables shared across all `fastmcp-pvl-core`-based services:
| Variable | Default | Description |
|---|---|---|
| `FASTMCP_LOG_LEVEL` | `INFO` | Log level for FastMCP internals and app loggers (`DEBUG` / `INFO` / `WARNING` / `ERROR`). The `-v` CLI flag overrides to `DEBUG`. |
| `FASTMCP_ENABLE_RICH_LOGGING` | `true` | Set to `false` for plain / structured JSON log output. |
| `IMAGE_GENERATION_MCP_KV_STORE_URL` | `file:///data/state` | Persistent-state backend URL for pvl-core subsystems — `file:///path` (survives restarts), `memory://` (dev/ephemeral). |
Domain-specific variables go below under [Domain configuration](#domain-configuration).
## Authorization (opt-in)
This server inherits opt-in per-subject authorization from `fastmcp-pvl-core`. The default posture is **off** — every authenticated caller can use every tool, resource, and prompt. Turn it on by pointing `IMAGE_GENERATION_MCP_ACL_PATH` at a TOML ACL file; the middleware is installed only when the path is set, and individual tools opt in by declaring `meta={"required_scope": "<scope>"}` at registration. A tool without `required_scope` is unrestricted regardless of caller.
Wire it in by uncommenting the `acl_path` field in `src/image_generation_mcp/config.py` and the `AuthorizationMiddleware` stanza in `src/image_generation_mcp/server.py` — both ship as commented stubs in the scaffold.
### ACL TOML schema
```toml
[subjects]
"user:alice@example.com" = ["read", "write"]
"user:admin@example.com" = ["*"] # wildcard — any required scope passes
"service:ci-bot" = ["read"]
"local" = ["*"] # stdio mode subject
```
- **Subject strings are opaque.** The `<kind>:<id>` convention is documentation only; the library treats each subject as a literal string.
- **`*` is the only library-treated special scope** — it grants every required scope. Subject-side wildcards (`*` as an ACL key) are rejected at load time.
- **Scope vocabulary is domain-defined.** Per-project or per-folder gating is encoded into the scope string itself (e.g. `read:project-foo`, `write:vault/personal`); `fastmcp-pvl-core` treats every scope except `*` as opaque.
### Subject ↔ bearer-token alignment
The subject string used as a *value* in the bearer-tokens TOML (`IMAGE_GENERATION_MCP_BEARER_TOKENS_FILE`) is the same string used as a *key* in the ACL TOML. Same string, opposite roles — keep the two files consistent when adding or removing a principal. See [Mapped bearer tokens](docs/guides/authentication.md#mapped-bearer-tokens-multi-subject) in the authentication guide for the bearer-tokens TOML schema.
In single-token mode (`IMAGE_GENERATION_MWhat people ask about image-generation-mcp
What is pvliesdonk/image-generation-mcp?
+
pvliesdonk/image-generation-mcp is mcp servers for the Claude AI ecosystem with 1 GitHub stars.
How do I install image-generation-mcp?
+
You can install image-generation-mcp by cloning the repository (https://github.com/pvliesdonk/image-generation-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is pvliesdonk/image-generation-mcp safe to use?
+
Our security agent has analyzed pvliesdonk/image-generation-mcp and assigned a Trust Score of 69/100 (tier: OK). See the full breakdown of passed checks and flags on this page.
Who maintains pvliesdonk/image-generation-mcp?
+
pvliesdonk/image-generation-mcp is maintained by pvliesdonk. The last recorded GitHub activity is from today, with 3 open issues.
Are there alternatives to image-generation-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy image-generation-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/pvliesdonk-image-generation-mcp)<a href="https://claudewave.com/repo/pvliesdonk-image-generation-mcp"><img src="https://claudewave.com/api/badge/pvliesdonk-image-generation-mcp" alt="Featured on ClaudeWave: pvliesdonk/image-generation-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。