cloudinary mcp server
A Model Context Protocol server that exposes Cloudinary Upload & Admin API methods as tools by AI assistants.
This integration allows AI systems to trigger and interact with your Cloudinary cloud.
A Model Context Protocol server that exposes Cloudinary Upload & Admin API methods as tools by AI assistants.
This integration allows AI systems to trigger and interact with your Cloudinary cloud.
A Model Context Protocol server that exposes Cloudinary Upload & Admin API methods as tools by AI assistants. This integration allows AI systems to trigger and interact with your Cloudinary cloud.
The MCP server:
It relies on the Cloudinary API to perform these actions. Not all methods and parameters are supported. More will be added over time.
Open an issue with a request for specific method if you need it.
To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your claude_desktop_config.json
:
{
"mcpServers": {
"cloudinary-mcp-server": {
"command": "npx",
"args": ["-y", "cloudinary-mcp-server"],
"env": {
"CLOUDINARY_CLOUD_NAME": "<cloud name>",
"CLOUDINARY_API_KEY": "<api-key>",
"CLOUDINARY_API_SECRET": "<api-secret>"
}
}
}
}
CLOUDINARY_CLOUD_NAME
- your cloud nameCLOUDINARY_API_KEY
- The API Key for your cloudCLOUDINARY_API_SECRET
- The API Secret for your cloudThe following tools are available:
upload
source
: URL, file path, base64 content, or binary data to uploadfolder
: Optional folder path in CloudinarypublicId
: Optional public ID for the uploaded assetresourceType
: Type of resource to upload (image, video, raw, auto)tags
: Comma-separated list of tags to assign to the assetdelete-asset
publicId
: The public ID of the asset to deleteassetId
: The asset ID of the asset to deleteget-asset
assetId
: The Cloudinary asset IDpublicId
: The public ID of the assetresourceType
: Type of asset (image, raw, video)type
: Delivery type (upload, private, authenticated, etc.)tags
: Whether to include the list of tag namescontext
: Whether to include contextual metadatametadata
: Whether to include structured metadatafind-assets
expression
: Search expression (e.g. 'tags=cat' or 'public_id:folder/*')resourceType
: Resource type (image, video, raw)maxResults
: Maximum number of results (1-500)nextCursor
: Next cursor for paginationtags
: Include tags in the responsecontext
: Include context in the responseget-usage
date
: Optional. The date for the usage report in the format: yyyy-mm-dd. Must be within the last 3 months. Default: the current date[
{
"description": "Upload a file (asset) to Cloudinary",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"folder": {
"description": "Optional folder path in Cloudinary",
"type": "string"
},
"publicId": {
"description": "Optional public ID for the uploaded asset",
"type": "string"
},
"resourceType": {
"default": "auto",
"description": "Type of resource to upload",
"enum": [
"image",
"video",
"raw",
"auto"
],
"type": "string"
},
"source": {
"anyOf": [
{
"description": "URL of the image/video to upload",
"format": "uri",
"type": "string"
},
{
"description": "Base64 encoded file content or file path",
"type": "string"
},
{
"description": "Binary data to upload"
}
],
"description": "The source media to upload (URL, file path, base64 content, or binary data)"
},
"tags": {
"description": "A string containing Comma-separated list of tags to assign to the asset",
"type": "string"
}
},
"required": [
"source"
],
"type": "object"
},
"name": "upload"
},
{
"description": "Delete a file (asset) from Cloudinary",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"assetId": {
"description": "The asset ID of the asset to delete",
"type": "string"
},
"publicId": {
"description": "The public ID of the asset to delete",
"type": "string"
}
},
"type": "object"
},
"name": "delete-asset"
},
{
"description": "Get the details of a specific file (asset)",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"assetId": {
"description": "The Cloudinary asset ID",
"type": "string"
},
"context": {
"description": "Whether to include contextual metadata. Default: false",
"type": "boolean"
},
"metadata": {
"description": "Whether to include structured metadata. Default: false",
"type": "boolean"
},
"publicId": {
"description": "The public ID of the asset",
"type": "string"
},
"resourceType": {
"description": "Type of asset. Default: image",
"enum": [
"image",
"raw",
"video"
],
"type": "string"
},
"tags": {
"description": "Whether to include the list of tag names. Default: false",
"type": "boolean"
},
"type": {
"description": "Delivery type. Default: upload",
"enum": [
"upload",
"private",
"authenticated",
"fetch",
"facebook",
"twitter",
"gravatar",
"youtube",
"hulu",
"vimeo",
"animoto",
"worldstarhiphop",
"dailymotion",
"list"
],
"type": "string"
}
},
"type": "object"
},
"name": "get-asset"
},
{
"description": "Search for existing files (assets) in Cloudinary with a query expression",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"context": {
"description": "Include context in the response",
"type": "boolean"
},
"expression": {
"description": "Search expression (e.g. 'tags=cat' or 'public_id:folder/*')",
"type": "string"
},
"maxResults": {
"default": 10,
"description": "Maximum number of results",
"maximum": 500,
"minimum": 1,
"type": "number"
},
"nextCursor": {
"description": "Next cursor for pagination",
"type": "string"
},
"resourceType": {
"default": "image",
"description": "Resource type",
"enum": [
"image",
"video",
"raw"
],
"type": "string"
},
"tags": {
"description": "Include tags in the response",
"type": "boolean"
}
},
"type": "object"
},
"name": "find-assets"
},
{
"description": "Get a report on the status of your product environment usage, including storage, credits, bandwidth, requests, number of resources, and add-on usage",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"date": {
"description": "The date for the usage report. Must be within the last 3 months and specified in the format: yyyy-mm-dd. Default: the current date",
"type": "string"
}
},
"type": "object"
},
"name": "get-usage"
}
]