Cloudinary Asset Management MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude or Cursor upload, search, tag, transform and delete the images and videos in your Cloudinary account.
This is Cloudinary's own server for its Asset Management API. It runs on your computer, and you sign in with your Cloudinary cloud name, API key and API secret.
It can search your library by text or by how an image looks, change tags and details on many assets at once, and make transformed copies. It can also delete assets and folders, so check the safety notes before you give it a key. A hosted version also exists at the address in the Links box; it takes the same three values as request headers, which most chat apps cannot send.
Good for
- Marketing and content teams who keep their media in Cloudinary
- Developers who want to bulk-tag, move or clean up assets by chat
- Designers who want AI image generation and edits saved straight to the library
- Store owners who need quick ZIPs and usage numbers
Works in
14 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports hosted MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports hosted MCP servers.
Install Cloudinary Asset Management MCP
Claude Code
- 1
Copy this prompt.
Add the Cloudinary Asset Management MCP server to Claude Code. Run this command: claude mcp add asset-management -e CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME> -e CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY> -e CLOUDINARY_API_SECRET=<CLOUDINARY_API_SECRET> -- npx -y @cloudinary/asset-management-mcp start Ask me for CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Read-only mode: Add --tool-annotations readOnly after start in the command or args.
The server needs the start subcommand. Replace the three placeholders with the values from Settings, Access Keys in your Cloudinary dashboard. To make it read-only, add --tool-annotations readOnly after start.
From the project README. Source.
Tools
Uploads an image, video or file to your library
Uploads a file from a web address or from your computer (paths must start with file://) into your Cloudinary library. Cloudinary then records its size, format and colors so you can search on them.
Try: “Upload file:///Users/me/photo.jpg to Cloudinary as hero-image.”
Write ·
upload-assetCreates an image from a text prompt
Starts an AI image generation from a text description and returns a task you can check later. It uses your Cloudinary account.
Try: “Generate an image of a red bicycle on a white background.”
Write ·
generate-imageEdits or combines images with a prompt
Takes one or more existing images plus a text prompt and starts an AI edit or merge. The result arrives as a task you can check.
Try: “Combine these two product photos into one banner image.”
Write ·
generate-image-from-imagesChecks on an image generation task
Looks up the status and result of an earlier image generation.
Try: “Is my last image generation finished?”
Network ·
get-generation-taskFinds assets with a search query
Searches your library with a Lucene-like query over names, folders, tags, custom fields, format, size, dimensions and dates. Returns the matching assets and their details.
Try: “Find all images tagged product uploaded in the last 7 days.”
Network ·
search-assetsFinds images that look similar
Finds images in your library that look like a given image URL, an existing asset, or a text description.
Try: “Find images in my library that look like a sunset over water.”
Network ·
visual-search-assetsLists image assets
Returns image assets from your library, page by page.
Try: “List my 20 most recent images.”
Network ·
list-imagesLists video assets
Returns video assets from your library, page by page.
Try: “Show me all video assets in the marketing folder.”
Network ·
list-videosLists raw files
Returns non-image, non-video files such as PDFs or text files stored in your library.
Try: “List the raw files in my library.”
Network ·
list-filesLists tags in use
Returns the tags currently applied to assets of a given type.
Try: “Which tags do I use on images?”
Network ·
list-tagsShows one asset in full
Returns the full record for one asset, looked up by its asset ID.
Try: “Show me details for asset with ID abc123.”
Network ·
get-asset-detailsDownloads a backup copy of an asset
Downloads a backup copy of an asset. It is marked read-only in the source.
Try: “Download the backup copy of asset abc123.”
Network ·
download-asset-backupChanges an asset's details
Updates one asset's metadata, tags and other attributes, looked up by its asset ID.
Try: “Update asset abc123 and set its description to Summer hero banner.”
Write ·
asset-updateRenames an asset
Changes an asset's public ID, which is the name in its URL, and can update other details at the same time.
Try: “Rename asset hero-image to homepage-hero.”
Write ·
asset-renameAdds, removes or replaces tags
Adds, removes or replaces tags on many assets at once. The source marks it as destructive because replacing tags overwrites what was there.
Try: “Add the tags featured and homepage to these five assets.”
Write ·
manage-asset-tagsSets structured metadata on many assets
Sets structured metadata field values on many assets in one call.
Try: “Set the metadata field season to summer on all assets in this folder.”
Write ·
manage-asset-metadataAdds or clears context on many assets
Adds or clears key-value context (such as an alt text or caption) on many assets at once.
Try: “Add the caption Spring sale to these assets.”
Write ·
manage-asset-contextLinks related assets together
Marks other assets as related to one asset, by asset ID.
Try: “Mark asset b as related to asset a.”
Write ·
create-asset-relationsRemoves links between assets
Removes the related-asset links from an asset, by asset ID.
Try: “Remove the relation between asset a and asset b.”
Delete ·
delete-asset-relationsDeletes transformed copies of assets
Deletes derived resources, which are the transformed versions made from an original. The original stays.
Try: “Delete the derived versions of hero-image.”
Delete ·
delete-derived-assetsDeletes an asset for good
Deletes an asset by its asset ID. It needs the admin scope.
Try: “Delete the asset with ID abc123.”
Delete ·
delete-assetBuilds a ZIP of assets
Creates a downloadable ZIP or similar archive that holds the assets you pick, for example by tag.
Try: “Generate a ZIP archive of all images with the tag export-ready.”
Write ·
generate-archiveCreates a folder
Creates a new, empty folder in your media library.
Try: “Create a folder called summer-2024-products.”
Write ·
create-folderFinds folders
Searches folders by name or path with a search expression.
Try: “Find folders whose name starts with marketing.”
Network ·
search-foldersRenames or moves a folder
Renames a folder or moves it, along with every asset inside, to a new place in the library.
Try: “Move the folder drafts into archive.”
Write ·
move-folderDeletes a folder
Deletes an existing folder from your media library.
Try: “Delete the empty folder old-campaign.”
Delete ·
delete-folderShows account usage
Returns usage numbers for your account: storage, credits, bandwidth, requests, asset count and add-ons. It needs the admin scope.
Try: “Show my Cloudinary account usage statistics.”
Network ·
get-usage-detailsLoads the transformation guide
Fetches Cloudinary's transformation rules from its official docs so the assistant uses real parameters. The description tells the assistant to call it once before any transformation.
Try: “Show me the Cloudinary transformation reference.”
Network ·
get-tx-referenceCreates transformed copies of an asset
Creates derived versions of an existing asset, such as resized, cropped or sharpened copies, using a transformation string. It saves real new assets in your account.
Try: “Transform asset hero-image with c_fill,w_800,h_600/e_sharpen.”
Write ·
transform-asset
Read from the source code
Permissions
high risk · 4 things to watch
High risk
The assistant can read your whole media library and also change or delete assets and folders with the key you give it. Use the read-only option unless you need changes, and keep the API secret out of shared files.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete assets and folders
delete-asset, delete-folder, delete-derived-assets and delete-asset-relations are all included. Start with the read-only option, or tell the assistant to ask before any delete. github.com
Bulk tools change many assets at once
The tag, metadata and context tools take lists of assets. Replacing tags overwrites the old ones, so check the list before you approve. github.com
Upload can read files from your computer
Upload accepts file:// paths to local files and sends them to your Cloudinary account. Only point it at files you mean to publish. github.com
Your API secret sits in the client config
The secret is stored in plain text in the config file or command. Keep the file private and rotate the key if it leaks. github.com
Technical details
| Turning on read-only | Start the server with --tool-annotations readOnly to mount only tools marked read-only. The start command also takes --scope (admin, librarian or builder) and --tool to limit what is mounted. |
|---|---|
| Talks to | Cloudinary API for your account. Cloudinary docs site for the transformation guide |
| Sign-in and keys | Your cloud name, API key and API secret go in environment variables or start flags in your client config. The key and secret give full access to the account unless you limit the tools. |
| Scopes |
|
Questions
Is this the official Cloudinary server?
Yes. It is published in the Cloudinary GitHub organization and its npm package is under the @cloudinary name.
What do I need to sign in?
Your Cloudinary cloud name, API key and API secret. Find them in the Cloudinary dashboard under Settings, Access Keys. You can also pass them as one CLOUDINARY_URL value.
Can I make it read-only?
Yes. Start it with the tool-annotations option set to readOnly and it mounts only tools marked read-only. You can also limit tools with the scope option, but the librarian scope still includes delete tools.
Can it delete my assets?
Yes. It has tools that delete assets, folders, derived copies and asset links. Deleting an asset needs the admin scope.
Does it run on my computer or in the cloud?
Both exist. The npm package runs on your computer and talks to Cloudinary over the internet. The project also lists a hosted address that expects your three credentials as request headers, which Claude Desktop and ChatGPT connectors cannot send.
Which apps does it work with?
The README gives steps for Claude Desktop, Claude Code, Cursor, Gemini, Windsurf and VS Code. Any app that can run a local MCP server should also work. See the install box above.
What does the dynamic mode do?
It swaps the 29 tools for four helper tools that list and run the real ones on demand. This saves context when your client struggles with many tools.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
@cloudinary/asset-management-mcp- Registry
- npm
- Endpoint
https://asset-management.mcp.cloudinary.com/mcp- Transport
- stdio, Streamable HTTP
- Version
- 0.11.5
- License
- MIT
- Last commit
- Oct 23, 2026
- Open issues
- 1
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 5Hide
- README · github.com
- Tool source · github.com
- Custom tools · github.com
- start command flags · github.com
- server.json · github.com