{"id":37869,"date":"2025-07-03T07:00:00","date_gmt":"2025-07-03T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=37869"},"modified":"2025-11-26T17:46:11","modified_gmt":"2025-11-27T01:46:11","slug":"automated-review-system-claude-desktop-cloudinary-mcp","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp","title":{"rendered":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Let\u2019s say you\u2019re reviewing a batch of product photos for an online marketplace. You want to upload them, tag them with AI, check for unsafe content, and generate metadata for accessibility without writing code or jumping between tools.<\/p>\n<p>This tutorial shows you how to build a local, AI-powered media review system using <strong>Claude Desktop<\/strong> and <strong>Cloudinary MCP servers<\/strong>.<\/p>\n<p>With this setup, you can speak natural language commands like:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Upload the image of the dress from my desktop and generate tags, alt text, and a safety score.\n<\/code><\/pre>\n<p>Claude will process the image, talk to Cloudinary, and return a clean, organized result automatically.<\/p>\n<h2>What We\u2019re Building<\/h2>\n<p>You\u2019ll create a local workflow that can:<\/p>\n<ol>\n<li>Upload images to Cloudinary from your desktop.<\/li>\n<li>Run AI-based analysis (auto-tagging, safety, OCR).<\/li>\n<li>Generate alt text, titles, and summaries.<\/li>\n<li>Save metadata locally in <code>.txt<\/code> or <code>.json<\/code> reports.<\/li>\n<li>Organize everything using natural language prompts inside Claude.<\/li>\n<\/ol>\n<p>Everything runs on your local machine without custom scripts or dashboards. Claude acts as your assistant, Cloudinary provides the infrastructure, and MCP connects the two.<\/p>\n<h2>Why Claude Desktop?<\/h2>\n<p>Claude Desktop is a local version of Anthropic\u2019s Claude language model. Unlike the browser-based Claude, it can interact with tools on your computer in real time through a system called <strong>MCP<\/strong>.<\/p>\n<p>This is what makes the entire workflow possible.<\/p>\n<h2>What is MCP?<\/h2>\n<p>MCP stands for <strong>Model Context Protocol<\/strong>. It\u2019s a new standard for connecting AI models to tools in a controlled, structured way. Instead of building plugins or hardcoding APIs, you run <strong>MCP servers<\/strong>, which are small, local services that declare what they do and how the AI can talk to them.<\/p>\n<p>As <a href=\"https:\/\/medium.com\/@elisowski\/mcp-explained-the-new-standard-connecting-ai-to-everything-79c5a1c98288\">Eric Lisowski explains in his article<\/a>, MCP <strong>gives AI context<\/strong> in a clear and safe way to interact with real systems like files, APIs, databases, and cloud services.<\/p>\n<p>Each MCP server defines a set of <strong>tools<\/strong> (or actions) and <strong>resources<\/strong> (like directories or cloud folders). Claude reads this definition and uses it when you give commands.<\/p>\n<h2>Why Cloudinary MCP?<\/h2>\n<p>Cloudinary\u2019s suite of MCP servers makes visual media management one of the most powerful use cases for MCP. These servers allow Claude to:<\/p>\n<ul>\n<li>Upload, delete, rename, and tag assets.<\/li>\n<li>Analyze images for unsafe content.<\/li>\n<li>Generate alt text or OCR text.<\/li>\n<li>Manage metadata and folder structure.<\/li>\n<li>Write environment or transformation settings.<\/li>\n<\/ul>\n<p>Instead of opening Cloudinary\u2019s dashboard or writing scripts, you just talk to Claude. Cloudinary\u2019s MCP servers do the work.<\/p>\n<h2>A Local AI Visual Media Pipeline<\/h2>\n<p>This tutorial focuses on using two MCP servers:<\/p>\n<ul>\n<li>\n<strong><code>filesystem<\/code>.<\/strong> Lets Claude access your Desktop and Downloads folders.<\/li>\n<li>\n<strong><code>cloudinary-asset-mgmt<\/code>.<\/strong> Lets Claude upload and organize images in Cloudinary.<\/li>\n<\/ul>\n<p>With just these two, you can build an end-to-end AI visual media workflow from Claude.<\/p>\n<h2>Setup Prerequisites<\/h2>\n<p>Before you can start using Claude to manage files and interact with Cloudinary, you need to install a few tools and prepare your environment. This ensures Claude can communicate with both your local files and your Cloudinary account.<\/p>\n<h3>1. Install Node.js.<\/h3>\n<p>Claude uses local MCP servers that run through Node.js. To install it:<\/p>\n<ul>\n<li>Visit <a href=\"https:\/\/nodejs.org\/\">https:\/\/nodejs.org<\/a>.<\/li>\n<li>Download and install the <strong>LTS version<\/strong> (Node 18 or newer).<\/li>\n<\/ul>\n<p>After installation, verify it by running:<\/p>\n<pre class=\"js-syntax-highlighted\"><span><code class=\"hljs shcb-wrap-lines\">node  -v\nnpx  -v\n<\/code><\/span><\/pre>\n<p>You should see version numbers for both.<\/p>\n<h3>2. Install Claude Desktop<\/h3>\n<p><a href=\"https:\/\/claude.ai\/download\">Claude Desktop<\/a> allows local AI actions through MCP servers. The browser version doesn\u2019t support this.<\/p>\n<p>Open it once after installation and leave it running. We\u2019ll configure it next.<\/p>\n<h3>3. Set macOS Folder Permissions<\/h3>\n<p>To let Claude access files in your Desktop or Downloads folder, you must grant it permission in macOS.<\/p>\n<ul>\n<li>Open <strong>System Settings<\/strong>.<\/li>\n<li>Go to <strong>Privacy &amp; Security &gt; Files and Folders<\/strong>.<\/li>\n<li>Look for <strong>Terminal<\/strong>, <strong>iTerm<\/strong>, or <strong>Claude<\/strong>.<\/li>\n<li>Make sure <strong>Desktop<\/strong> and <strong>Downloads<\/strong> are enabled.<\/li>\n<\/ul>\n<p>Next, check <strong>Privacy &amp; Security &gt; Full Disk Access<\/strong>:<\/p>\n<ul>\n<li>Enable it for Terminal or iTerm.<\/li>\n<li>Optionally enable it for Claude.<\/li>\n<\/ul>\n<p>These permissions are required for the file system MCP server to work correctly.<\/p>\n<h3>4. Create a Cloudinary Account<\/h3>\n<p>If you don\u2019t already have a Cloudinary account, sign up for a free one here:\n<a href=\"https:\/\/cloudinary.com\/users\/register_free\">https:\/\/cloudinary.com\/users\/register_free<\/a><\/p>\n<p>After signing up:<\/p>\n<ul>\n<li>Open your <strong>Cloudinary Dashboard<\/strong>.<\/li>\n<li>Copy your <strong>Cloud Name<\/strong>, <strong>API Key<\/strong>, and <strong>API Secret<\/strong>.<\/li>\n<li>Save them for use in the next step.<\/li>\n<\/ul>\n<h2>Configure MCP Servers<\/h2>\n<p>Now that Claude Desktop and Node.js are installed, the next step is to connect Claude to your file system and Cloudinary account using MCP servers.<\/p>\n<p>These servers run locally and give Claude safe, structured access to real tools like reading files from your Desktop or uploading images to Cloudinary.<\/p>\n<p>We\u2019ll start with two servers:<\/p>\n<ul>\n<li>\n<strong><code>filesystem<\/code>.<\/strong> Gives Claude access to local folders like Desktop and Downloads.<\/li>\n<li>\n<strong><code>cloudinary-asset-mgmt<\/code>.<\/strong> Allows Claude to upload and manage images in your Cloudinary account.<\/li>\n<\/ul>\n<p>Step 1. Open Claude\u2019s Config file.<\/p>\n<ol>\n<li>Open Claude Desktop.<\/li>\n<li>Go to <strong>Settings &gt; Developer<\/strong>.<\/li>\n<li>Click <strong>Edit Config<\/strong>.<\/li>\n<\/ol>\n<p>This will open the file <code>claude_desktop_config.json<\/code> in your default text editor.<\/p>\n<p>Step 2. Add the MCP server setup.<\/p>\n<p>Replace the contents of the file with the following:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n  <span class=\"hljs-attr\">\"mcpServers\"<\/span>: {\n    <span class=\"hljs-attr\">\"filesystem\"<\/span>: {\n      <span class=\"hljs-attr\">\"stdio\"<\/span>: <span class=\"hljs-literal\">true<\/span>,\n      <span class=\"hljs-attr\">\"command\"<\/span>: <span class=\"hljs-string\">\"npx\"<\/span>,\n      <span class=\"hljs-attr\">\"args\"<\/span>: &#91;\n        <span class=\"hljs-string\">\"-y\"<\/span>,\n        <span class=\"hljs-string\">\"@modelcontextprotocol\/server-filesystem\"<\/span>,\n        <span class=\"hljs-string\">\"\/Users\/eugenemusebe\/Desktop\"<\/span>,\n        <span class=\"hljs-string\">\"\/Users\/eugenemusebe\/Downloads\"<\/span>\n      ]\n    },\n    <span class=\"hljs-attr\">\"cloudinary-asset-mgmt\"<\/span>: {\n      <span class=\"hljs-attr\">\"command\"<\/span>: <span class=\"hljs-string\">\"npx\"<\/span>,\n      <span class=\"hljs-attr\">\"args\"<\/span>: &#91;\n        <span class=\"hljs-string\">\"-y\"<\/span>,\n        <span class=\"hljs-string\">\"--package\"<\/span>,\n        <span class=\"hljs-string\">\"@cloudinary\/asset-management\"<\/span>,\n        <span class=\"hljs-string\">\"--\"<\/span>,\n        <span class=\"hljs-string\">\"mcp\"<\/span>,\n        <span class=\"hljs-string\">\"start\"<\/span>\n      ],\n      <span class=\"hljs-attr\">\"env\"<\/span>: {\n        <span class=\"hljs-attr\">\"CLOUDINARY_CLOUD_NAME\"<\/span>: <span class=\"hljs-string\">\"your_cloud_name_here\"<\/span>,\n        <span class=\"hljs-attr\">\"CLOUDINARY_API_KEY\"<\/span>: <span class=\"hljs-string\">\"your_api_key_here\"<\/span>,\n        <span class=\"hljs-attr\">\"CLOUDINARY_API_SECRET\"<\/span>: <span class=\"hljs-string\">\"your_api_secret_here\"<\/span>\n      }\n    }\n  }\n}\n\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Notes:<\/p>\n<ul>\n<li>Replace the Cloudinary values in the <code>env<\/code> block with your actual credentials.<\/li>\n<li>Make sure the file paths in the <code>filesystem<\/code> section match your system exactly.<\/li>\n<li>Use absolute paths (not <code>~<\/code>) to avoid errors.<\/li>\n<\/ul>\n<p>Step 3. Restart Claude.<\/p>\n<p>Save the file, then:<\/p>\n<ol>\n<li>Quit Claude completely (Command + Q).<\/li>\n<li>Reopen Claude Desktop.<\/li>\n<\/ol>\n<p>Go to <strong>Settings &gt; Developer<\/strong> and you should see both servers listed with a <strong>Running<\/strong> badge.<\/p>\n<p>Claude may also prompt you to approve these tools. Click <strong>Allow Always<\/strong> to avoid being asked repeatedly.<\/p>\n<h2>Troubleshooting<\/h2>\n<p>If the servers fail to start or appear as \u201cdisconnected,\u201d check the following:<\/p>\n<h3>1. Node.js Version<\/h3>\n<p>Claude MCP servers require <strong>Node 18 or newer<\/strong>. Run this in Terminal:<\/p>\n<pre class=\"js-syntax-highlighted\"><span><code class=\"hljs shcb-wrap-lines\">node  -v\nnpx  -v\n<\/code><\/span><\/pre>\n<p>If Node.js is not installed or the version is too old, download the latest LTS from <a href=\"https:\/\/nodejs.org\/\">https:\/\/nodejs.org<\/a>.<\/p>\n<h3>2. macOS Folder Permissions<\/h3>\n<p>macOS may block access to folders like Desktop or Downloads. You must enable permissions manually:<\/p>\n<ul>\n<li>Open <strong>System Settings<\/strong>\n<\/li>\n<li>Go to <strong>Privacy &amp; Security &gt; Files and Folders<\/strong>\n<\/li>\n<li>Find <strong>Terminal<\/strong>, <strong>iTerm<\/strong>, or <strong>Claude<\/strong>\n<\/li>\n<li>Enable access for <strong>Desktop<\/strong> and <strong>Downloads<\/strong>\n<\/li>\n<\/ul>\n<p>Then go to <strong>Privacy &amp; Security &gt; Full Disk Access<\/strong>:<\/p>\n<ul>\n<li>Enable full disk access for Terminal or iTerm.<\/li>\n<li>Optionally enable it for Claude as well.<\/li>\n<\/ul>\n<h3>3. Test the Filesystem Server Manually<\/h3>\n<p>Try launching the server from Terminal to see if it works outside Claude:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-wrap-lines\"><span class=\"hljs-selector-tag\">npx<\/span>  <span class=\"hljs-selector-tag\">-y<\/span>  <span class=\"hljs-keyword\">@modelcontextprotocol<\/span>\/server-filesystem  \/Users\/eugenemusebe\/Desktop  \/Users\/eugenemusebe\/Downloads\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>You should see:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Secure MCP File System Server running on stdio\n<\/code><\/pre>\n<p>If you get an error here, fix it before trying again in Claude.<\/p>\n<h3>4. Still Having Issues?<\/h3>\n<p>If the server continues to disconnect or fail unexpectedly, Anthropic recently introduced <strong>Desktop Extensions<\/strong>, which outlines how MCP works under the hood and offers practical debugging tips.<\/p>\n<p>You can read more about it <a href=\"https:\/\/www.anthropic.com\/engineering\/desktop-extensions\">here<\/a>.<\/p>\n<p>This is a helpful reference if your configuration looks correct but Claude still won\u2019t connect to your local tools.<\/p>\n<h3>5. Confirm Server Setup<\/h3>\n<p>To verify everything is working, open Claude and go to: <strong>Settings &gt; Developer<\/strong>.<\/p>\n<p>You should see your MCP servers listed,as shown below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207763\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-1.png\" alt=\"running\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"876\" height=\"657\"\/><\/p>\n<p>If any server shows as \u201cfailed,\u201d check your config, Node.js version, and folder permissions before moving on.<\/p>\n<h2>Upload Visual Media to Cloudinary With Claude<\/h2>\n<p>With your servers running, Claude can now upload images from your local machine to Cloudinary using natural language commands.<\/p>\n<p>Claude reads the image using the <code>filesystem<\/code> server and uploads it using the <code>cloudinary-asset-mgmt<\/code> server.<\/p>\n<h3>Example Prompt<\/h3>\n<p>In Claude Desktop, try this:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Using the available tools, please upload the image at '\/Users\/eugenemusebe\/Desktop\/Demo Images\/dress.png' to my Cloudinary account. Put it inside a folder called 'mcp-tutorial-demo'.\n<\/code><\/pre>\n<p>You can also say:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Upload the dress image from my Desktop to Cloudinary under 'mcp-tutorial-demo'.\n<\/code><\/pre>\n<p>Claude will:<\/p>\n<ol>\n<li>Access the image on your Desktop.<\/li>\n<li>Create the folder in Cloudinary (if needed).<\/li>\n<li>Upload the file.<\/li>\n<li>Return a Cloudinary URL.<\/li>\n<\/ol>\n<h3>Approve Access<\/h3>\n<p>If this is your first time using a tool, Claude will ask for permission to access the file system and Cloudinary. Click <strong>Allow Always<\/strong> to avoid repeated prompts.<\/p>\n<h3>Confirm Upload<\/h3>\n<p>Visit your Cloudinary Media Library and check for a folder named <code>mcp-tutorial-demo<\/code>. The uploaded image should appear there.<\/p>\n<p>If all goes well, you should see a confirmation message similar to the one shown in the demo image below. It includes a summary with details such as:<\/p>\n<ul>\n<li>\n<strong>File name:<\/strong>  <code>dress.png<\/code>\n<\/li>\n<li>\n<strong>Folder:<\/strong>  <code>mcp-tutorial-demo<\/code>\n<\/li>\n<li>\n<strong>Dimensions:<\/strong>  <code>1024 \u00d7 1536 pixels<\/code>\n<\/li>\n<li>\n<strong>Format:<\/strong> PNG<\/li>\n<li>\n<strong>Asset ID and Public ID<\/strong> (unique identifiers)<\/li>\n<li>\n<strong>Access URLs<\/strong> (secure and standard)<\/li>\n<\/ul>\n<p>This confirms the image has been successfully uploaded and is ready for use in your applications or websites.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207765\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-2.png\" alt=\"outcome\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1379\" height=\"1028\"\/><\/p>\n<h2>Analyze Visual Media Content<\/h2>\n<p>After uploading your image, you can use Cloudinary\u2019s AI tools to analyze the content. This includes detecting objects, reading embedded text, tagging automatically, and flagging unsafe content.<\/p>\n<p>These tools are available through the <code>cloudinary-analysis<\/code> MCP server.<\/p>\n<h3>Example Prompt<\/h3>\n<p>Ask Claude:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Analyze the image I just uploaded in 'mcp-tutorial-demo' and return tags, alt text, and any safety issues.\n<\/code><\/pre>\n<p>Claude will:<\/p>\n<ol>\n<li>Use the Cloudinary URL from the previous upload.<\/li>\n<li>Run the image through Cloudinary\u2019s analysis tools.<\/li>\n<li>Return structured output such as tags, object labels, and moderation results.<\/li>\n<\/ol>\n<h3>What to Expect<\/h3>\n<p>The analysis typically includes:<\/p>\n<ul>\n<li>AI-generated tags<\/li>\n<li>Detected text (OCR)<\/li>\n<li>Alt text suggestions<\/li>\n<li>Safety labels (e.g., adult, medical, spoof)<\/li>\n<\/ul>\n<p>This metadata can be used later to improve accessibility, search, or filtering.<\/p>\n<h2>Generate Tags, Descriptions, and Alt Text<\/h2>\n<p>Once Claude returns raw analysis results, you can ask it to format that information into human-friendly content. This includes:<\/p>\n<ul>\n<li>Keyword tags for search.<\/li>\n<li>Descriptive alt text for accessibility.<\/li>\n<li>Brief content summaries or captions.<\/li>\n<\/ul>\n<p>Claude uses the output from the Cloudinary analysis tools and rewrites it in a more useful format.<\/p>\n<h3>Example Prompt<\/h3>\n<p>You can say:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Based on the analysis, generate descriptive alt text and keyword tags for the image.\n<\/code><\/pre>\n<p>Or:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Write a one-sentence caption and alt attribute using the AI tags and OCR output.\n<\/code><\/pre>\n<p>Claude will combine tags, detected objects, and any visible text into complete descriptions as shown below.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207766\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-3.png\" alt=\"Claude Analysis Output\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"3024\" height=\"1208\"\/><\/p>\n<ul>\n<li>\n<strong>Image Successfully Uploaded<\/strong>\n<\/li>\n<li>\n<strong>Location:<\/strong> <code>mcp-tutorial-demo<\/code> folder in your Cloudinary account<\/li>\n<li>\n<strong>Asset ID:<\/strong> <code>f75b2da1040e31af8f9c64abe178e069<\/code>\n<\/li>\n<li>\n<strong>Public URL:<\/strong> <a href=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207915\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-5.png\">https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207915\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-5.png<\/a>\n<\/li>\n<li>\n<strong>Dimensions:<\/strong> 1024 \u00d7 1536 pixels<\/li>\n<li>\n<strong>File Size:<\/strong> 2.67 MB<\/li>\n<\/ul>\n<h3>Image Analysis Tags<\/h3>\n<p>The Google tagging analysis identified the following tags with confidence scores:<\/p>\n<ol>\n<li>One-piece garment (95.8% confidence)<\/li>\n<li>Day dress (95.5% confidence)<\/li>\n<li>Dress (90.7% confidence)<\/li>\n<li>Cocktail dress (85.6% confidence)<\/li>\n<li>A-line (65.1% confidence)<\/li>\n<\/ol>\n<p>The analysis correctly identified this as a dress image, specifically recognizing it as a one-piece garment suitable for day wear, with characteristics of both day and cocktail dress styles. The A-line silhouette was also detected, indicating the dress\u2019s classic cut and shape.<\/p>\n<h3>Optional Add-ons<\/h3>\n<p>Some features like advanced tagging, OCR, or explicit content detection require Cloudinary add-ons.<\/p>\n<p>Before using those tools, visit the <a href=\"https:\/\/console.cloudinary.com\/pm\/marketplace\/all\">Cloudinary Marketplace<\/a>.<\/p>\n<p>Enable all the add-ons you\u2019d like to use (such as auto-tagging or AI vision). Once installed, confirm by checking the <strong>Installed Add-ons<\/strong> tab, as shown below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1764207769\/blog-Automated_Visual_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MCP-4.png\" alt=\"marketplace\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1911\" height=\"961\"\/><\/p>\n<h2>Save Media Reports Locally<\/h2>\n<p>After generating tags, alt text, and safety labels, you can ask Claude to save everything as a structured media report on your machine.<\/p>\n<p>This works through the <code>filesystem<\/code> MCP server, which allows Claude to create and write files locally.<\/p>\n<h3>Example Prompt<\/h3>\n<p>Try this:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Save a media report for the dress image as a .txt file on my Desktop.\n<\/code><\/pre>\n<p>Or:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Create a JSON file with the tags, alt text, and safety data in my Downloads folder.\n<\/code><\/pre>\n<p>Claude will:<\/p>\n<ol>\n<li>Format the data into <code>.txt<\/code> or <code>.json<\/code>.<\/li>\n<li>Write the file to your chosen folder.<\/li>\n<li>Confirm the save path and filename.<\/li>\n<\/ol>\n<p>Tip: Be specific with file names and formats. For example:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>Save this as 'dress-analysis.json' in \/Users\/eugenemusebe\/Desktop\/Reports\n<\/code><\/pre>\n<p>This helps keep your project folder organized.<\/p>\n<h2>Review Your Media Library in Cloudinary<\/h2>\n<p>At this point, your assets are uploaded, analyzed, and organized. To review everything, log in to your Cloudinary dashboard.<\/p>\n<h3>View Uploaded Media<\/h3>\n<p>Go to your <a href=\"https:\/\/console.cloudinary.com\/console\/media_library\">Media Library<\/a>. Navigate to the folder you used earlier, such as <code>mcp-tutorial-demo<\/code>.<\/p>\n<p>There you can:<\/p>\n<ul>\n<li>Preview uploaded images.<\/li>\n<li>See public URLs.<\/li>\n<li>View structured metadata (tags, alt text, AI analysis).<\/li>\n<\/ul>\n<h2>View Analysis and Metadata<\/h2>\n<p>To view analysis results:<\/p>\n<ol>\n<li>Click any image.<\/li>\n<li>Open the <strong>Metadata<\/strong> or <strong>Analysis<\/strong> tab.<\/li>\n<li>Review tags, moderation results, and OCR output.<\/li>\n<\/ol>\n<p>If Claude generates custom reports, those will be stored locally on your machine (in Desktop or Downloads, depending on your prompt).<\/p>\n<h2>Wrap Up and Final Demo<\/h2>\n<p>You\u2019ve just built a working, local AI-powered media review system using Claude Desktop and Cloudinary MCP servers. This workflow lets you manage, analyze, and document media files without writing any scripts. It\u2019s also flexible and easy to extend: Scale it for teams, automate metadata generation, or plug it into a larger content pipeline.<\/p>\n<p>Watch the full flow below:<\/p>\n<iframe loading=\"lazy\" src=\"https:\/\/player.cloudinary.com\/embed\/?cloud_name=hackit-africa&#038;public_id=claude-mcp-server%2Fimage%20upload&#038;profile=cld-default\" width=\"640\" height=\"360\" style=\"height: auto; width: 100%; aspect-ratio: 640 \/ 360;\" allow=\"autoplay; fullscreen; encrypted-media; picture-in-picture\" allowfullscreen frameborder=\"0\" ><\/iframe>\n<h2>What\u2019s Next?<\/h2>\n<p>You can explore additional Cloudinary MCP servers for structured metadata management, environment configuration, automated pipelines via MediaFlows, and more.<\/p>\n<p>Check out our tools and documentation <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_llm_mcp\">here<\/a>.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":87,"featured_media":37871,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[337,336],"class_list":["post-37869","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-accessibility","tag-ai"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-03T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-27T01:46:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP\",\"datePublished\":\"2025-07-03T14:00:00+00:00\",\"dateModified\":\"2025-11-27T01:46:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\"},\"wordCount\":11,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA\",\"keywords\":[\"Accessibility\",\"AI\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\",\"url\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\",\"name\":\"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA\",\"datePublished\":\"2025-07-03T14:00:00+00:00\",\"dateModified\":\"2025-11-27T01:46:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp","og_locale":"en_US","og_type":"article","og_title":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP","og_url":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp","og_site_name":"Cloudinary Blog","article_published_time":"2025-07-03T14:00:00+00:00","article_modified_time":"2025-11-27T01:46:11+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP","datePublished":"2025-07-03T14:00:00+00:00","dateModified":"2025-11-27T01:46:11+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp"},"wordCount":11,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","keywords":["Accessibility","AI"],"inLanguage":"en-US","copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp","url":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp","name":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","datePublished":"2025-07-03T14:00:00+00:00","dateModified":"2025-11-27T01:46:11+00:00","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/automated-review-system-claude-desktop-cloudinary-mcp#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Automated Visual Media Review System Using Claude Desktop and Cloudinary MCP"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1751412335\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog\/Automated_Media_Review_System_Using_Claude_Desktop_and_Cloudinary_MC-blog.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/37869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=37869"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/37869\/revisions"}],"predecessor-version":[{"id":39442,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/37869\/revisions\/39442"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/37871"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=37869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=37869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=37869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}