← Back to Skills Marketplace
joeru

claw2immich

by Johannes Rumpf · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
635
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install claw2immich
Description
Work with Immich photo library via MCP (claw2immich) - search photos by people, dates, locations, albums. Download assets via shared links. Handles multi-per...
README (SKILL.md)

Immich Photo Library (via claw2immich)

Work 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.

Prerequisites

  • 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"
        }
      }
    }
    

Key Tools

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

Quick Start

Find people by name

mcporter call immich immich_searchperson query_name="Maria"

Search photos with multiple people (AND logic)

mcporter call immich immich_searchassets \
  'body_personIds=["person-uuid-1","person-uuid-2"]' \
  body_order=desc body_size=10

CLIP smart search (natural language)

mcporter call immich immich_searchsmart \
  body_query="sunset at the beach" body_size=5

Get asset info (includes web_url)

mcporter call immich immich_getassetinfo path_id=\x3Casset-uuid>

Download a photo (shared link)

mcporter call immich downloadAsset asset_id=\x3Casset-uuid>

Returns a short-lived shared link (30 min, no auth needed).

Get thumbnail for display

mcporter call immich immich_viewasset path_id=\x3Casset-uuid> query_size=thumbnail

Returns {encoding: "base64", content_type: "image/webp", size_bytes: ..., data: "..."}.

Web URLs

Tool responses for assets, albums, people, and places include a web_url field:

  • Assets: https://\x3Cdomain>/photos/\x3Casset-id>
  • Albums: https://\x3Cdomain>/albums/\x3Calbum-id>
  • People: https://\x3Cdomain>/people/\x3Cperson-id>

This requires IMMICH_EXTERNAL_DOMAIN to be configured on the server.

Common Workflows

"Show me recent photos of X and Y together"

  1. Find person IDs:

    mcporter call immich immich_searchperson query_name="Alice"
    mcporter call immich immich_searchperson query_name="Bob"
    
  2. Search photos (AND logic):

    mcporter call immich immich_searchassets \
      'body_personIds=["alice-id","bob-id"]' \
      body_order=desc body_size=10
    
  3. Display a photo:

    mcporter call immich immich_viewasset path_id=\x3Casset-id> query_size=thumbnail
    

    Decode base64 data, save as .webp, send to user.

"Find vacation photos from summer 2024"

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

"Download a photo"

mcporter call immich downloadAsset asset_id=\x3Casset-uuid>

Response:

{
  "delivery_mode": "shared_link",
  "download_url": "https://immich.example.com/share/\x3Ctoken>",
  "expires_in_minutes": 30,
  "requires_auth": false
}

The shared link can be sent directly to users — no auth required.

Displaying photos in chat

  1. Get thumbnail via immich_viewasset (query_size=thumbnail, typically \x3C 30KB)
  2. Decode the base64 data field
  3. Save as .webp file
  4. Send via messaging tool

Note: preview size may exceed the 64KB MCP transport limit. Use thumbnail for reliable delivery.

Key Parameters

immich_searchassets (POST /api/search/assets)

Filtering:

  • body_personIds: ["uuid1", "uuid2"] — Photos with these people (AND)
  • body_city: "string" — Filter by city
  • body_country: "string" — Filter by country
  • body_createdAfter: "ISO8601" — Minimum date
  • body_createdBefore: "ISO8601" — Maximum date
  • body_isFavorite: boolean — Only favorites
  • body_albumIds: ["uuid"] — Filter by albums

Sorting & Pagination:

  • body_order: "desc" — Newest first
  • body_order: "asc" — Oldest first
  • body_size: number — Limit results
  • body_page: number — Page number

immich_searchsmart (POST /api/search/smart)

  • body_query: "string" — Natural language query (CLIP-based)
  • body_size: number — Limit results
  • Same filter parameters as searchassets

downloadAsset

  • asset_id: "uuid" — Asset to download

Delivery 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)

immich_viewasset (GET /api/assets/{id}/thumbnail)

  • path_id: "uuid" — Asset ID
  • query_size: "thumbnail"|"preview" — Image size

Returns structured base64 response. Use thumbnail to stay under transport limits.

Important Patterns

Multi-Person Search (AND)

Correct: Array in body_personIds

{"body_personIds": ["person-1", "person-2"]}

Wrong: Separate calls (that's OR, not AND)

Parameter Prefixes

All OpenAPI tool parameters use prefixes:

  • path_\x3Cname> — Path parameters
  • query_\x3Cname> — Query parameters
  • body_\x3Cname> — Body parameters (for POST endpoints)

Date Filtering

Always use ISO 8601: "2024-01-15T00:00:00Z"

64KB Transport Limit

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)
  • Large search results (reduce body_size)

Access Profiles

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 admin

Use tool_access_report to check available tools.

Troubleshooting

No results with multiple people:

  • Verify person IDs (search each person first)
  • Add body_isArchived: false if photos might be archived

downloadAsset returns error:

  • Check tool_access_report for permissions
  • Shared link creation requires write access to shared-links API

Thumbnail too large:

  • Use query_size=thumbnail instead of preview
  • Thumbnails are typically 5-25 KB (WebP)

MCP call fails:

  • Verify server is running: mcporter call immich ping_server
  • Check config: mcporter list immich

Reference

Usage Guidance
This skill appears to do what it claims: it teaches an OpenClaw agent to call a claw2immich MCP server to search and fetch photos. Before installing or using it, check the following: 1) Ensure your Immich / claw2immich server is private and properly secured — the skill documents generating shared links that may be usable without authentication, which can leak photos if the server is publicly reachable. 2) Replace example hostnames (e.g., http://joesnuc:2283) with your actual server URL; examples include defaults that are placeholders. 3) The example scripts use jq and curl; install those if you plan to run them locally. 4) If you are concerned about privacy, review the claw2immich server configuration (IMMICH_DOWNLOAD_ASSET_DELIVERY and IMMICH_EXTERNAL_DOMAIN) and the claw2immich codebase before enabling automated agents to generate or share links. 5) Because this is instruction-only (no install), the primary risk is accidental exposure of photos via sharing — not installation of unwanted binaries. If you want extra assurance, inspect the claw2immich repo and restrict network access to the MCP/Immich hosts.
Capability Analysis
Type: OpenClaw Skill Name: claw2immich Version: 1.0.0 The skill is classified as suspicious due to high-risk capabilities and a potential vulnerability in an example script. The `downloadAsset` and `immich_createsharedlink` tools can generate and expose 'no auth needed' shared links to private photos, which, while a stated feature, carries inherent data exposure risks. Furthermore, the `examples/get-photo-urls.sh` script demonstrates direct `curl` download of original assets using a user-provided `IMMICH_SERVER` URL, presenting a potential Server-Side Request Forgery (SSRF) or arbitrary file download vulnerability if an agent were to execute this script with untrusted input. No clear evidence of intentional malicious behavior (e.g., credential theft, backdoor installation, or exfiltration to an attacker-controlled C2) was found within the skill bundle itself, but these capabilities represent significant security risks.
Capability Assessment
Purpose & Capability
Name/description match the provided files and SKILL.md. The skill is instruction-only and expects an Immich instance and a claw2immich MCP server (documented in SKILL.md and skill.json). The examples and tool names all pertain to Immich. Minor note: example scripts ship a default example server URL (http://joesnuc:2283) which is a local/personal host placeholder and should be replaced by users; this is documentation noise but not a functional mismatch.
Instruction Scope
SKILL.md and the example scripts instruct the agent to call mcporter tools (search, view, download) and to decode/save base64 thumbnails or use curl to fetch originals. These instructions stay within the skill's photo-management scope. Important operational detail: the skill documents/uses shared-link delivery (short-lived, no auth required by default) and suggests sending those links to users — this can expose private photos if the Immich/claw2immich server is misconfigured or publicly reachable. The skill itself does not access unrelated host files or secrets.
Install Mechanism
No install spec is included (instruction-only), so nothing is downloaded or written by the skill itself. Example scripts reference jq and curl, which are reasonable and documented as optional requirements. This is low risk from an installation perspective.
Credentials
The skill requests no environment variables or credentials. skill.json lists mcporter/mcp server and jq as requirements which are proportional. However, the SKILL.md references server-side configuration variables (IMMICH_EXTERNAL_DOMAIN, IMMICH_DOWNLOAD_ASSET_DELIVERY) that control URL exposure and delivery mode — these are not requested as secrets by the skill but materially affect privacy and whether assets can be downloaded without auth. Users should verify those server settings before use.
Persistence & Privilege
The skill does not request always:true, does not modify other skills, and has no install-time hooks. It is user-invocable and can be invoked autonomously by agents per platform defaults; that is expected and not excessive for this skill.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install claw2immich
  3. After installation, invoke the skill by name or use /claw2immich
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial publish: Full Immich MCP skill with smart search, multi-person AND search, shared link downloads, web_url support, thumbnail display, access profiles.
Metadata
Slug claw2immich
Version 1.0.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is claw2immich?

Work with Immich photo library via MCP (claw2immich) - search photos by people, dates, locations, albums. Download assets via shared links. Handles multi-per... It is an AI Agent Skill for Claude Code / OpenClaw, with 635 downloads so far.

How do I install claw2immich?

Run "/install claw2immich" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is claw2immich free?

Yes, claw2immich is completely free (open-source). You can download, install and use it at no cost.

Which platforms does claw2immich support?

claw2immich is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created claw2immich?

It is built and maintained by Johannes Rumpf (@joeru); the current version is v1.0.0.

💬 Comments