Skip to main content
Glama
felores

Cloudinary MCP Server

by felores

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

  1. Install Node.js (version 18 or higher) and npm from nodejs.org

  2. Verify installation:

    node --version
    npm --version
  1. Navigate to the Claude configuration directory:

    • Windows: C:\Users\NAME\AppData\Roaming\Claude

    • macOS: ~/Library/Application Support/Claude/

    You can also find these directories inside the Claude Desktop app: Claude Desktop > Settings > Developer > Edit Config

  2. 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"
      }
    }
  }
}
  1. 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:

  1. Clone the repository:

git clone https://github.com/felores/cloudinary-mcp-server.git
cd cloudinary-mcp-server
  1. Install dependencies and build:

npm install
npm run build

Related MCP server: Image Analysis MCP Server

Setup Instructions

  1. First, ensure you have a Cloudinary account and get your credentials from the Cloudinary Console:

    • Cloud Name

    • API Key

    • API Secret

  2. 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.

  1. Install dependencies and build the server:

npm install
npm run build

Available Tools

upload

Upload images and videos to Cloudinary.

Parameters:

  • file (required): Path to file, URL, or base64 data URI to upload

  • resource_type (optional): Type of resource ('image', 'video', or 'raw')

  • public_id (optional): Custom public ID for the uploaded asset

  • overwrite (optional): Whether to overwrite existing assets with the same public ID

  • tags (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 tool
uploadB

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:

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPath to file, URL, or base64 data URI to upload
resource_typeNoType of resource to upload. For videos, the upload will return a streaming response as it processes in chunks.
public_idNoPublic ID to assign to the uploaded asset. This will be used in the final URL. If not provided, Cloudinary will generate one.
overwriteNoWhether to overwrite existing assets with the same public ID
tagsNoTags to assign to the uploaded asset

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool update
    • First observedupload

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness1/5

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

ActivityInactive
ResponsivenessUnresponsive

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

Related MCP Servers

Latest Blog Posts

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