Skip to main content
Glama
wanjau2

Immich MCP Server

by wanjau2

Immich MCP 服务器

将自托管的 Immich 照片库暴露给 ChatGPT(以及任何其他 MCP 客户端), 通过 Streamable HTTP,这样你就可以提出诸如 “查找三月基加利现场访问的照片” 之类的问题,并从你自己的 NAS 获得真实答案。

ChatGPT  ──HTTPS──▶  Cloudflare Tunnel  ──▶  immich_mcp:8080  ──▶  immich_server:2283
          bearer token                        MCP → REST            x-api-key

为何如此构建

ChatGPT 自定义连接器仅接受 远程 HTTPS 端点。没有 stdio 或 localhost 选项,因此服务器必须能从互联网访问—— 因此需要隧道——并且必须自我保护,因此需要 bearer 令牌。

工具

工具

用途

search

对图像内容进行 CLIP 语义搜索

fetch

按 UUID 获取一个资产的完整 EXIF 信息

search_by_metadata

按日期、地点、相机、人物、收藏筛选

list_albums

所有相册及其计数

get_album

单个相册的详细信息和内容

list_people

已识别的人脸,带有用于筛选的 ID

library_stats

照片/视频计数和磁盘使用情况

server_info

Immich 版本和已启用的功能

create_share_link

指向特定资产的公开链接——默认关闭

searchfetch 是特意命名的:ChatGPT 的深度研究模式会忽略 所有其他工具,因此如果开发者模式不可用,这两个工具将承担主要负载。


设置

1. 获取 Immich API 密钥

Immich → 账户设置 → API 密钥 → 新建 API 密钥。除非你计划启用分享链接,否则将其范围设为只读。

2. 配置

cp .env.example .env
openssl rand -hex 32          # paste into MCP_BEARER_TOKEN
$EDITOR .env

找到 Immich 已运行的 Docker 网络,并将其名称放入 docker-compose.yml 中的 networks.immich-net.name 下:

docker network ls | grep -i immich

通常是 immich_default。如果 MCP 容器无法加入该网络,请将 IMMICH_URL 设置为 NAS 局域网地址(http://192.168.1.50:2283)并 删除 networks: 块。

3. 构建并运行

docker compose up -d --build
docker compose logs -f immich-mcp

在暴露任何内容之前先在本地验证:

curl http://127.0.0.1:8099/healthz
# {"status":"ok","immich":{"major":1,"minor":...}}

pip install httpx
python smoke_test.py http://127.0.0.1:8099 <your-bearer-token>

冒烟测试执行 ChatGPT 所做的完全相同的握手——初始化、tools/list, 然后进行实时工具调用——并确认未经身份验证的请求会收到 401 错误。

4. 通过 Cloudflare Tunnel 暴露

将公共主机名添加到指向 http://immich_mcp:8080 的现有隧道。请参阅 cloudflared/config.example.yml。如果你从 Zero Trust 仪表板管理隧道,请改为在那里添加。

不要在此主机名前放置 Cloudflare Access。 ChatGPT 无法 完成交互式 Access 登录。

针对公共 URL 重新运行冒烟测试:

python smoke_test.py https://immich-mcp.example.com <your-bearer-token>

5. 连接 ChatGPT

设置 → 连接器 → 高级设置 → 启用 开发者模式 (需要付费计划),然后创建:

  • 名称:Immich Photos

  • 描述:这很重要——模型会读取它来决定是否调用 连接器。类似于 “个人照片和视频库。用于查找、描述或列出照片、相册和已识别的人物。”

  • URLhttps://immich-mcp.example.com/mcp

  • 身份验证:API 密钥 / 自定义标头 → Authorization: Bearer <token>

然后在聊天编辑器中启用该连接器。


实际使用中的注意事项

在提示中命名工具。 ChatGPT 不会可靠地猜测何时使用 自定义连接器。“使用 immich search 查找干燥架的照片”有效, 而“查找我的干燥架照片”通常无效。

ChatGPT 无法看到你的照片。 工具结果是文本——描述和元数据,而不是像素。create_share_link 的存在是为了弥补这一差距,但分享链接对任何持有 URL 的人都是公开的,这就是为什么它默认被禁用。只有在你对此感到满意时才启用它。

固定你的 Immich 版本。 API 在不同版本之间会发生变化——/server/statistics 不久前还是 /server-info/statistics。你自己的实例在 https://photos.example.com/api/docs 发布确切的规范;在调试 404 之前先检查那里。

轮换 bearer 令牌,方法是编辑 .env 并运行 docker compose up -d --force-recreate,然后在 ChatGPT 中更新连接器。

故障排除

症状

原因

/healthz 返回 503

MCP 容器无法访问 Immich——IMMICH_URL 错误或不在同一个 Docker 网络上

每个请求都返回 401

.env 和连接器配置之间的 Bearer 令牌不匹配

ChatGPT 显示“未找到搜索操作”

连接器是在深度研究模式下添加的;请启用开发者模式

连接器已添加但从未触发

描述过于模糊,或者聊天中未启用该工具

search 始终不返回任何内容

Immich 机器学习已禁用——请检查 server_info

Immich 拒绝密钥(日志中显示 401)

密钥已被撤销,或属于不同的 Immich 用户

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • LLM chat, text summarization and AI image generation

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

  • Sync Lightroom, Figma, Dropbox & Canva assets to WordPress and Shopify via natural language.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wanjau2/Immich-MCP-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server