VOOZH about

URL: https://glama.ai/mcp/servers/cevatkerim/unsplash-mcp

⇱ unsplash-mcp by cevatkerim | Glama


Unsplash MCP Server

An MCP (Model Context Protocol) server for fetching photos from Unsplash with proper attribution. Designed for LLMs building content pages that need properly credited images.

Features

  • Search Photos - Find photos by keyword with filters (color, orientation)

  • Random Photos - Get random photos for variety in content

  • Download Tracking - Compliant with Unsplash API guidelines

  • Full Attribution - Every photo includes ready-to-use attribution text and HTML

  • LLM-Optimized - Pre-formatted attribution strings for easy embedding

Related MCP server: Unsplash API MCP Server

Why This Server?

Unsplash requires proper attribution when using their photos. This server makes it easy by including:

  • attribution_text: Plain text like "Photo by John Doe on Unsplash"

  • attribution_html: Full HTML with proper links for web pages

Photo by <a href="https://unsplash.com/@johndoe">John Doe</a> on <a href="https://unsplash.com">Unsplash</a>

Installation

Prerequisites

Quick Start

# Clone the repository
git clone https://github.com/cevatkerim/unsplash-mcp.git
cd unsplash-mcp

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install fastmcp httpx python-dotenv

# Set your API key
echo "UNSPLASH_ACCESS_KEY=your_key_here" > .env

# Run the server
fastmcp run server.py

Configuration

Claude Code

Add to your ~/.claude.json (user-level) or project .mcp.json:

{
 "mcpServers": {
 "unsplash": {
 "type": "stdio",
 "command": "/path/to/unsplash-mcp/.venv/bin/fastmcp",
 "args": ["run", "/path/to/unsplash-mcp/server.py"],
 "env": {
 "UNSPLASH_ACCESS_KEY": "your_access_key_here"
 }
 }
 }
}

Cursor

Add to your Cursor MCP settings:

{
 "mcpServers": {
 "unsplash": {
 "command": "/path/to/unsplash-mcp/.venv/bin/fastmcp",
 "args": ["run", "/path/to/unsplash-mcp/server.py"],
 "env": {
 "UNSPLASH_ACCESS_KEY": "your_access_key_here"
 }
 }
 }
}

Windsurf / Cline

Add to your MCP configuration:

{
 "unsplash": {
 "command": "/path/to/unsplash-mcp/.venv/bin/fastmcp",
 "args": ["run", "/path/to/unsplash-mcp/server.py"],
 "env": {
 "UNSPLASH_ACCESS_KEY": "your_access_key_here"
 }
 }
}

Tools

search_photos

Search for photos by keyword with optional filters.

Parameters:

Parameter

Type

Default

Description

query

string

required

Search keyword(s)

page

int

1

Page number

per_page

int

10

Results per page (1-30)

order_by

string

"relevant"

Sort: "relevant" or "latest"

color

string

null

Color filter (see below)

orientation

string

null

"landscape", "portrait", "squarish"

content_filter

string

"low"

Safety: "low" or "high"

Color options: black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue

Example:

search_photos("mountain sunset", per_page=5, orientation="landscape")

get_random_photos

Get random photos, optionally filtered by keyword.

Parameters:

Parameter

Type

Default

Description

query

string

null

Optional keyword filter

count

int

1

Number of photos (1-30)

orientation

string

null

"landscape", "portrait", "squarish"

content_filter

string

"low"

Safety: "low" or "high"

Example:

get_random_photos(query="nature", count=3, orientation="landscape")

track_download

Track a photo download (required by Unsplash API guidelines).

Parameters:

Parameter

Type

Description

photo_id

string

Photo ID from search results

Example:

track_download("abc123xyz")

Response Format

Each photo includes:

{
 "id": "abc123",
 "description": "A beautiful mountain landscape",
 "alt_description": "snow-capped mountains under blue sky",
 "urls": {
 "raw": "https://images.unsplash.com/...",
 "full": "https://images.unsplash.com/...",
 "regular": "https://images.unsplash.com/...", # Recommended for web
 "small": "https://images.unsplash.com/...",
 "thumb": "https://images.unsplash.com/..."
 },
 "width": 4000,
 "height": 3000,
 "color": "#a3c4f3", # Dominant color for placeholders
 "blur_hash": "LKO2?U%2Tw=w...", # For progressive loading

 # Attribution (REQUIRED when using the image)
 "photographer_name": "John Doe",
 "photographer_username": "johndoe",
 "photographer_url": "https://unsplash.com/@johndoe?utm_source=...",
 "photo_url": "https://unsplash.com/photos/abc123?utm_source=...",

 # Ready-to-use attribution
 "attribution_text": "Photo by John Doe on Unsplash",
 "attribution_html": "Photo by <a href=\"...\">John Doe</a> on <a href=\"...\">Unsplash</a>"
}

Usage Example

When an LLM builds a content page:

  1. Search for relevant images:

    photos = search_photos("coffee shop interior", per_page=5)
  2. Select a photo and use it:

    <img src="{photo.urls.regular}" alt="{photo.alt_description}">
    <p class="attribution">{photo.attribution_html}</p>
  3. If offering download, track it:

    download_url = track_download(photo.id)

Unsplash API Guidelines

This server helps you comply with Unsplash API guidelines:

  1. Attribution - Always credit the photographer and Unsplash (use attribution_html)

  2. Hotlinking - Use the provided URLs directly (enables view tracking)

  3. Download tracking - Call track_download() when users download images

Rate Limits

  • Demo mode: 50 requests/hour

  • Production: 5,000 requests/hour (after approval)

License

MIT License - See LICENSE file.

Contributing

Contributions welcome! Please feel free to submit a Pull Request.

Support

If you find this project useful, consider buying me a coffee!

Acknowledgments

  • Unsplash for providing an amazing free photo API

  • FastMCP for the MCP server framework

A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cevatkerim/unsplash-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server