Open editor
For developers

LightCraft MCP: a photo editor your agent can drive

Every menu item, slider, brush stroke and crop handle in LightCraft is a command with a stable id and JSON parameters. The command-line tool exposes them as an MCP server, so an AI agent can cull a shoot, develop it, mask a sky and export it, and look at the result along the way.

MCP needs the desktop app or CLI. The browser editor on this site can’t be reached by an MCP client; for AI help in the browser, use the AI panel.

Two ways to run it

ModeCommandWhat the agent drives
Headlesslightcraft-cli mcp [FILES/FOLDERS…]An engine session with no window: develop, render and export
Connectlightcraft-cli mcp --connect 127.0.0.1:7980The running desktop app, started with lightcraft --control 7980, plus screenshots, clicks, keys and gestures

Add --library DIR to work on a persistent library, so ratings and edits survive between sessions. A library is open in one program at a time: while the desktop app has it open, use connect mode.

Get lightcraft-cli

Set up with Claude Code

# headless, with a folder of photos imported at start
claude mcp add lightcraft -- /path/to/lightcraft-cli mcp ~/Pictures/shoot

# or drive the running desktop app (start it with: lightcraft --control 7980)
claude mcp add lightcraft-app -- /path/to/lightcraft-cli mcp --connect 127.0.0.1:7980

Or check a project-scoped .mcp.json into your repository:

{
  "mcpServers": {
    "lightcraft": {
      "command": "/path/to/lightcraft-cli",
      "args": ["mcp", "--connect", "127.0.0.1:7980"]
    }
  }
}

For Codex, register the same command with codex mcp add, using absolute paths.

What the agent gets

Prompts to try

Without MCP: the CLI on its own

# Import, edit and export in one command
lightcraft-cli run --import ~/Pictures/a.dng \
  develop.set control=light.exposure value=0.7 \
  app.export path=/tmp/a.jpg shortEdge=1080

# Render one file with settings
lightcraft-cli render in.dng -o out.jpg --set light.exposure=0.5 --size 2048

And in the browser?

The web build exposes the same command registry to JavaScript on its own page: await lightcraft.command("library.info", "{}") runs any command and resolves to its JSON result. That is what this site’s AI panel uses to read your sliders and apply suggestions. It is a page-level API, not an MCP server.

FAQ

Can an AI agent control the browser version on this site?

Not over MCP. The MCP server and the control channel need a network socket, so they are part of the desktop app and lightcraft-cli. The browser build has a JavaScript automation call instead, which this site’s AI panel uses to apply slider suggestions; for agent workflows, use the desktop app or the CLI.

Which agents work with it?

Any MCP client that can launch a local stdio server: Claude Code, Claude Desktop, Codex, Cursor and others. The project documents Claude Code, Codex and Claude Desktop setups; other clients take the same command and arguments.

Can the agent see the photo?

Yes. render_photo returns the photo with its current settings as an image the model can look at, so an agent can adjust, look, and adjust again. In connect mode, screenshot returns the whole app window.

Can I undo what the agent did?

Yes. Agent edits go through the same commands as the interface and land in the same undo history; a scripted burst of slider updates counts as one undo step.

Source: LightCraft’s MCP documentation and control protocol. Flags can change between releases; check lightcraft-cli --help.