unsplash-mcp
# Unsplash MCP Server
MCP (Model Context Protocol) server that exposes [Unsplash](https://unsplash.com/) photo and collection search as tools for AI agents.
Search and retrieve royalty-free photos — all from within your MCP-compatible client.
## Features
- 🖼️ **Photo Search** — high-quality photos with filters for orientation, color, content safety, and more
- 📁 **Collection Search** — discover curated photo collections by keyword
- 📥 **Download** — download single or batch photos to local files
- 🔒 **Content Filter** — optional stricter filtering for younger audiences
- 📄 **Pagination** — full control over page size and page number
## Quick Start
### 1. Get an Unsplash Access Key
Sign up for a free API key at [unsplash.com/developers](https://unsplash.com/developers).
### 2. Configure your MCP client
Add the following to your MCP client configuration (e.g. `mcp_config.json`):
```json
{
"unsplash": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/spideryzarc/unsplash-mcp",
"unsplash-mcp"
],
"env": {
"UNSPLASH_ACCESS_KEY": "YOUR_ACCESS_KEY_HERE"
}
}
}
```
> Replace `YOUR_ACCESS_KEY_HERE` with your actual Unsplash Access Key.
That's it! The server will be installed and started automatically by `uvx`.
## Available Tools
### `search_unsplash_photos`
Search for photos on Unsplash.
| Parameter | Type | Default | Description |
|------------------|---------|--------------|------------------------------------------|
| `query` | string | *(required)* | Search terms |
| `orientation` | string | — | `landscape`, `portrait`, `squarish` |
| `color` | string | — | e.g. `black_and_white`, `red`, `blue` |
| `content_filter` | string | `"low"` | `low` or `high` |
| `order_by` | string | `"relevant"` | `relevant` or `latest` |
| `collections` | string | — | Comma-separated collection IDs |
| `page` | number | `1` | Page number |
| `per_page` | number | `10` | Results per page (1–30) |
### `search_unsplash_collections`
Search for collections on Unsplash.
| Parameter | Type | Default | Description |
|------------|---------|--------------|------------------------------------------|
| `query` | string | *(required)* | Search terms |
| `page` | number | `1` | Page number |
| `per_page` | number | `10` | Results per page (1–30) |
### `download_unsplash_media`
Download a single photo from an Unsplash URL to a local file.
| Parameter | Type | Description |
|-------------|--------|--------------------------------------------|
| `url` | string | The Unsplash photo URL (e.g. `urls.regular`) |
| `dest_path` | string | Absolute local file path to save the file |
### `download_unsplash_media_batch`
Download multiple photos from Unsplash URLs in parallel.
| Parameter | Type | Description |
|-----------|-------|------------------------------------------------------|
| `files` | array | List of objects with `url` and `dest_path` per file |
## Development
```bash
# Clone and install locally
git clone https://github.com/spideryzarc/unsplash-mcp.git
cd unsplash-mcp
# Create a virtual environment (optional)
uv venv && source .venv/bin/activate
# Install in editable mode
uv pip install -e .
# Run the server directly
UNSPLASH_ACCESS_KEY="your_key" unsplash-mcp
```
## License
MIT
TDQS
Scored across 4 tools
The two search tools clearly target different entities (photos vs collections), and the two download tools are distinguished by single vs batch operation. Even though download and batch download overlap in purpose, their descriptions make the distinction explicit.
All tool names follow a consistent verb_noun pattern (search_unsplash_* and download_unsplash_*), using snake_case throughout. The naming clearly indicates both the action and the target, and the batch tool follows the same convention with a suffix.
With 4 tools, the server is well-scoped for searching and downloading Unsplash content. Each tool serves a distinct, necessary function, and the count feels appropriate for a focused media-access server.
The domain of Unsplash photo search and download is fully covered: users can search photos and collections, and download individual or multiple images. There are no obvious dead ends, as the search tools return URLs that feed directly into the download tools.