LABSCO SUMMARY
Separate servers are more setup and less risk — configuration and assets are different blast radii.
Uploading an image and rewriting an account's transformation presets are not the same kind of action, and Cloudinary keeps them on different servers so a client can hold one and not the other. Connect asset management for day-to-day work; add environment config only when someone is deliberately changing configuration. The API-key exception on Analysis is the detail that will bite a headless setup — plan for OAuth there.
What it is
Cloudinary publishes five separate remote servers rather than one. Asset management is the main endpoint; configuration, metadata, analysis and MediaFlows automations each have their own address, and analysis runs over SSE.
What you get
- Asset Management — upload, manage, search and transform images and video
- Environment Config — upload presets, mappings, named transformations, webhooks, streaming profiles
- Structured Metadata — metadata fields and rules
- Analysis — AI tagging, moderation and object recognition, on a separate SSE endpoint
- MediaFlows — build and manage automations that process and deliver images and video
Requirements
OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret). Two exceptions matter: the Analysis server does not accept API keys, so that one is OAuth only; and MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret.
Setup effort
Paste a URL, then authorize — add the servers you want to your client, then approve the OAuth consent screen, or use API key headers; MediaFlows always takes your credentials in its own headers
USE CASES
Uploading and finding media
Work assets — upload, search, transform — without granting anything that changes configuration.
Tagging a library automatically
Use the Analysis server for AI tagging, moderation and object recognition; note it is OAuth-only.
Changing delivery configuration deliberately
Connect the environment-config server only when presets or webhooks are meant to change.
BEFORE YOU INSTALL
What to know first
Requires
an MCP client that can reach a remote endpoint; OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
INSTALLATION
Connect your client
The vendor hosts 5 servers, each with its own URL.
Server setup
Asset Management
https://asset-management.mcp.cloudinary.com/mcpRequirements
- OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
Environment Config
https://environment-config.mcp.cloudinary.com/mcpRequirements
- OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
Structured Metadata
https://structured-metadata.mcp.cloudinary.com/mcpRequirements
- OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
Analysis
https://analysis.mcp.cloudinary.com/sseRequirements
- OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
MediaFlows
https://mediaflows.mcp.cloudinary.com/v2/mcpRequirements
- OAuth by default, or API key headers (cloudinary-url, or cloudinary-cloud-name, cloudinary-api-key and cloudinary-api-secret); the Analysis server does not accept API keys; MediaFlows doesn't use OAuth: it takes your cloud name, API key and secret in its own headers, cld-cloud-name, cld-api-key and cld-secret
MCP Clients
Claude Desktop
In Settings > Connectors, click Add custom connector and add each server you want, one at a time:
Asset Management:
https://asset-management.mcp.cloudinary.com/mcpEnvironment Config:
https://environment-config.mcp.cloudinary.com/mcpStructured Metadata:
https://structured-metadata.mcp.cloudinary.com/mcpAnalysis:
https://analysis.mcp.cloudinary.com/sseClick Connect on each one to sign in to your Cloudinary account and pick the product environment (cloud) to use
Any MCP client — Remote
Remote servers are hosted by Cloudinary and accessed via URL:
{
"mcpServers": {
"cloudinary-asset-mgmt-remote": {
"url": "https://asset-management.mcp.cloudinary.com/mcp"
},
"cloudinary-env-config-remote": {
"url": "https://environment-config.mcp.cloudinary.com/mcp"
},
"cloudinary-smd-remote": {
"url": "https://structured-metadata.mcp.cloudinary.com/mcp"
},
"cloudinary-analysis-remote": {
"url": "https://analysis.mcp.cloudinary.com/sse"
},
"mediaflows": {
"url": "https://mediaflows.mcp.cloudinary.com/v2/mcp",
"headers": {
"cld-cloud-name": "cloud_name",
"cld-api-key": "api_key",
"cld-secret": "api_secret"
}
}
}
}Replace api_key, api_secret and cloud_name with your Cloudinary product environment API key, API secret, and cloud name.
Any MCP client — Local
Local servers run on your machine using npm packages:
{
"mcpServers": {
"cloudinary-asset-mgmt": {
"command": "npx",
"args": [
"-y",
"--package",
"@cloudinary/asset-management-mcp",
"--",
"mcp",
"start"
],
"env": {
"CLOUDINARY_URL": "cloudinary://api_key:api_secret@cloud_name"
}
},
"cloudinary-env-config": {
"command": "npx",
"args": [
"-y",
"--package",
"@cloudinary/environment-config-mcp",
"--",
"mcp",
"start"
],
"env": {
"CLOUDINARY_URL": "cloudinary://api_key:api_secret@cloud_name"
}
},
"cloudinary-smd": {
"command": "npx",
"args": [
"-y",
"--package",
"@cloudinary/structured-metadata-mcp",
"--",
"mcp",
"start"
],
"env": {
"CLOUDINARY_URL": "cloudinary://api_key:api_secret@cloud_name"
}
},
"cloudinary-analysis": {
"command": "npx",
"args": [
"-y",
"--package",
"@cloudinary/analysis",
"--",
"mcp",
"start"
],
"env": {
"CLOUDINARY_URL": "cloudinary://api_key:api_secret@cloud_name"
}
}
}
}