# mcp

Persistent memory for visual work: a photo gets analyzed once, then every later lookup on it is free. Useful when an agent reads the same image twice.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 1
- Author: phototology-ai
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/phototology-ai/phototology/tree/HEAD/packages/mcp
- Updated: 2026-10-18
- HTML: https://affpapa.org/en/nevibecode/mcp/phototology-ai-mcp

## What it does

This MCP server from Phototology wires an agent into an image registry. The first pass over a photo bills 1 credit per lens; after that the stored result comes back at no cost, because entries are keyed by perceptual hash and sha256. It starts with `npx -y @phototology/mcp` and speaks stdio.

Seven tools ship inside. `lookup_photo` tells you whether an image is already known, `analyze_photo` handles a single file, `analyze_batch` takes 1 to 200 at a time, and `enrich_photo` writes the findings into EXIF, IPTC and XMP. Three free helpers round it out: `list_lenses`, `get_credits`, `purchase_credits`. Run `analyze_batch` with `dryRun: true` first if you want the price before committing.

No `PHOTOTOLOGY_API_KEY`, no server — every analyze call reaches the hosted Phototology API, and there is no local model to fall back on. Identity matching is out of scope: the `people` lens counts heads and notes physical traits, it does not match faces. C2PA signing is missing too, so `formats: ["c2pa"]` gets rejected.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `PHOTOTOLOGY_API_KEY`, `PHOTOTOLOGY_BASE_URL`, `PHOTOTOLOGY_MCP_NO_TELEMETRY`, `DO_NOT_TRACK`, `PHOTOTOLOGY_MCP_ALLOWED_DIRS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PHOTOTOLOGY_API_KEY=<PHOTOTOLOGY_API_KEY> --env PHOTOTOLOGY_BASE_URL=<PHOTOTOLOGY_BASE_URL> --env PHOTOTOLOGY_MCP_NO_TELEMETRY=<PHOTOTOLOGY_MCP_NO_TELEMETRY> --env DO_NOT_TRACK=<DO_NOT_TRACK> --env PHOTOTOLOGY_MCP_ALLOWED_DIRS=<PHOTOTOLOGY_MCP_ALLOWED_DIRS> --transport stdio mcp -- npx -y @phototology/mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add mcp --env PHOTOTOLOGY_API_KEY=<PHOTOTOLOGY_API_KEY> --env PHOTOTOLOGY_BASE_URL=<PHOTOTOLOGY_BASE_URL> --env PHOTOTOLOGY_MCP_NO_TELEMETRY=<PHOTOTOLOGY_MCP_NO_TELEMETRY> --env DO_NOT_TRACK=<DO_NOT_TRACK> --env PHOTOTOLOGY_MCP_ALLOWED_DIRS=<PHOTOTOLOGY_MCP_ALLOWED_DIRS> -- npx -y @phototology/mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@phototology/mcp"
            ],
            "env": {
                "PHOTOTOLOGY_API_KEY": "<PHOTOTOLOGY_API_KEY>",
                "PHOTOTOLOGY_BASE_URL": "<PHOTOTOLOGY_BASE_URL>",
                "PHOTOTOLOGY_MCP_NO_TELEMETRY": "<PHOTOTOLOGY_MCP_NO_TELEMETRY>",
                "DO_NOT_TRACK": "<DO_NOT_TRACK>",
                "PHOTOTOLOGY_MCP_ALLOWED_DIRS": "<PHOTOTOLOGY_MCP_ALLOWED_DIRS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@phototology/mcp"
            ],
            "env": {
                "PHOTOTOLOGY_API_KEY": "<PHOTOTOLOGY_API_KEY>",
                "PHOTOTOLOGY_BASE_URL": "<PHOTOTOLOGY_BASE_URL>",
                "PHOTOTOLOGY_MCP_NO_TELEMETRY": "<PHOTOTOLOGY_MCP_NO_TELEMETRY>",
                "DO_NOT_TRACK": "<DO_NOT_TRACK>",
                "PHOTOTOLOGY_MCP_ALLOWED_DIRS": "<PHOTOTOLOGY_MCP_ALLOWED_DIRS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PHOTOTOLOGY_API_KEY=<PHOTOTOLOGY_API_KEY> -e PHOTOTOLOGY_BASE_URL=<PHOTOTOLOGY_BASE_URL> -e PHOTOTOLOGY_MCP_NO_TELEMETRY=<PHOTOTOLOGY_MCP_NO_TELEMETRY> -e DO_NOT_TRACK=<DO_NOT_TRACK> -e PHOTOTOLOGY_MCP_ALLOWED_DIRS=<PHOTOTOLOGY_MCP_ALLOWED_DIRS> mcp npx -y @phototology/mcp
```
Replace <…> with your own values

## When to use it
- reuse one photo analysis across agent calls
- price a batch before spending credits
- bake structured fields into a file's metadata
- spot near-duplicate images by perceptual hash
- get dates, text and location off a photo as JSON

## Example prompts
- Check `lookup_photo` for this image before spending anything on it
- Run `analyze_batch` with `dryRun: true` over the folder and tell me the cost
- Write the analysis into the EXIF of `photo.jpg` with `enrich_photo`

## Similar
- [vision-analysis](https://affpapa.org/en/nevibecode/skills/vision-analysis.md) — skill · 2700 installs
- [gemini-image](https://affpapa.org/en/nevibecode/skills/gemini-image.md) — skill · 1200 installs
- [modlens](https://affpapa.org/en/nevibecode/skills/modlens.md) — skill · 923 installs
- [minimax-image-understanding](https://affpapa.org/en/nevibecode/skills/minimax-image-understanding.md) — skill · 556 installs
- [three.ws Vision](https://affpapa.org/en/nevibecode/mcp/threews-vision.md) — MCP server · ★ 250
- [VLM](https://affpapa.org/en/nevibecode/skills/vlm.md) — skill · 343 installs

## Other versions with the same name
- [mcp · kubeshark](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — ★ 12110
- [mcp · butterbase-ai](https://affpapa.org/en/nevibecode/mcp/butterbase-ai-mcp.md) — ★ 3031
- [mcp · medplum](https://affpapa.org/en/nevibecode/mcp/mcp.md) — ★ 2766
- [mcp · sceneview](https://affpapa.org/en/nevibecode/mcp/sceneview-mcp.md) — ★ 1349
- [mcp · buoy-gg](https://affpapa.org/en/nevibecode/mcp/buoy-gg-mcp.md) — ★ 691

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
