mcpField
U
Unsplash MCP Server

Unsplash MCP Server

Local
github.com/shariqriazzSearch1Updated 79w ago

About Unsplash MCP Server

Unsplash MCP Server exposes Unsplash photo search and download through MCP tools. It is intended for MCP clients that need query-based photo results or local copies at a chosen resolution.

Key features

  1. 01Search photos by query
  2. 02Paginate and filter by orientation
  3. 03Download at four resolutions
  4. 04Save files in the workspace `unsplash/` folder
  5. 05Requires an Unsplash Access Key

Use cases

  1. 01Find photos matching a search term
  2. 02Filter results by page or orientation
  3. 03Download a selected photo at a chosen resolution

MCP support

It exposes `search_photos` and `download_photo` tools to MCP clients. Photo search uses query, pagination, and orientation filters; downloads are saved to the workspace.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Unsplash MCP Server

This project implements a Model Context Protocol (MCP) server that provides tools for interacting with the Unsplash API, allowing users to search for and download photos.

Unsplash MCP Server Badge (Note: Replace @shariqriazz with the correct username/namespace if needed)

Git Repository: https://github.com/shariqriazz/upsplash-mcp-server (Please update if this is not the correct URL)

Features

  • Provides MCP tools to interact with the Unsplash API.
  • Search for photos based on queries, pagination, and orientation.
  • Download photos at specified resolutions (raw, full, regular, small).
  • Requires an Unsplash Access Key configured via environment variables.
  • Downloads photos to a local unsplash/ directory within the workspace.

Tools Provided

  • search_photos: Searches for photos on Unsplash.

    • Input Schema:
      {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "The search term(s)." },
          "page": { "type": "number", "description": "Page number (default: 1).", "default": 1 },
          "per_page": { "type": "number", "description": "Items per page (default: 10, max: 30).", "default": 10, "maximum": 30 },
          "orientation": { "type": "string", "enum": ["landscape", "portrait", "squarish"], "description": "Filter by orientation." }
        },
        "required": ["query"]
      }
      
    • Output: Returns JSON data containing search results and a formatted text summary with image links.
  • download_photo: Downloads an Unsplash photo to the workspace's unsplash/ folder after triggering the download tracking event.

    • Input Schema:
      {
        "type": "object",
        "properties": {
          "photo_id": { "type": "string", "description": "The ID of the photo to download." },
          "resolution": { "type": "string", "enum": ["raw", "full", "regular", "small"], "description": "Desired resolution (default: raw).", "default": "raw" },
          "filename": { "type": "string", "description": "Optional filename (e.g., my-image.jpg). Defaults to sanitized description or {photo_id}.jpg." }
        },
        "required": ["photo_id"]
      }
      
    • Output: Returns a success message with the path to the downloaded file.

(Note: Schemas are illustrative. The server exposes the exact schemas via MCP.)

Prerequisites

Setup & Installation

  1. Clone the Repository:
    git clone https://github.com/shariqriazz/upsplash-mcp-server.git # Update URL if needed
    cd upsplash-mcp-server
    
  2. Install Dependencies:
    bun install
    
  3. Configure Environment:
    • Create a .env file in the project root (or copy .env.example if provided).
    • Add your Unsplash Access Key:
      UNSPLASH_ACCESS_KEY="YOUR_UNSPLASH_ACCESS_KEY"
      
  4. Build the Server:
    bun run build
    
    This compiles the TypeScript code to build/index.js.

Usage (Standalone / NPX)

Standalone (Local Build):

You can run the compiled server directly using bun or node. Ensure the UNSPLASH_ACCESS_KEY environment variable is set in your shell or .env file.

# Ensure UNSPLASH_ACCESS_KEY is set
bun run build/index.js
# OR
node build/index.js

Using NPX (If Published to npm):

If this package is published to npm (e.g., as unsplash-mcp-server), you could run it directly using npx.

# Ensure UNSPLASH_ACCESS_KEY is set in your environment
npx -y unsplash-mcp-server

Note: This requires the package to be published on npm under the specified name.

Running with Cline

  1. Configure MCP Settings: Add or update the configuration in your Cline MCP settings file (e.g., .roo/mcp.json or global settings). You have two primary options:

    Option A: Using Bun/Node (Direct Path - Recommended for Local Development)

    This method uses bun (or node) to run the compiled script directly from your local project directory.

    {
      "mcpServers": {
        "unsplash-mcp-server": {
          "command": "bun", // Or "node"
          "args": [
            // Use the absolute path to the compiled index.js in your project
            "/path/to/your/upsplash-mcp-server/build/index.js"
          ],
          "env": {
            // Required: Ensure this matches your .env or is set here
            "UNSPLASH_ACCESS_KEY": "YOUR_UNSPLASH_ACCESS_KEY" // Replace with your actual key
          },
          "disabled": false,
          "alwaysAllow": [
             "search_photos",
             "download_photo"
             // "trigger_download" // Include if this tool exists and is separate
          ],
          "timeout": 3600 // Optional: Timeout in seconds (e.g., 1 hour)
        }
        // Add other servers here...
      }
    }
    
    • Important: Replace /path/to/your/upsplash-mcp-server/build/index.js with the correct absolute path on your system.
    • Replace "YOUR_UNSPLASH_ACCESS_KEY" with your actual key. Remove comments from the actual JSON file.

    Option B: Using NPX (Requires Package Published to npm)

    This method uses npx to automatically download and run the server package from the npm registry. This is convenient if you don't want to clone the repository locally or prefer using the published version.

    {
      "mcpServers": {
        "unsplash-mcp-server": {
          "command": "npx",
          "args": [
            "-y", // Auto-confirm installation
            "unsplash-mcp-server" // Assumed npm package name - update if different
          ],
          "env": {
            // Required: Ensure this is set here or in your environment
            "UNSPLASH_ACCESS_KEY": "YOUR_UNSPLASH_ACCESS_KEY" // Replace with your actual key
          },
          "disabled": false,
          "alwaysAllow": [
             "search_photos",
             "download_photo"
          ],
          "timeout": 3600 // Optional: Timeout in seconds
        }
        // Add other servers here...
      }
    }
    
    • Ensure the env block contains the necessary UNSPLASH_ACCESS_KEY.
    • Update "unsplash-mcp-server" in args if the published npm package name is different.
  2. Restart/Reload Cline: Cline should detect the configuration change and start the server based on your chosen method.

  3. Use Tools: You can now use the search_photos and download_photo tools via Cline.

Development

  • Watch Mode: bun run watch (Typically starts the server and restarts on file changes)
  • Linting: bun run lint (Checks code for style and potential errors)
  • Formatting: bun run format (Formats code according to project standards)

(Note: Assumes standard package.json scripts like watch, lint, format. Update if your scripts differ.)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.