Skip to main content

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

  1. Create a free app at shutterstock.com/account/developers/apps. Its key and secret are enough to search.
  2. 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.view and licenses.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, and tested against a fake of the API that checks what the server sends, through a real MCP client. It hasn't yet been run against the live API; 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.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shutterstock-mcp 0.1.0
File Size Uploaded Provenance Actions
shutterstock_mcp-0.1.0.tar.gz 15.8 kB Without provenance Details for shutterstock_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for shutterstock-mcp 0.1.0
File Interpreter ABI Platform Actions
shutterstock_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for shutterstock_mcp-0.1.0-py3-none-any.whl

Total release size: 28.7 kB

Release files / shutterstock_mcp-0.1.0.tar.gz

Download URL shutterstock_mcp-0.1.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b5ad23802e31e48ba5d8411968f7c90890d3e6502b8df7c57311985d90e597b8
BLAKE2b-256 checksum
How to use checksums
cdba9c023b6520136a7fc9e237b703a7632e2ff5c0dd11679f40cc3eeae992d4
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.0-py3-none-any.whl

Download URL shutterstock_mcp-0.1.0-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ce0780e5fd2339a76160f7375857f03509d73d0703ee1c02235af28fca71bf0
BLAKE2b-256 checksum
How to use checksums
1a0f36ef4a7c27cdd2391e8507a68dcbc6349e56b80728884c8a537a358ad256
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.0

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page