Install
openclaw skills install claw2immichWork with Immich photo library via MCP (claw2immich) - search photos by people, dates, locations, albums. Download assets via shared links. Handles multi-per...
openclaw skills install claw2immichWork with your Immich photo library via the claw2immich MCP server. Search by people, dates, locations, and albums. Download photos via shared links or inline base64. 249 tools available from the full Immich OpenAPI spec.
Immich instance running (https://immich.app)
claw2immich MCP server installed and running
MCP server configured in config/mcporter.json:
{
"mcpServers": {
"immich": {
"baseUrl": "http://your-claw2immich-host:port/sse"
}
}
}
| Tool | Description |
|---|---|
immich_searchassets | Metadata search (date, people, location, etc.) |
immich_searchsmart | CLIP-based natural language search |
immich_searchperson | Find person by name |
immich_getassetinfo | Get full asset details including web_url |
immich_viewasset | Get thumbnail/preview as base64 (WebP) |
downloadAsset | Download asset via shared link (default) or inline base64 |
immich_getallpeople | List all people |
immich_getallalbums | List all albums |
immich_createsharedlink | Create shared link for album/assets |
tool_access_report | Check which tools are available |
mcporter call immich immich_searchperson query_name="Maria"
mcporter call immich immich_searchassets \
'body_personIds=["person-uuid-1","person-uuid-2"]' \
body_order=desc body_size=10
mcporter call immich immich_searchsmart \
body_query="sunset at the beach" body_size=5
mcporter call immich immich_getassetinfo path_id=<asset-uuid>
mcporter call immich downloadAsset asset_id=<asset-uuid>
Returns a short-lived shared link (30 min, no auth needed).
mcporter call immich immich_viewasset path_id=<asset-uuid> query_size=thumbnail
Returns {encoding: "base64", content_type: "image/webp", size_bytes: ..., data: "..."}.
Tool responses for assets, albums, people, and places include a web_url field:
https://<domain>/photos/<asset-id>https://<domain>/albums/<album-id>https://<domain>/people/<person-id>This requires IMMICH_EXTERNAL_DOMAIN to be configured on the server.
Find person IDs:
mcporter call immich immich_searchperson query_name="Alice"
mcporter call immich immich_searchperson query_name="Bob"
Search photos (AND logic):
mcporter call immich immich_searchassets \
'body_personIds=["alice-id","bob-id"]' \
body_order=desc body_size=10
Display a photo:
mcporter call immich immich_viewasset path_id=<asset-id> query_size=thumbnail
Decode base64 data, save as .webp, send to user.
mcporter call immich immich_searchassets \
body_createdAfter="2024-06-01T00:00:00Z" \
body_createdBefore="2024-08-31T23:59:59Z" \
body_city="Barcelona" body_order=desc
mcporter call immich downloadAsset asset_id=<asset-uuid>
Response:
{
"delivery_mode": "shared_link",
"download_url": "https://immich.example.com/share/<token>",
"expires_in_minutes": 30,
"requires_auth": false
}
The shared link can be sent directly to users — no auth required.
immich_viewasset (query_size=thumbnail, typically < 30KB)data field.webp fileNote: preview size may exceed the 64KB MCP transport limit. Use thumbnail for reliable delivery.
Filtering:
body_personIds: ["uuid1", "uuid2"] — Photos with these people (AND)body_city: "string" — Filter by citybody_country: "string" — Filter by countrybody_createdAfter: "ISO8601" — Minimum datebody_createdBefore: "ISO8601" — Maximum datebody_isFavorite: boolean — Only favoritesbody_albumIds: ["uuid"] — Filter by albumsSorting & Pagination:
body_order: "desc" — Newest firstbody_order: "asc" — Oldest firstbody_size: number — Limit resultsbody_page: number — Page numberbody_query: "string" — Natural language query (CLIP-based)body_size: number — Limit resultsasset_id: "uuid" — Asset to downloadDelivery mode is controlled server-side via IMMICH_DOWNLOAD_ASSET_DELIVERY:
shared_link (default): Returns a tokenized shared link (30 min TTL, no auth)inline_base64: Returns base64-encoded file data (limited by 64KB transport)immich_link: Returns direct Immich URL (requires auth)path_id: "uuid" — Asset IDquery_size: "thumbnail"|"preview" — Image sizeReturns structured base64 response. Use thumbnail to stay under transport limits.
✅ Correct: Array in body_personIds
{"body_personIds": ["person-1", "person-2"]}
❌ Wrong: Separate calls (that's OR, not AND)
All OpenAPI tool parameters use prefixes:
path_<name> — Path parametersquery_<name> — Query parametersbody_<name> — Body parameters (for POST endpoints)Always use ISO 8601: "2024-01-15T00:00:00Z"
MCP responses are truncated at 64KB. This affects:
downloadAsset with inline_base64 mode (use shared_link instead)immich_viewasset with query_size=preview (use thumbnail instead)body_size)Set IMMICH_PROFILE on the server to restrict tools:
read_only — Only GET endpoints (search, browse)read_write — Read + write (upload, update, delete)full_scope — Everything including adminUse tool_access_report to check available tools.
No results with multiple people:
body_isArchived: false if photos might be archiveddownloadAsset returns error:
tool_access_report for permissionsThumbnail too large:
query_size=thumbnail instead of previewMCP call fails:
mcporter call immich ping_servermcporter list immich