Ad Creative MCP Server
Uses Cloudinary for image transformation, resizing, and optimization of advertising creative assets.
Validates, resizes, and optimizes creative assets for Facebook ad placements.
Validates, resizes, and optimizes creative assets for Google Ads platforms including GDN sizes.
Validates, resizes, and optimizes creative assets for Instagram ad placements.
Validates, resizes, and optimizes creative assets for Meta (Facebook and Instagram) ad placements.
Validates, resizes, and optimizes creative assets for TikTok ad placements.
Validates, resizes, and optimizes creative assets for YouTube ad placements.
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., "@Ad Creative MCP ServerCheck if my 1200x628 image works for LinkedIn ads"
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.
Ad Creative MCP Server
An MCP (Model Context Protocol) server that validates, resizes, and optimizes advertising creative assets across 50+ platforms using Cloudinary.
What It Does
Upload one image. Get correctly-sized derivatives for every advertising platform — Google Ads, Facebook/Meta, TikTok, YouTube, DV360, The Trade Desk, CTV, and more.
validate_asset — Check an asset against all 50+ platform specs instantly
resize_for_platform — Generate a Cloudinary transform URL for any channel
batch_resize — Generate all sizes for a platform package (e.g., "GDN Essential")
get_platform_specs — Look up exact specs for any advertising platform
generate_transform_url — Build custom Cloudinary transformation URLs
list_packages — See all available platform packages
Related MCP server: Cloudinary MCP Server
Quick Start
1. Install in Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"ad-creative": {
"command": "node",
"args": ["/path/to/creative-asset-validator/mcp-server/src/index.js"],
"env": {
"CLOUDINARY_CLOUD_NAME": "your_cloud_name",
"CLOUDINARY_API_KEY": "your_api_key",
"CLOUDINARY_API_SECRET": "your_api_secret"
}
}
}
}2. Install in Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ad-creative": {
"command": "node",
"args": ["/path/to/creative-asset-validator/mcp-server/src/index.js"],
"env": {
"CLOUDINARY_CLOUD_NAME": "your_cloud_name",
"CLOUDINARY_API_KEY": "your_api_key",
"CLOUDINARY_API_SECRET": "your_api_secret"
}
}
}
}Example Prompts
Validate an Asset
"I have a 640x600 image. What platforms is it compatible with?"
The server checks against all specs and returns compatible channels, off-size channels with fix suggestions, and incompatible channels.
Generate Google Ads Display Sizes
"Generate all GDN Essential sizes from my uploaded image at campaigns/hero"
Returns Cloudinary transformation URLs for: 300x250, 728x90, 160x600, 336x280, 300x600, 320x50, 320x100, 970x250.
Resize for Facebook Stories
"Resize my image for Facebook Stories"
Returns a URL with c_pad,b_gen_fill to extend the image to 9:16 with AI-generated content.
Get Platform Specs
"What are the specs for TikTok?"
Returns all TikTok channel specs including dimensions, aspect ratios, and duration limits.
Platform Packages
Package | Channels |
GDN Essential | 8 core Google Display sizes |
TTD Complete | 11 Trade Desk sizes |
DV360 Complete | 12 DV360 sizes including native |
Meta Complete | 14 Facebook + Instagram placements |
Universal Display | 15 IAB standard sizes |
Works With
Cursor
Claude Desktop
Claude Code
VS Code (with Copilot)
Windsurf
Any MCP-compatible client
Pairs With Cloudinary MCP
This server complements the official Cloudinary MCP servers by adding advertising-specific intelligence. Use both together:
Cloudinary MCP — Upload, manage, and transform media assets
Ad Creative MCP — Validate against ad platform specs and generate platform-specific derivatives
License
MIT
Available Tools
6 toolsbatch_resizeA
Generate Cloudinary transformation URLs for an entire platform package (e.g., "GDN Essential", "Meta Complete", "TTD Complete"). Returns all URLs at once.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Platform package name | |
| publicId | Yes | Cloudinary public_id of the source asset | |
| sourceWidth | No | Source asset width | |
| sourceHeight | No | Source asset height |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that all URLs are returned at once, but lacks details on performance, error handling, or expected output structure. Minimal behavioral context.
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?
Two sentences, front-loaded with action and scope. No redundant words, every part adds value.
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?
No output schema; description mentions 'returns all URLs at once' but lacks structure or order. For a batch tool with 4 parameters, more details on return format or behavior would improve completeness.
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 coverage is 100% with descriptions for all parameters. The description adds overall batch context but does not enhance meaning beyond the schema. Baseline applies.
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 generates Cloudinary transformation URLs for an entire platform package (e.g., 'GDN Essential'), specifying the action, resource, and scope. It distingues from siblings like 'generate_transform_url' which likely handles single URLs.
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 batch URL generation per package, but does not explicitly state when to use this tool vs alternatives (e.g., 'generate_transform_url' for single URLs). No exclusions or explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_transform_urlA
Generate a Cloudinary transformation URL with specific parameters. Use this for custom transforms not covered by resize_for_platform.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | Crop mode | |
| width | Yes | Target width | |
| format | No | Output format (auto, jpg, png, webp) | |
| height | Yes | Target height | |
| gravity | No | Gravity (auto, auto:faces, center, north, south, etc.) | |
| quality | No | Quality (auto, auto:best, auto:good, auto:eco, or 1-100) | |
| publicId | Yes | Cloudinary public_id | |
| background | No | Background (gen_fill, blurred, auto, or hex color) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'Generate a Cloudinary transformation URL', implying a read-only, non-destructive operation, but does not explicitly disclose side effects, authorization needs, rate limits, or idempotency. Minimal but not misleading.
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?
Two sentences with no unnecessary words. The first sentence states the purpose, the second gives usage guidance. Every sentence earns its place.
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?
Despite the tool having 8 parameters and no output schema, the description is minimal. It does not explain the return format (a URL string), provide examples, or mention error handling. Essential context for correct invocation is missing.
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 coverage is 100% with all parameters having descriptions in the schema. The tool description adds no additional meaning beyond what the schema already provides. Baseline 3 is appropriate.
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?
Description clearly states the tool generates a Cloudinary transformation URL with specific parameters, and explicitly distinguishes from sibling tool resize_for_platform by noting custom transforms. Verb 'Generate' and resource 'Cloudinary transformation URL' are specific and unambiguous.
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?
Description explicitly tells when to use this tool ('for custom transforms not covered by resize_for_platform'), providing clear context relative to a sibling. It does not mention other siblings or scenarios, but the guidance is sufficient for the primary alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_specsA
Get the exact specifications for an advertising platform or channel. Includes dimensions, aspect ratios, file size limits, and duration constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Channel name (e.g., "Facebook Feed Square") or platform category (e.g., "gdn", "social", "ttd") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals the tool is read-only and lists included data, but lacks details on permissions, rate limits, or side effects.
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 a single, well-front-loaded sentence that efficiently conveys the tool's function. Minor improvement possible by structuring the listed items.
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?
The description lists what the tool returns but does not specify the return format or structure. Given no output schema and low complexity, it is adequate but could be more complete.
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 does not add new parameter details beyond what the schema already provides via the 'channel' parameter description.
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 verb 'Get' and the resource 'specifications for an advertising platform or channel', listing what is included (dimensions, aspect ratios, etc.). It differentiates from sibling tools that handle resizing or validation.
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 when to use the tool (to retrieve specifications) but does not provide explicit guidance on when not to use it or detailed alternatives among siblings like batch_resize or validate_asset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packagesA
List all available platform packages with the channels included in each package.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description must carry full burden. It implies a read-only operation but does not explicitly state safety, permissions, or side effects. Lacks depth for a tool with no annotations.
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?
Single sentence, front-loaded with verb and resource, no unnecessary words. Perfectly concise and well-structured.
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?
For a simple, no-parameter list tool with no output schema, the description is nearly complete. Minor gap: no mention of return format or behavioral guarantees, but acceptable.
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?
No parameters in schema, baseline is 4 per rules. Description adds nothing about parameters, but none exist, so score is appropriate.
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 uses a specific verb 'list' and resource 'available platform packages', with additional detail about channels. Clearly distinguishes from sibling tools which involve resizing, URLs, specs, and validation.
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 implicitly indicates when to use: to list packages. No exclusions or alternatives needed as siblings are distinct. Without similar listing tools, guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_for_platformC
Generate a Cloudinary transformation URL to resize an asset for a specific advertising platform/channel. Uses AI generative fill for aspect ratios that differ significantly from the source.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Target channel name (e.g., "GDN Medium Rectangle", "Facebook Stories") | |
| publicId | Yes | Cloudinary public_id of the source asset | |
| useGenFill | No | Force AI generative fill (default: auto-detect based on aspect ratio difference) | |
| sourceWidth | No | Source asset width | |
| sourceHeight | No | Source asset height |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior fully. It states AI generative fill usage but omits key details: whether the tool actually resizes or only returns a URL, the output format, error handling, or permissions. The implication of mutation (resizing) is ambiguous.
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?
Two sentences are concise and efficient. The purpose is front-loaded, but the second sentence could be integrated more tightly. No unnecessary information.
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?
No output schema and no annotations, so description must compensate. It fails to explain the tool's output (e.g., URL object vs string), how to use the result, or any constraints. Edge cases (e.g., what if aspect ratio is similar?) are unaddressed.
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 descriptions cover all parameters (100% coverage). The description adds context for useGenFill (auto-detect based on aspect ratio difference), but does not enhance semantics for other parameters. Baseline 3 is appropriate.
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?
Description clearly states the tool generates a Cloudinary transformation URL for resizing for a specific platform. It distinguishes from general resize tools by specifying 'advertising platform/channel', but does not explicitly contrast with siblings like batch_resize or generate_transform_url.
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?
No guidance on when to use this tool vs alternatives. The description implies platform-specific use but does not mention exclusions, prerequisites, or appropriate contexts. Siblings exist but are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_assetA
Validate an image or video asset against 50+ advertising platform specs. Returns compatible channels, off-size channels with fix suggestions, and incompatible channels.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Asset type | |
| width | Yes | Asset width in pixels | |
| height | Yes | Asset height in pixels | |
| duration | No | Video duration in seconds (video only) | |
| fileSizeMB | No | File size in MB | |
| filterCategory | No | Filter results by platform category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool is a read-only validation (no creation or mutation), and outlines the return structure (compatible, off-size, incompatible channels). It does not mention side effects, auth, or rate limits, but this is acceptable for a non-destructive validation 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 two sentences with zero waste. The first sentence clearly states the action and scope, the second the output. It is front-loaded and every word earns its place.
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 no output schema, the description adequately explains the return format (compatible, off-size with suggestions, incompatible channels). The input schema is fully documented. It could mention edge cases (e.g., missing duration for video) but is otherwise sufficient for a validation tool.
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 context by stating the tool validates 'image or video asset' (linking to type parameter), but does not provide additional semantics beyond the schema's own descriptions (e.g., for filterCategory or duration). The description is sufficient but not enriching.
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 uses the specific verb 'validate' and resource 'image or video asset' against '50+ advertising platform specs'. It clearly distinguishes from sibling tools like batch_resize and resize_for_platform, which focus on resizing, and get_platform_specs, which retrieves specs. No ambiguity.
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 checking asset compatibility before resizing (by mentioning 'fix suggestions'), but does not explicitly state when to use versus alternatives. It provides clear context but lacks explicit when-not conditions or alternative references.
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.
6 tool updates
v1.0.0- First observed
batch_resize - First observed
generate_transform_url - First observed
get_platform_specs - First observed
list_packages - First observed
resize_for_platform - First observed
validate_asset
TDQS
Each tool has a distinct purpose: batch handling for packages, custom transforms, specs retrieval, package listing, single asset resize, and validation. No overlap in functionality.
All tool names follow consistent snake_case verb_noun pattern: batch_resize, generate_transform_url, get_platform_specs, list_packages, resize_for_platform, validate_asset.
6 tools is well-scoped for the domain, covering essential operations like listing packages, getting specs, resizing (single and batch), custom transforms, and validation.
Covers all core operations for ad creative transformation and validation. Minor gap: no tool for updating or deleting existing transforms, but this aligns with the server's focus on URL generation.
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
Creative-intelligence MCP for campaign strategy, ad builds, QA, and reporting.
A hosted MCP server for planning, scheduling, media, analytics, and social publishing.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
AutoRender's MCP server for media assets, transformations, delivery, and workflow automation.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceCloudinary MCP server enables AI agents to upload, manage, analyze transform, optimize and deliver media using Cloudinary’s API.10MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides an interface for interacting with the Cloudinary API to manage media assets and cloud configurations. It enables secure resource management through API keys and OAuth2 authentication within MCP-compliant environments.2,013MIT
- AlicenseAqualityDmaintenanceAn MCP server that turns Claude into a full image production studio, enabling creation, editing, resizing, and brand-consistent asset generation across multiple platforms.6MIT
- FlicenseNot gradedqualityBmaintenanceMCP server for managing AppLovin/Axon campaigns, including reporting, creative uploads, and campaign operations.-
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/itallstartedwithaidea/ad-creative-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server