Because the source can be a URL or base64 as well as a path, it slots straight after an image-generating step without anything touching your filesystem first. Set public_id yourself when the URL has to be predictable, and leave overwrite off if replacing an asset already at that ID would be a problem.
A single-purpose server over Cloudinary's upload API: one tool that takes media in and returns the hosted asset.
- One upload tool that accepts a local file path, a URL, or a base64 data URI
- resource_type to say whether it is an image, a video or a raw file
- public_id to set the asset's identifier yourself, overwrite to decide whether an existing asset at that ID is replaced, and tags to label it at upload time
- Large files are sent in chunks and return a streaming response
- The asset comes back as its delivery URL — https://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}
A Cloudinary account and three values from the Console's API Keys page: CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY and CLOUDINARY_API_SECRET. Node.js 18 or higher. Run it over stdio with npx @felores/cloudinary-mcp-server@latest.
One command plus a key — npx @felores/cloudinary-mcp-server@latest, then supply credentials
