Cloudinary MCP Server
The Cloudinary MCP Server enables you to upload and manage media files on Cloudinary via Claude Desktop and compatible MCP clients.
Upload Media: Upload images, videos, and raw files using a file path, URL, or base64 data URI
Customization: Set custom public IDs, add tags for organization, and control overwrite options for existing assets
Large File Handling: Process large files in chunks with streaming responses for video uploads
URL Generation: Access uploaded assets via auto-generated HTTPS/HTTP URLs
Integration: Seamlessly integrates with Claude Desktop via MCP server configuration
Provides tools for uploading images and videos to Cloudinary through Claude Desktop and compatible MCP clients
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloudinary MCP Serverupload this screenshot I just took and tag it as 'bug-report'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloudinary MCP Server
This MCP server provides tools for uploading images and videos to Cloudinary through Claude Desktop and compatible MCP clients.
Installation
Requirements: Node.js
Install Node.js (version 18 or higher) and npm from nodejs.org
Verify installation:
node --version npm --version
Install using npx (Recommended)
Navigate to the Claude configuration directory:
Windows:
C:\Users\NAME\AppData\Roaming\ClaudemacOS:
~/Library/Application Support/Claude/
You can also find these directories inside the Claude Desktop app: Claude Desktop > Settings > Developer > Edit Config
Add the following configuration to your MCP settings file:
{
"mcpServers": {
"cloudinary": {
"command": "npx",
"args": ["@felores/cloudinary-mcp-server@latest"],
"env": {
"CLOUDINARY_CLOUD_NAME": "your_cloud_name",
"CLOUDINARY_API_KEY": "your_api_key",
"CLOUDINARY_API_SECRET": "your_api_secret"
}
}
}
}Make sure to replace the environment variables with your Cloudinary credentials from the Cloudinary Console.
Developer Installation
If you want to modify the server or contribute to development:
Clone the repository:
git clone https://github.com/felores/cloudinary-mcp-server.git
cd cloudinary-mcp-serverInstall dependencies and build:
npm install
npm run buildRelated MCP server: Image Analysis MCP Server
Setup Instructions
First, ensure you have a Cloudinary account and get your credentials from the Cloudinary Console:
Cloud Name
API Key
API Secret
Add the server configuration to your Claude/Cline MCP settings file:
{
"mcpServers": {
"cloudinary": {
"command": "node",
"args": ["c:/path/to/cloudinary-mcp-server/dist/index.js"],
"env": {
"CLOUDINARY_CLOUD_NAME": "your_cloud_name",
"CLOUDINARY_API_KEY": "your_api_key",
"CLOUDINARY_API_SECRET": "your_api_secret"
}
}
}
}For Claude desktop app, edit the configuration file at the appropriate location for your OS.
Install dependencies and build the server:
npm install
npm run buildAvailable Tools
upload
Upload images and videos to Cloudinary.
Parameters:
file(required): Path to file, URL, or base64 data URI to uploadresource_type(optional): Type of resource ('image', 'video', or 'raw')public_id(optional): Custom public ID for the uploaded assetoverwrite(optional): Whether to overwrite existing assets with the same public IDtags(optional): Array of tags to assign to the uploaded asset
Example usage in Claude/Cline:
use_mcp_tool({
server_name: "cloudinary",
tool_name: "upload",
arguments: {
file: "path/to/image.jpg",
resource_type: "image",
public_id: "my-custom-id"
}
});Available Tools
1 tooluploadB
Upload media (images/videos) to Cloudinary. For large files, the upload is processed in chunks and returns a streaming response. The uploaded asset will be available at:
HTTP: http://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}
HTTPS: https://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format} where {cloud_name} is your Cloudinary cloud name, resource_type is 'image' or 'video', and format is determined by the file extension.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to file, URL, or base64 data URI to upload | |
| resource_type | No | Type of resource to upload. For videos, the upload will return a streaming response as it processes in chunks. | |
| public_id | No | Public ID to assign to the uploaded asset. This will be used in the final URL. If not provided, Cloudinary will generate one. | |
| overwrite | No | Whether to overwrite existing assets with the same public ID | |
| tags | No | Tags to assign to the uploaded asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that uploads are processed in chunks for large files and returns a streaming response, adding useful behavioral context. However, it misses critical details like authentication requirements, rate limits, error handling, or what the response contains, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. The URL details are relevant but slightly verbose; every sentence earns its place by explaining outcomes, though it could be more streamlined for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, 100% schema coverage, no output schema, and no annotations, the description is moderately complete. It covers the upload process and resulting URLs but lacks details on response format, error cases, or authentication, making it adequate but with clear gaps for a tool that performs mutations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it clarifies the URL format for uploaded assets, which relates to public_id and resource_type, but doesn't explain parameter interactions or provide additional semantics for the 5 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads media (images/videos) to Cloudinary, specifying the verb 'upload' and resource 'media to Cloudinary'. However, it doesn't distinguish from any siblings (none exist) and could be more specific about the 'raw' resource_type mentioned in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for uploading media to Cloudinary, mentioning large files use chunked processing, but provides no explicit when-to-use guidance, alternatives, or exclusions. Without siblings, differentiation isn't needed, but it lacks context like prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
- First observed
upload
TDQS
With only one tool, there is no possibility for ambiguity or overlap between tools. The 'upload' tool has a clear, singular purpose of uploading media to Cloudinary, making it impossible for an agent to misselect among multiple options.
Since there is only one tool named 'upload', it inherently follows a consistent naming pattern. There are no other tools to compare against, so no inconsistencies can arise in verb style, case conventions, or other naming aspects.
A single tool is too few for a Cloudinary server, which typically handles a wide range of media operations like upload, delete, transform, list, and fetch. This minimal set severely limits functionality and will likely cause agent failures due to missing essential operations for the domain.
The tool set is severely incomplete for a Cloudinary media management server. It only provides upload functionality, with glaring gaps such as no delete, update, list, search, or transformation tools. This makes it impossible for agents to perform basic CRUD or lifecycle operations in the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Upload, organize, search, and transform images, videos, and files with AI-powered tools.
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
Agent-first image hosting — upload images and get instant CDN URLs.
Holiday photo MCP server: list and fetch personal holiday photos inline in Claude chat.
Related MCP Servers
- AlicenseAqualityFmaintenanceThis server generates placeholder image URLs from various providers, supporting input validation and integration with desktop applications like Claude and Cursor.112MIT
- AlicenseCqualityDmaintenanceA server that accepts image URLs and analyzes their content using GPT-4-turbo, enabling Claude AI assistants to understand and describe images through natural language.2178MIT
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server for image processing and cloud uploads that automates resizing, converting, optimizing, and uploading images to services like AWS S3, Cloudflare R2, and Google Cloud Storage.2918MIT
- AlicenseAqualityCmaintenanceMCP server for uploading images to ImgBB from Claude-compatible clients.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/felores/cloudinary-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server