Skip to main content

Work in progress — not released or deployment-ready.

Immich 3.2.2 supplies 276 operations in 41 domain tools plus the bounded album metadata tool. Writes default off. Provider evidence corrects the mobile OAuth callback to a 307 response with a validated Location value; redirects are never followed. Merged SDK b9ee9ed0a82f6ecd5ed23d6226ca5ab503f74f9c prevents a shared API-key client from retaining or forwarding login-session cookies. Merged canonical builder f6881bf5598f1d6a6a1f548ae4caa1a713a6d9d7 supplies the deterministic compiler and frozen source-overlay bootstrap. The 21 focused API/native redirect and cookie regressions passed in 5.81 seconds; see current evidence. Normal commit and push checks gate publication. Historical 276 API plus 276 native operation receipts remain under validation/; their revision bindings are preserved. Mocked tests do not establish provider/account permissions or production client discovery budgets. Ingestion presets remain disabled. The bootstrap installs locked registry wheels and imports the connector, SDK and EG from immutable source checkouts; it is not full release installation certification. No deployment, image build, live write or graph receipt is claimed.

Immich Api

GitHub Repo stars GitHub forks GitHub contributors GitHub license GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Version PyPI - Downloads PyPI - License PyPI - Wheel PyPI - Implementation MCP Server

Immich Api API + MCP Server

The documentation site contains the planned API, deployment, security, and operational reference. Pages publication is not configured yet; use the local documentation links below for this pilot. This README is the concise entry point for installation and the supported runtime surfaces.

Overview

immich-api is a typed provider package for the agent ecosystem. It combines a small Python client with a governed MCP entry point. Configuration uses runtime credential references; resolved credentials and private endpoints are never committed.

Key capabilities

  • Typed boundaries — Pydantic request and response models keep provider data explicit and validate it before it reaches an agent or graph.
  • One package, shared policy — authentication, telemetry, action routing, and error handling follow the agent-connector-sdk contracts.
  • Schema-grounded content — read skills, prompts, ontology and shapes are packaged; extraction presets remain disabled pending provider/account stream binding. Graph capture remains unverified.
  • Operational safety — TLS profiles, bounded responses, loopback defaults, and immutable container references are part of the generated deployment contract.

Quick start

Build and run from this connector checkout. Access to a separate template repository is not required. The canonical scaffold belongs entirely to the mcp-builder skill; future scaffolding uses its locally generated files and ordinary repository creation. The pilot's original template commit remains historical provenance in validation/scaffold-origin.json.

This pilot and its required SDK/EG dependency versions are not available from the checked package index. The source-based development lock records exact tested revisions; it does not supply native wheels. Once dependencies are provisioned in an approved environment:

python -m pip install ".[mcp]"
immich-mcp

After a release is published, the distribution entry points will be:

python -m pip install "immich-api[mcp]"
immich-mcp

For an on-demand run, use uvx:

uvx --from "immich-api[mcp]" immich-mcp

The networked server binds to loopback by default:

immich-mcp --transport streamable-http --host 127.0.0.1 --port 8000

Container builds install this checkout, so the connector need not be published first. Use the repository root as the context on an approved image-build host:

docker build --file docker/Dockerfile --target mcp -t immich-api:mcp-local .

See deployment for an exact-commit build context and the remaining dependency-closure requirements. No image build is claimed here.

Architecture

The provider keeps the boundary between transport and domain code explicit:

client → MCP entry point → typed tool module → API client → provider
                                  └── skills, prompts, ontology, connector presets

The OpenAPI tools take an action plus typed path, query, or body objects when the selected operation requires them. For example, call server_operations with {"action":"pingServer"}. The bounded album_metadata_sample tool takes limit. Regenerate schemas/mcp_tools.json with python scripts/generate_tool_schemas.py after changing a tool contract, and keep the examples below aligned with that schema.

MCP configuration

The server supports local stdio and authenticated streamable-http deployments. Keep endpoint, credential, selector, and TLS references in SDK configuration; do not put resolved values in client configuration.

{
  "mcpServers": {
    "immich-mcp": {
      "command": "immich-mcp",
      "args": [],
      "env": {"SYSTEMTOOL": "true"}
    }
  }
}

For a networked deployment, use an authenticated TLS ingress and keep the allowlist in MCP_ALLOWED_HOSTS. A configured remote example is https://service.example.invalid/mcp; it is documentation-only and is never contacted by the generator.

{
  "mcpServers": {
    "immich-mcp": {
      "command": "immich-mcp",
      "args": ["--transport", "streamable-http", "--port", "8000"],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "127.0.0.1",
        "PORT": "8000",
        "SYSTEMTOOL": "true"
      }
    }
  }
}

Container builds use immutable, least-privilege runtime stages:

docker build --file docker/Dockerfile --target mcp -t immich-api:mcp-local .

Deploy reviewed images by digest (immich-api@sha256:<digest>) and include --cap-drop=ALL in the runtime policy. The deployment guide contains the complete transport and container examples.

Documentation

Use the Pages documentation for installation details, API capabilities, deployment profiles, platform integration, and the concept registry. The concise local references remain available at:

Development

Create an isolated branch, install the test extra, and run the complete local gate:

uv sync --extra test
pytest tests -q
pre-commit run --all-files

Keep MCP examples and environment documentation aligned with the implemented settings. Add focused positive and adversarial tests for every behavior change. See AGENTS.md for the current module ownership and release checks.

License

This project is distributed under the MIT license. See LICENSE for the complete terms.

Metadata

Release files for immich-api 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for immich-api 0.2.1
File Size Uploaded Provenance
immich_api-0.2.1.tar.gz 4.4 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for immich-api 0.2.1
File Interpreter ABI Platform
immich_api-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 5.0 MB

Release files / immich_api-0.2.1.tar.gz

Download URL immich_api-0.2.1.tar.gz
Size 4.4 MB
Tags Source
SHA-256 checksum
How to use checksums
1eb99ceaa7292b03aacacf49f9ca1c1ec998775aa1bce69e340cb51889b8aeaf
BLAKE2b-256 checksum
How to use checksums
205135920946128c965b1688b2a0ecd95c6e9f54523f8ae6538ce0b2d33eae71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / immich_api-0.2.1-py3-none-any.whl

Download URL immich_api-0.2.1-py3-none-any.whl
Size 568.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3739f59f55998e38f92c7badf724ba6053e1a8a056ca510ed4d1fe9d326f2a7f
BLAKE2b-256 checksum
How to use checksums
2f88af93bb73d4bec4bd4ff540aa2fa8e8c69718399bd45f601e9551bd6ceb80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Security for immich-api 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page