image from Midjourney, amusingly prompted as 'cheesecore'
I'm always interested in how new technology can help us make our esoteric tasks a little less manual. Speaking of esoteric tasks, did you know that I curate a machine learning model to classify types of cheese? It was done to power a mobile app like this:
The trick with creating custom ML models is that you need to train a model with a bunch of good-quality images so that it can learn about the categories you want to test. In this case, I wanted to be able to walk into a cheese shop and, via my custom ML-enabled mobile app, determine the type of cheese that was available out of the six standard categories of cheese worldwide: bloomy, semi-soft, hard, fresh, blue, and washed-rind. Yes, this is important work.
But digging through images online and manually dumping them into folders is a pain. Alternately, walking into your local cheese shop and shooting video to later split up into images using ffmp, all the while telling the sales people that "I'm fine, just building up a dataset for my ML model", is kind of embarassing. Isn't there a better way?
Live action view of Jerry impersonating a ML model
Turns out ... YES! Recently, Cloudinary released an MCP server solution that would allow me to perform a quick web scrape to gather images of types of cheese that I can curate and upload, tagged, to my account. It's the perfect use case! Make the images come to you using an agent, and make that agent work nicely with Cloudinary, your friend for media management. All while never leaving the comfort and safety of your IDE!
Meet the Cheesy MCP — the AI-powered agent that scrapes free, Creative-Commons licensed, high-quality cheese photos and delivers them straight to your Cloudinary account.
Of course, this system can be used with images other than cheese! Use it for a sweet way to curate other image categories too.
What Is this MCP thing?
The Model Context Protocol, launched by Anthropic last November, is the new hotness power behind AI agents, enabling them to independently function to perform actions set by a user using an agreed-upon protocol. An example is asking an agent to crawl your mailbox periodically to gather receipts to build a monthly expense report, or periodically prowl the web for images of wedding cakes to add to a Pinterest board.
Cloudinary has entered the field with an offering allowing you to connect your AI tools like Claude or Cursor to the Cloudinary service for automated asset management. Take a look at the open source, free servers listed on GitHub as they continue to develop and evolve.
What Does This Have To Do With Cheese?
Honestly, what a question. What doesn't have to do with cheese? Still, glad you asked! I built a Python project to leverage this MCP tool from within Cursor, my IDE of choice. The agent surfs Google, bringing me images that I can curate ad hoc, with a nice automation workflow done via chat in Cursor. Once the images are available, I approve them and check their metadata for proper tagging, and say 'upload' in chat. The images are then uploaded right on up to my Cloudinary account, all tagged up and with metadata intact.
Up and Running
There are a few things you need to do to leverage these servers and a few different ways you can do it. As a Cursor user, I was happy to simply use the 'add to Cursor' buttons available for us:
For Cursor users, you can install MCP servers with one click using Cursor deeplinks:
The following MCP servers are available for Cloudinary:
Server Name | Description | GitHub Repo | Install |
---|---|---|---|
Asset Management | Upload, manage, and transform your media assets with advanced search and organization capabilities | @cloudinary/asset-management | ![]() |
Environment Config | Configure and manage your Cloudinary environment settings, upload presets, and transformations | @cloudinary/environment-config | ![]() |
Structured Metadata | Create, manage, and query structured metadata fields for enhanced asset organization and searchability | @cloudinary/structured-metadata | ![]() |
Analysis | Leverage AI-powered content analysis, moderation, and auto-tagging capabilities for your media assets | @cloudinary/analysis | ![]() |
MediaFlows | Build and manage low-code workflow automations for images and videos with AI-powered assistance | MediaFlows MCP | ![]() |
Make sure you have your Cloudinary account ready with your API credentials handy as you'll need to update the environment variables with your actual credentials after installation.
Start Your Engines
Once I installed the MCP JSON into Cursor, it was picked up and I was invited to configure the server. Add your credentials right into the MCP settings:
Once ready, Cursor helped me create a Python script to scrape images and dump them into my local folder. By far this was the most finicky bit - web scraping is an inexact science. Once that is done, the system prompts me to curate them:
After the scrape is done and 'candidates' are offered for upload, I am invited to interact with the system via chat, telling the agent to 'upload'. I can check and, if necessary, overwrite any tags for the images.
And once I give it the go-ahead, the system makes the handshake with my Cloudinary account and uploads the tagged images after I ensure they are correct:
Fresh, not moldy!
It's a new experience for me to be able to use my IDE as an agent, making handshakes between systems that I can control using code and this protocol. And honestly it took a bit of a mindshift to understand that web scraping can be done this way, rather than a plain cron job + Python or web app. But it's rather powerful, wouldn't you say?
Give the new Cloudinary MCP servers a try, and let me know what you build. You can check out my codebase on GitHub.
About me: I'm the Director of Developer Relations at Cloudinary. Stay tuned for esoteric demos and sign up to enjoy the generous free tier of this top-notch image and video platform!
Love seeing agents actually power real-world data tasks in the IDE, not just theory - I've been building AI workflows lately and it's such a game changer.
Have you considered using a setup like this for non-image assets too, or is Cloudinary only focused on media for now?