MCP server exposing 29 Unsplash API tools for photos, search, users, collections, topics, stats, and user profile management with built-in compliance.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We ran the install command below but it didn't respond within our test window โ this can mean a slow first-time install rather than a real problem.
npx -y @hanoak/unsplash-mcp-serverNo response to initialize.
This is an experimental automated check and can have false negatives โ missing environment variables, a slow cold install, etc. It doesnโt necessarily mean somethingโs wrong. Last checked 4d ago.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Unsplash MCP Server.
unsplash_random_photoportrait`\
unsplash_list_photosThe latest featured photos, paginated.
unsplash_get_photoA single photo by ID or slug, full detail.
unsplash_photo_statisticsDownload/view totals for a photo over N days.
unsplash_track_downloadRegisters a download on real use; returns a fresh, usable download URL.
unsplash_search_photoseditorial`\
A production-ready Model Context Protocol (MCP) server for the Unsplash API. It gives AI assistants โ Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, and any MCP client โ tools to search and fetch Unsplash photos, collections, topics, users, and stats, with Unsplash-guideline compliance built in (ready-to-use attribution and download tracking). Sign in once via OAuth to also manage your own profile, collections, and photo metadata.
[!IMPORTANT] Unofficial project. This is not affiliated with, endorsed by, or sponsored by Unsplash. "Unsplash" is a trademark of its respective owner. You use it under your own Unsplash API account and are responsible for complying with the Unsplash API Terms & Guidelines.
me tools once you sign in.unsplash_track_download tool for the download-tracking guideline.content_filter=high by default on search and random photos.raw/full/regular/small/thumb sizes, plus a raw imgix base for custom sizes (?w=&h=&q=&fm=&fit=).isError results the model can recover from, plus retries/backoff, timeouts, 403 hourly-limit handling, and rate-limit surfacing.npx, no telemetry.Register an application at unsplash.com/developers โ New Application โ accept the API terms โ copy its Access Key (not the Secret Key). New apps start on the Demo tier (50 requests/hour); the Production tier (5,000/hour) requires Unsplash's review from your app dashboard. See Rate limits.
Claude Desktop โ edit claude_desktop_config.json:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart the client. See Configuration for every supported variable.
Claude Code (CLI):
Cursor โ ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project): use the exact same mcpServers block as Claude Desktop above.
Windsurf โ ~/.codeium/windsurf/mcp_config.json: same mcpServers block as Claude Desktop above.
VS Code โ .vscode/mcp.json (note the top-level key is servers, not mcpServers):
Any other MCP client โ run the server over stdio with:
Point your client's stdio transport at command: npx, args: ["-y", "@hanoak/unsplash-mcp-server"], and pass the key via env.
Restart your client and ask:
"Find me a photo of mountains on Unsplash and show the attribution."
A typical flow: the model calls unsplash_search_photos, picks a result, presents the image with its attribution, and calls unsplash_track_download when it actually uses the photo.
You: Find a landscape photo of a foggy pine forest and credit the photographer.
Assistant: (calls
unsplash_search_photoswithquery: "foggy pine forest",orientation: "landscape", picks the best result, then callsunsplash_track_downloadwith itsdownload_location) Here's a great match โ Photo by Jane Doe on Unsplash โ along with a ready-to-embed credit line and the image URL.
Each tool returns a compact JSON payload. Here's the shape of a single photo result (illustrative values):
Every tool result includes a rate_limit object (limit, remaining) read from the Unsplash response headers. List/search tools wrap results in photos/collections/users/topics arrays with pagination fields (total, total_pages, count, page, per_page).
Configuration is entirely via environment variables โ no config files, no flags for secrets.
| Environment variable | Required | Description |
|---|---|---|
UNSPLASH_ACCESS_KEY | yes | Your Unsplash API access key. The server exits at startup with a clear message if it is missing or blank. |
UNSPLASH_APP_NAME | recommended | Your registered Unsplash app name, used as the attribution utm_source. Defaults to a generic value (with a startup warning) if unset. |
UNSPLASH_SECRET_KEY | only for login | Your Unsplash app's secret key. Only needed to run login โ see OAuth sign-in. |
UNSPLASH_OAUTH_REDIRECT_URI | only for login | Override the default http://localhost:8734/callback used by login. Must match the redirect URI registered on your Unsplash app. |
LOG_LEVEL | no | debug | info | warn | error (default info). All logs go to stderr; stdout carries only the MCP protocol. |
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/hanoak-unsplash-mcp-server)<a href="https://allmcps.com/mcp/hanoak-unsplash-mcp-server"><img src="https://allmcps.com/api/badge/hanoak-unsplash-mcp-server?style=directory" alt="Unsplash MCP Server on AllMCPs" /></a>