Upload, search, transform and organise your Cloudinary media library from a chat window
Most developer tooling work still happens through a UI a human drives. Cloudinary MCP server moves it into the conversation instead. Connects assistants to a Cloudinary media library so they can upload files, run search and visual search, apply transformations, manage folders and tags.
Connects assistants to a Cloudinary media library so they can upload files, run search and visual search, apply transformations, manage folders and tags.
The server ships on npm as @cloudinary/asset-management-mcp, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.
The server publishes 20 tools. What each one is for:
upload-asset — Upload an image, video or raw file from a local path or remote URL, setting public ID, folder and tags at ingest timesearch-assets — Run a structured expression search across the media library with sorting, aggregation and paginationvisual-search-assets — Find assets by visual similarity or image content rather than by filename or tagtransform-asset — Apply a Cloudinary transformation string to an existing asset via the explicit API, with optional CDN invalidationget-tx-reference — Return Cloudinary's full transformation reference so the model can compose valid transformation stringsget-asset-details — Fetch the full metadata record for one asset by asset IDasset-update — Update an existing asset — tags, contextual metadata, moderation state and other mutable fieldsasset-rename — Change an asset's public ID, optionally overwriting an existing targetdelete-asset — Delete an asset by asset IDlist-images — List image resources in the product environment with filtering and paginationlist-videos — List video resources in the product environmentlist-files — List raw (non-image, non-video) filesConfiguration is passed through the environment: CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET, CLOUDINARY_URL, CLOUDINARY_MCP_APPS. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
A Cloudinary account. The hosted endpoint authorises over OAuth; running the npm package locally needs Node.js 18+ and a cloud name, API key and API secret.
This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Cloudinary's toolset — upload-asset, search-assets, visual-search-assets and 17 more — is a fair guide to whether it matches your workflow. It is maintained by Cloudinary rather than a third party, which usually means auth handling and breaking changes are dealt with faster.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
Point the assistant at a folder of freshly imported assets and have it normalise public IDs, apply a consistent tag scheme, and flag anything that failed to upload.
Ask for a crop-and-optimise variant, look at the result, iterate on the transformation string in conversation, then copy the final string into your delivery code.
Search for every asset tagged for a campaign, confirm the list, and generate a single ZIP archive to send to an agency or partner.
Use visual search to locate an asset by describing what is in the frame when nobody remembers the filename or tag.
| Tool | What it does |
|---|---|
| upload-asset | Upload an image, video or raw file from a local path or remote URL, setting public ID, folder and tags at ingest time. |
| search-assets | Run a structured expression search across the media library with sorting, aggregation and pagination. |
| visual-search-assets | Find assets by visual similarity or image content rather than by filename or tag. |
| transform-asset | Apply a Cloudinary transformation string to an existing asset via the explicit API, with optional CDN invalidation. |
| get-tx-reference | Return Cloudinary's full transformation reference so the model can compose valid transformation strings. |
| get-asset-details | Fetch the full metadata record for one asset by asset ID. |
| asset-update | Update an existing asset — tags, contextual metadata, moderation state and other mutable fields. |
| asset-rename | Change an asset's public ID, optionally overwriting an existing target. |
| delete-asset | Delete an asset by asset ID. |
| list-images | List image resources in the product environment with filtering and pagination. |
| list-videos | List video resources in the product environment. |
| list-files | List raw (non-image, non-video) files. |
| list-tags | List the tags currently in use across the library. |
| create-folder | Create a new folder in the asset hierarchy. |
| search-folders | Search the folder tree by expression. |
| generate-archive | Build a ZIP or TGZ archive from a set of assets matched by tag, prefix or public ID. |
| generate-image | Generate a new image from a text prompt and store it in the library. |
| generate-image-from-images | Generate a new image conditioned on one or more existing assets. |
| get-generation-task | Poll the status of an asynchronous generation task. |
| get-usage-details | Report account usage — credits, storage, bandwidth and transformation counts. |
claude mcp add cloudinary --transport http https://asset-management.mcp.cloudinary.com/mcpA Cloudinary account. The hosted endpoint authorises over OAuth; running the npm package locally needs Node.js 18+ and a cloud name, API key and API secret.
| Variable | Description | Required |
|---|---|---|
| CLOUDINARY_CLOUD_NAME | Cloud name of the Cloudinary product environment you want the server to act on. Local runs only.e.g. demo | Optional |
| CLOUDINARY_API_KEY | API key for the product environment. Local runs only; the hosted endpoint uses OAuth instead.e.g. 123456789012345 | Optional |
| CLOUDINARY_API_SECRET | API secret paired with the API key. Local runs only. | Optional |
| CLOUDINARY_URL | Single-string alternative that encodes cloud name, key and secret together.e.g. cloudinary://key:secret@cloud-name | Optional |
| CLOUDINARY_MCP_APPS | Controls the interactive MCP UI apps (asset gallery, asset details, upload view). Set to 'none' to disable them.e.g. asset-gallery,asset-details | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.