Exposes Cloudinary's media upload, transformation, AI analysis, management, optimization and delivery as tools usable by AI agents
Model Context Protocol (MCP) is a new, standardized protocol for managing context between large language models (LLMs) and external systems. This repository provides comprehensive MCP servers for Cloudinary's media management platform, enabling you to use natural language to upload, transform, analyze, and organize your media assets directly from AI applications like Cursor and Claude.
With these MCP servers, you can seamlessly manage your entire media workflow through conversational AI - from uploading and transforming images and videos, to configuring automated processing pipelines, analyzing content with AI-powered tools, and organizing assets with structured metadata. Whether you're building media-rich applications, managing large asset libraries, or automating content workflows, these servers provide direct access to Cloudinary's full suite of media optimization and management capabilities.
The following MCP servers are available for Cloudinary:
Server Name | Description | GitHub Repository | Install |
---|---|---|---|
Asset Management | Upload, manage, and transform your media assets with advanced search and organization capabilities | @cloudinary/asset-management | |
Environment Config | Configure and manage your Cloudinary environment settings, upload presets, and transformations | @cloudinary/environment-config | |
Structured Metadata | Create, manage, and query structured metadata fields for enhanced asset organization and searchability | @cloudinary/structured-metadata | |
Analysis | Leverage AI-powered content analysis, moderation, and auto-tagging capabilities for your media assets | @cloudinary/analysis | |
MediaFlows | Build and manage low-code workflow automations for images and videos with AI-powered assistance | MediaFlows MCP |
For detailed guides, tutorials, and comprehensive documentation on using Cloudinary's MCP servers:
For Cursor users, you can install MCP servers with one click using Cursor deeplinks:
Note: You'll need to update the environment variables (CLOUDINARY_CLOUD_NAME
, CLOUDINARY_API_KEY
, CLOUDINARY_API_SECRET
) with your actual credentials after installation.
You can also run the MCP servers using the individual npm packages. There are several ways to configure authentication:
{
"mcpServers": {
"cloudinary-asset-mgmt": {
"command": "npx",
"args": ["-y", "--package", "@cloudinary/asset-management", "--", "mcp", "start"],
"env": {
"CLOUDINARY_CLOUD_NAME": "cloud_name",
"CLOUDINARY_API_KEY": "api_key",
"CLOUDINARY_API_SECRET": "api_secret"
}
}
}
}
{
"mcpServers": {
"cloudinary-asset-mgmt": {
"command": "npx",
"args": [
"-y", "--package", "@cloudinary/asset-management",
"--",
"mcp", "start",
"--cloud-name", "cloud_name",
"--api-key", "api_key",
"--api-secret", "api_secret"
]
}
}
}
{
"mcpServers": {
"cloudinary-asset-mgmt": {
"command": "npx",
"args": ["-y", "--package", "@cloudinary/asset-management", "--", "mcp", "start"],
"env": {
"CLOUDINARY_URL": "cloudinary://api_key:api_secret@cloud_name"
}
}
}
}
Apply the same configuration pattern to all other servers by replacing @cloudinary/asset-management
with the respective package names:
@cloudinary/environment-config
@cloudinary/structured-metadata
@cloudinary/analysis
For MediaFlows, use the following configuration:
{
"mcpServers": {
"mediaflows": {
"url": "https://mediaflows.mcp.cloudinary.com/v2/mcp",
"headers": {
"cld-cloud-name": "cloud_name",
"cld-api-key": "api_key",
"cld-secret": "api_secret"
}
}
}
}
When running MCP servers locally, authentication can be configured in several ways:
export CLOUDINARY_CLOUD_NAME="cloud_name"
export CLOUDINARY_API_KEY="api_key"
export CLOUDINARY_API_SECRET="api_secret"
export CLOUDINARY_URL="cloudinary://api_key:api_secret@cloud_name"
Pass credentials directly as arguments (see configuration examples above)
You can find your Cloudinary credentials in your Cloudinary Console Dashboard under Settings > Security.
We're continuing to add more functionality to these MCP servers. If you'd like to leave feedback, file a bug or provide a feature request, please open an issue on this repository.
"Claude's response was interrupted..."
If you see this message, Claude likely hit its context-length limit and stopped mid-reply. This happens most often on servers that trigger many chained tool calls such as the asset management server with large asset listings.
To reduce the chance of running into this issue:
Authentication Issues
Ensure your Cloudinary credentials are correctly configured and have the necessary permissions for the operations you're trying to perform.
Some features may require a paid Cloudinary plan. Ensure your Cloudinary account has the necessary subscription level for the features you intend to use, such as:
Licensed under the MIT License. See LICENSE file for details.