creator-kit
Leverages Cloudflare Workers AI to generate images from text prompts and synthesize speech from text, with configurable AI Gateway inference and selectable models.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@creator-kitGenerate an image of a futuristic city skyline at night."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
creator-kit
An MCP server on Cloudflare Workers that turns a prompt into an image and text into speech, using Workers AI.
Each model stores what it made and answers with a presigned link that stands for about a day, and the reply hands that link on as given — as a resource link, as structured content, and as text, because a different reader needs each one. Nothing generated passes through the Worker to do that; it does only where a deployment asks for backups, and then each file streams through on its way to that deployment's own bucket.
Tools
create_image
Generate an image from a prompt.
Argument | Default | Accepts |
| — | What the image should show. Required. |
|
|
|
| the model's own |
|
| the model's own |
|
|
|
|
|
|
|
| the model's own |
|
| the time of day alone | What to call this file where the deployment keeps copies. Up to 64 characters, and no slashes |
Google's tiers run google/nano-banana-pro, google/nano-banana-2,
google/nano-banana-2-lite from dearest to cheapest. Of the GPT Image models,
openai/gpt-image-2.5-flare is the faster and openai/gpt-image-2.5-sunburst
the more capable. What each costs on an account is on the Cloudflare dashboard.
create_audio
Speak text aloud with a text-to-speech model.
Argument | Default | Accepts |
| — | What should be spoken. Required. |
|
|
|
| the model's own |
|
| the model's own |
|
| the model's own |
|
| the time of day alone | What to call this file where the deployment keeps copies. Up to 64 characters, and no slashes |
An argument is named for what the caller is choosing, never for what one model happens to call it; each model is asked in its own words at the moment the request is made. A request the chosen model cannot honour is refused before it is sent, and the refusal names what would let the call through.
Related MCP server: Cloudinary Media Generation MCP Server
Requirements
Node.js 24 and pnpm (the version is pinned by
packageManager)A Cloudflare account with Workers AI and R2 — the bucket backups go in is created by the first deploy, so nothing has to be made by hand
Getting started
git clone git@github.com:elct9620/creator-mcp.git
cd creator-mcp
pnpm install
cp .dev.vars.example .dev.vars
pnpm devThe endpoint is then at http://localhost:8787/mcp, speaking Streamable HTTP.
Workers AI has no local simulation: every call wrangler dev makes reaches the
account and is billed. The test suite closes remote bindings off and injects a
fake AI instead, so pnpm test:run costs nothing.
Configuration
Name | Where | Purpose |
| a secret; | The AI Gateway inference is reached through, which decides how it is billed and rate limited. Leave it unset and the account's default gateway answers. |
| a secret; | Whether a generated file is copied into the bucket as well as linked. Only |
| a secret; | The time zone the date in a backup's path is read in, as an IANA name such as |
wrangler.jsonc deliberately declares none of these: a var of the same name is
uploaded over the secret on every deploy. Set each with
wrangler secret put <NAME>, and env.d.ts is what types them.
Access
Cloudflare Access is attached to the Worker rather than to a hostname, so every
way in is covered by the one application. The /mcp endpoint answers 401 to any
request Access did not match, which is what makes Managed OAuth safe to enable
in front of it. Locally, the access.dev block in wrangler.jsonc stands in
for one.
Address | Guarded | Why it is open |
Custom Domain, routes | yes | Where callers reach the server |
| yes | What |
Preview URLs | yes | Created per version by the platform |
Backup
A model's link stands for about a day. A deployment that wants what was
generated to outlive that sets BACKUP to yes, and every generated file is
copied into its bucket on the way out while the reply goes on carrying the
model's own link. A copy that cannot be made says why in the log and changes
nothing the caller sees, because they have already paid for the generation.
Part of | What it holds |
| One prefix, so whatever the bucket comes to hold besides copies can still say what it is |
| The first sixteen hex digits of the SHA-256 of the caller's Access email address |
| The caller's day, read in the zone |
| The time of day, four random characters, and the encoding the file was really stored in |
How long copies are kept is the bucket's answer rather than this Worker's. One object lifecycle rule on the bucket deletes everything past the age you name — the date in the path is there for a person browsing, not for that rule, which reads an object's own age instead.
Development
Command | Purpose |
| Local development |
| Run the tests once — |
| Format the working tree |
| Regenerate |
| Publish from a working copy |
| Check the source against |
.spec/ is where this project's vocabulary and behaviour are settled, and
sumi checks the source against it.
Read it before changing behaviour, and record a decision there rather than only
in code. CI runs formatting, both TypeScript projects, the tests and sumi verify on every push and pull request.
Deployment happens through Cloudflare Workers Builds when main moves, so
there is no deploy workflow in this repository.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate reproducible image, video, and audio assets with leading models and your own provider keys.
Generate images, videos, voiceovers, and captions from a chat prompt.
Image, video, music and text generation across 100+ models through one endpoint.
LLM chat, text tools, image generation, editing, batch image jobs, and asynchronous video generation
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate images using Cloudflare Workers AI models directly through the Model Context Protocol. It supports various models like Flux and Stable Diffusion, providing seamless image generation and storage via Cloudflare R2.7Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables generating images from text prompts using various AI models (FLUX, Recraft, GPT Image, etc.) and automatically delivering them through Cloudinary's platform.4 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides image generation tools powered by OpenRouter, running on Cloudflare Workers.52 npmMIT
- FlicenseNot gradedqualityBmaintenanceGenerates images and videos from text prompts using Cloudflare Workers AI and Google Gemini models.-