Pixfaro MCP — image generation MCP server for every image model
One MCP connection, one prepaid balance, every major image model — Nano Banana,
Gemini today, GPT Image next (visible as "coming soon" in list_models).
Pixfaro holds the provider accounts, keys, retries and format differences;
your agent just asks for an image.
Works with Claude Desktop, Claude Code, Cursor, Windsurf, and any MCP client.
Quickstart — no terminal needed (≈1 minute)
The remote server is the easiest path: paste one URL, sign in with your Pixfaro account in the browser window that opens. No API key in any file.
Claude (claude.ai / Claude Desktop, any plan): Settings → Connectors →
Add custom connector → URL https://mcp.pixfaro.com/mcp → sign in.
(Team/Enterprise: an org Owner adds it once under Organization settings →
Connectors → Custom → Web.)
Cursor: Add to Cursor →
— or Cursor Settings → MCP → Add new MCP server (type URL, address
https://mcp.pixfaro.com/mcp); Cursor runs the OAuth flow itself.
ChatGPT (Pro/Plus/Business/Edu): Settings → enable Developer mode
(connectors live under Plugins since the July 2026 rename, formerly
Connectors → Advanced) → add a custom connector with URL
https://mcp.pixfaro.com/mcp, OAuth.
Quickstart — command line / config file
- Get an API key at pixfaro.com and top up (no subscription).
- Add the server to your MCP client config:
{
"mcpServers": {
"pixfaro": {
"command": "npx",
"args": ["-y", "@pixfaro/mcp"],
"env": { "PIXFARO_KEY": "pf_live_…" }
}
}
}
- Ask your agent for an image. That's it.
For Claude Code:
claude mcp add pixfaro -e PIXFARO_KEY=pf_live_… -- npx -y @pixfaro/mcp
Clients that speak streamable HTTP can also take the remote form in the same file — no key, OAuth on first use:
{ "mcpServers": { "pixfaro": { "url": "https://mcp.pixfaro.com/mcp" } } }
``` Clients
without OAuth can pass an API key instead: `Authorization: Bearer pf_live_…`.
## Tools
| Tool | What it does |
|---|---|
| `generate_image` | prompt → hosted image URL (+cost and balance in the reply) |
| `edit_image` | natural-language edit of a previous generation by its `img_…` id |
| `list_models` | models with price, latency, and what each is best for |
| `render_template` | typeset card (quote/post) from a template — $0.02, ~2 s, sharp type · *remote server; npx parity coming in 0.2* |
| `list_templates` | card templates with slots, style axes and exact prices · *remote server* |
| `upload_asset` | upload a PNG/JPEG (≤5 MB) as a reusable asset (e.g. a card avatar) · *remote server* |
| `get_balance` | current prepaid balance |
Replies carry a hosted URL, never base64 — your agent's context stays small.
Both generation tools accept `aspect_ratio` (e.g. `"16:9"`, `"9:16"`). Edits
keep the source image's shape when you omit it — pass one only to reshape.
## CLI
The same package family ships an unscoped CLI for scripts, CI, and pipelines:
```bash
export PIXFARO_KEY=pf_live_…
npx pixfaro gen "a lighthouse at night, minimal flat style" -a 16:9 -o cover.png
npx pixfaro models
npx pixfaro balance
npx pixfaro edit img_8f2a… "make the sky darker" -o v2.png
Environment
| Variable | Meaning |
|---|---|
PIXFARO_KEY | your API key (pf_live_…) — required for everything except models |
PIXFARO_API_URL | endpoint override (default https://api.pixfaro.com) |
What this repo is
The thin open client over the Pixfaro API: the MCP server (@pixfaro/mcp) and
the pixfaro CLI share one HTTP client. The balance/provider layer lives
behind api.pixfaro.com — this code is intentionally
small enough to read before you hand it a key.
MIT © Pixfaro