Photo Mosaic & AI Collage Maker - Collager.ai

Photo mosaic maker and AI photo collage maker: turn your own photos into a mosaic or a collage.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
70%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,492Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "ai-collage-maker": {
      "url": "https://collager.ai/mcp"
    }
  }
}

Remote endpoints

https://collager.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢make_shape_collage(shape, photo_urls, photos, gap_pct, background)

Builds a photo collage in the shape of a heart, a number (age, anniversary, year), a word, a star, a flower and more from the user's photos, and returns a watermarked preview within seconds. Use when the user asks for a heart collage, a birthday/anniversary number collage, a 'photo collage in the shape of ...', or a collage from several photos. Pass the photos as public links in photo_urls, or as files the user attached (photos). 1 to 300 photos; if there are fewer photos than cells, photos repeat. The result id (clg_...) is a private handle valid for 30 days; photos and results are deleted after 30 days. The preview is watermarked; the full-resolution file is downloaded from the collager.ai page given in full_resolution_page. Building can take up to a minute - if status is still processing, call get_shape_collage with the id.

Input Schema

{
  "type": "object",
  "properties": {
    "shape": {
      "description": "The figure. Examples: {\"type\":\"heart\"} (size picked from the photo count), {\"type\":\"heart\",\"cells\":70}, {\"type\":\"number\",\"text\":\"30\"}, {\"type\":\"text\",\"text\":\"LOVE\"}, {\"type\":\"love\"} (\"I love you\"), {\"type\":\"star\",\"size\":\"large\"}, {\"type\":\"grid\",\"n\":4}. Call list_collage_shapes for all options.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "heart",
            "number",
            "text",
            "love",
            "circle",
            "star",
            "flower",
            "daisy",
            "yinyang",
            "grid",
            "mask_url"
          ]
        },
        "cells": {
          "type": "integer",
          "enum": [
            27,
            34,
            70,
            79,
            91,
            164
          ],
          "description": "Heart only: number of photo cells."
        },
        "text": {
          "type": "string",
          "maxLength": 14,
          "description": "number/text: the digits or word (Latin letters and digits)."
        },
        "size": {
          "type": "string",
          "enum": [
            "small",
            "medium",
            "large"
          ],
          "description": "number/text/circle/star/flower: how many cells (bigger = more photos)."
        },
        "n": {
          "type": "integer",
          "minimum": 2,
          "maximum": 12,
          "description": "grid: n x n."
        },
        "url": {
          "type": "string",
          "description": "mask_url: link to a black-and-white picture; each black pixel is one photo cell."
        }
      },
      "required": [
        "type"
      ]
    },
    "photo_urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "maxItems": 300,
      "description": "Public http(s) links to the photos (JPEG/PNG/WEBP)."
    },
    "photos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ]
      },
      "maxItems": 300,
      "description": "Photos the user attached in the chat."
    },
    "gap_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 40,
      "description": "White gap between photos, % of a cell (default 6)."
    },
    "background": {
      "type": "string",
      "description": "Background colour: white (default), cream, pink, black or #rrggbb."
    }
  },
  "required": [
    "shape"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "preview_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "full_resolution_page": {
      "type": [
        "string",
        "null"
      ]
    },
    "shape": {
      "type": [
        "string",
        "null"
      ]
    },
    "cells": {
      "type": [
        "integer",
        "null"
      ]
    },
    "photos_used": {
      "type": [
        "integer",
        "null"
      ]
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "error": {
      "type": [
        "object",
        "null"
      ]
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ]
}
🟢get_shape_collage(id)

Returns the status and the watermarked preview of a collage made with make_shape_collage, by its id (clg_...). Use when make_shape_collage answered status "processing", or to show the collage again.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^clg_[A-Za-z0-9]{12}$",
      "description": "The id returned by make_shape_collage."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "preview_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "full_resolution_page": {
      "type": [
        "string",
        "null"
      ]
    },
    "shape": {
      "type": [
        "string",
        "null"
      ]
    },
    "cells": {
      "type": [
        "integer",
        "null"
      ]
    },
    "photos_used": {
      "type": [
        "integer",
        "null"
      ]
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "error": {
      "type": [
        "object",
        "null"
      ]
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ]
}
🟢list_collage_shapes

Lists the shapes make_shape_collage can draw (hearts of 27-164 photos, numbers, words, I love you, circle, star, flower, grid, your own mask) and how many photos fill each without repeats.

Input Schema

{
  "type": "object",
  "additionalProperties": false
}
🟢list_mosaic_styles

Shows the looks of a Collager.ai photo mosaic (one large picture made of hundreds or thousands of small photos) with example images: soft classic, clean subject, stronger mosaic, uniform or mixed tile sizes. Use before start_photo_mosaic when the user wants to choose a style.

Input Schema

{
  "type": "object",
  "additionalProperties": false
}
🟢start_photo_mosaic(occasion)

Gives the link where the user builds a photo mosaic: one main photo recreated from many small photos (best with 100-2000 photos - family archive, wedding, team, school year). The user uploads the photos on collager.ai, picks the style, and the site builds a watermarked preview in minutes. Use when the user wants a photo mosaic or a picture made of many photos.

Input Schema

{
  "type": "object",
  "properties": {
    "occasion": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional: what it is for (anniversary, memorial, wedding, team ...), used only to tailor the tips."
    }
  },
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools