Cloudinary Media Generation MCP Server
OfficialProvides tools for generating images using various AI models through Cloudinary's Image Generation API, with automatic delivery, transformation, and optimization via Cloudinary platform.
Click on "Install 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., "@Cloudinary Media Generation MCP Servergenerate a photorealistic image of a futuristic city skyline at dusk"
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.
Cloudinary Media Generation MCP Server
Summary
Image Generation API: Use the Image Generation API to generate images from text prompts using various AI models.
The API supports Basic Authentication using your Cloudinary API Key and API Secret, which can be found on the API Keys page of your Cloudinary Console.
Key Features:
Unified API: A single interface for generating images across multiple best-in-class AI models.
Cloudinary Integration: Generated images are automatically available for delivery, transformation, and optimization through Cloudinary's platform.
Future-proof: Adopt new state-of-the-art models as they become available, without rebuilding your integration.
Supported Model Families:
flux: Photorealistic images (FLUX.2 Klein 9B / FLUX.2 Pro).
recraft: Vector and illustration (Recraft V3 / Recraft V4).
gpt-image: Campaign and marketing images (GPT Image 1 Mini / GPT Image 2).
nano-banana: General purpose generation (Nano Banana 1 / Nano Banana 2).
ideogram: Realism, text rendering, and artistic generation (Ideogram V4).
The Image Generation API requires the Cloudinary Image Generation add-on.
Note:
This is an early version of our Image Generation API. As the capability grows, certain features and endpoints may be adjusted. We invite you to try it out and share your feedback with our support team.
Related MCP server: Azure Image Generation MCP
Table of Contents
Installation
Install the MCP server as a Desktop Extension using the pre-built mcp-server.mcpb file:
Simply drag and drop the mcp-server.mcpb file onto Claude Desktop to install the extension.
The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more aboutDesktop Extensions.
Or manually:
Open Cursor Settings
Select Tools and Integrations
Select New MCP Server
If the configuration file is empty paste the following JSON into the MCP Server Configuration:
{
"command": "npx",
"args": [
"@cloudinary/media-generation-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}claude mcp add CloudinaryMediaGeneration -- npx -y @cloudinary/media-generation-mcp start --api-key --api-secret --cloud-name gemini mcp add CloudinaryMediaGeneration -- npx -y @cloudinary/media-generation-mcp start --api-key --api-secret --cloud-name Refer to Official Windsurf documentation for latest information
Open Windsurf Settings
Select Cascade on left side menu
Click on
Manage MCPs. (To Manage MCPs you should be signed in with a Windsurf Account)Click on
View raw configto open up the mcp configuration file.If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@cloudinary/media-generation-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}Or manually:
Refer to Official VS Code documentation for latest information
Open Command Palette
Search and open
MCP: Open User Configuration. This should open mcp.json fileIf the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@cloudinary/media-generation-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}npx @cloudinary/media-generation-mcp start --api-key --api-secret --cloud-name For a full list of server arguments, run:
npx @cloudinary/media-generation-mcp --helpCustom server / non-default host
By default the server talks to the production Cloudinary API
(https://api.cloudinary.com/v2). To point it at a different host — staging, a
regional endpoint, or a local mock — pass --server-url (or for clients that
use a config block, add it to args):
npx @cloudinary/media-generation-mcp start \
--api-key --api-secret --cloud-name \
--server-url https://api-eu.cloudinary.com/v2In a client config block:
{
"command": "npx",
"args": [
"@cloudinary/media-generation-mcp",
"start",
"--api-key", "",
"--api-secret", "",
"--cloud-name", "",
"--server-url", "https://api-eu.cloudinary.com/v2"
]
}Notes:
Keep the
/v2suffix. Operation paths (/processing/{cloud_name}/...) are appended to this base, so a host without/v2will return 404s.--server-urloverrides the URL entirely.--server-indexselects from the schema'sserverslist, which currently has a single entry, so only--server-index 0is valid — use--server-urlfor anything else.{cloud_name}is independent of the host. It is always taken from--cloud-name/CLOUDINARY_CLOUD_NAME/CLOUDINARY_URL, regardless of--server-url.Add
--log-level debugto print the outgoing request URL and confirm the override took effect.
Progressive Discovery
MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.
To enable dynamic mode, pass the --mode dynamic flag when starting your server:
{
"mcpServers": {
"CloudinaryMediaGeneration": {
"command": "npx",
"args": ["@cloudinary/media-generation-mcp", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}In dynamic mode, the server registers only the following meta-tools instead of every individual tool:
list_tools: Lists all available tools with their names and descriptions.describe_tool_input: Returns the input schema for one or more tools by name.execute_tool: Executes a tool by name with its arguments.
This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
Development
Run locally without a published npm package:
Clone this repository
Run
npm installRun
npm run buildRun
node ./bin/mcp-server.js start --api-key --api-secret --cloud-name
To use this local version with Cursor, Claude or other MCP Clients, you'll need to add the following config:
{
"command": "node",
"args": [
"./bin/mcp-server.js",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}Or to debug the MCP server locally, use the official MCP Inspector:
npx @modelcontextprotocol/inspector node ./bin/mcp-server.js start --api-key --api-secret --cloud-name Contributions
While we value contributions to this MCP Server, the code is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
MCP Server Created by Speakeasy
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cloudinary/media-generation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server