shutterstock-mcp
An MCP server for Shutterstock. It lets Claude and other assistants search Shutterstock's photos, illustrations, vectors, video footage, music and editorial news photos, look at previews, find similar images, keep picks in collections, and, if you turn it on, license what you've chosen with your own subscription.
Why
Finding the right stock asset is slow, manual work: search, scroll, preview, compare, search again. An assistant helping with a design, a deck, a video edit or an article can't reach Shutterstock at all. Shutterstock has no official MCP server, and what exists is a demo that returns page links.
What you can ask for
- "Find warm, candid photos of a small team in an office, no faces, landscape, that would work on a dark website header." The assistant searches, looks at the previews, and shows you the ones that fit.
- "Find a 15 to 30 second drone shot of a coastline in 4K, and an uplifting instrumental track around 100 BPM to go under it."
- "Find editorial photos of last night's final for the match report."
- "Here's a sketch of the layout we want. Find stock photos that look like it." This is reverse image search, from a file or a URL.
- "Find more like this one." That works for images and video.
- "Put these five in the Spring campaign collection" for the team to review.
- "License the second one at full size." This needs licensing turned on; see below.
Setup
- Create a free app at shutterstock.com/account/developers/apps. Its key and secret are enough to search.
- For collections, license history and licensing, the server also needs an OAuth access token for your account. You can generate one from the same app page, with the scopes you want:
user.view,collections.view,collections.edit,licenses.viewandlicenses.create.
Claude Code
claude mcp add shutterstock -e SHUTTERSTOCK_API_KEY=… -e SHUTTERSTOCK_API_SECRET=… -- uvx shutterstock-mcp
Claude Desktop, Cursor and others
{
"mcpServers": {
"shutterstock": {
"command": "uvx",
"args": ["shutterstock-mcp"],
"env": {
"SHUTTERSTOCK_API_KEY": "…",
"SHUTTERSTOCK_API_SECRET": "…"
}
}
}
}
With an OAuth token, set SHUTTERSTOCK_API_TOKEN instead of the key and secret.
Licensing
Licensing spends your subscription's downloads or credits and can't be undone, so the license_asset tool doesn't exist unless you set SHUTTERSTOCK_ENABLE_LICENSING=true. When it's on, it's marked as destructive, so clients that respect tool hints ask you before each use. Editorial photos are licensed only once you've confirmed they're for news or commentary.
Tools
| Tool | Needs | |
|---|---|---|
search_images |
key | Photos, illustrations and vectors, by orientation, colour, people, licence and more |
search_videos |
key | Footage, by resolution, length, aspect ratio and orientation |
search_music |
key | Tracks, by genre, mood, instruments, tempo, length and vocals |
search_editorial |
key | News, sport and entertainment photos, by date, cleared for a country |
get_asset |
key | Full details of one asset |
find_similar |
key | More images or videos like one from Shutterstock |
reverse_image_search |
key | Shutterstock images like one of your own |
view_preview |
key | The watermarked preview, as an image the assistant can look at |
list_subscriptions |
token | Your subscriptions and what's left on them |
list_licenses |
token | What you've licensed before |
list_collections, get_collection |
token | Your collections and what's in them |
create_collection, add_to_collection |
token | Make and fill collections |
license_asset |
token, opt-in | License an image, clip, track or editorial photo |
Free Shutterstock apps search a smaller part of the library, see only the first results of a search, and are limited to about 100 requests an hour.
Status
Built from Shutterstock's API reference and its official SDK's models, checked against the live API, and tested against a fake of the API that checks what the server sends, through a real MCP client. If something doesn't match, please open an issue.
Development
uv venv && uv pip install -e . pytest anyio ruff mypy
pytest && ruff check . && mypy
License
MIT. Not affiliated with Shutterstock. Shutterstock is a trademark of Shutterstock, Inc.
Metadata
Release files for shutterstock-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| shutterstock_mcp-0.1.1.tar.gz | 15.8 kB | Without provenance | Details for shutterstock_mcp-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| shutterstock_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for shutterstock_mcp-0.1.1-py3-none-any.whl |
Total release size: 28.7 kB
Release files / shutterstock_mcp-0.1.1.tar.gz
| Download URL | shutterstock_mcp-0.1.1.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ae48a2ac8282f5026bc6dae49321daaf916515310d40a9be10cbd275fdcec3dc
|
|
BLAKE2b-256 checksum How to use checksums |
d210f7afcb63099d255faaf7d4f053f59d2756d0acf0dc8de84055a6e1c05b1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / shutterstock_mcp-0.1.1-py3-none-any.whl
| Download URL | shutterstock_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e3c8a8d83032b1195a7785a79965b039c32c8a71017de576af5c0a625b2a6dd
|
|
BLAKE2b-256 checksum How to use checksums |
71847be2f1fc6308fcde17351b781e15f6290a71e73ce52dc145929ab6e56bf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for shutterstock-mcp 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.