← 返回 Skills 市场
joeru

claw2immich

作者 Johannes Rumpf · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
635
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install claw2immich
功能描述
Work with Immich photo library via MCP (claw2immich) - search photos by people, dates, locations, albums. Download assets via shared links. Handles multi-per...
使用说明 (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

安全使用建议
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.
功能分析
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.
能力评估
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.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install claw2immich
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /claw2immich 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
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.
元数据
Slug claw2immich
版本 1.0.0
许可证
累计安装 0
当前安装数 0
历史版本数 1
常见问题

claw2immich 是什么?

Work with Immich photo library via MCP (claw2immich) - search photos by people, dates, locations, albums. Download assets via shared links. Handles multi-per... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 635 次。

如何安装 claw2immich?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install claw2immich」即可一键安装,无需额外配置。

claw2immich 是免费的吗?

是的,claw2immich 完全免费(开源免费),可自由下载、安装和使用。

claw2immich 支持哪些平台?

claw2immich 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 claw2immich?

由 Johannes Rumpf(@joeru)开发并维护,当前版本 v1.0.0。

💬 留言讨论