ArtCraft Guide

PhotoCraft MCP Server — Connect PhotoCraft to Claude Code, Cursor and Any AI Agent

PhotoCraft — the open-source Photoshop alternative — ships with a Model Context Protocol server built in. One command (photocraft-cli mcp) lets an AI agent drive the exact same 500+ commands the human UI uses: discover tools, run edits, batch whole folders, inspect layers and render previews. This page is the setup and safety guide, written from the project's own docs (docs/mcp.md and the README in the storytold/photocraft repo), checked 2026-10-15.

Quick answer: Run photocraft-cli mcp and point your MCP client at it — Claude Code, Cursor and any client that launches a local MCP server can then list and run PhotoCraft's 500+ engine commands: command_list, command_run, command_batch, doc_inspect and render_preview (ui_inspect / ui_screenshot in bridge mode with a running desktop app). Scope the agent's file access with --automation-read-root and --automation-write-root; without a root it has no filesystem authority. It is free, ships with the app, and follows the same MCP conventions as FilmCraft.

Core facts
What it isBuilt-in MCP server — a subcommand of the headless CLI: photocraft-cli mcp
Same commands as the UIOne registry of 500+ commands; UI, CLI, JSON channel and MCP all dispatch by id
Tools exposedcommand_list · command_run · command_batch · doc_inspect · render_preview (+ ui_inspect / ui_screenshot in bridge mode)
Resourcesphotocraft://document and photocraft://commands return live JSON
File safetyFilesystem access only inside --automation-read-root / --automation-write-root; without roots, none
Bridge mode--bridge + --control-token-file drives a running desktop app; UI tools require it
ConventionsSame MCP conventions as FilmCraft (issue #28 in the repo)
SourceOfficial docs/mcp.md + README, github.com/storytold/photocraft — checked 2026-10-15

What the PhotoCraft MCP server is

PhotoCraft's architecture is command-first: every menu item, tool and dialog runs a command from one registry of 500+ commands. The UI, the headless CLI, the JSON control channel and the MCP server all call that same registry, so anything a person can click in PhotoCraft, an agent can do too — with the same parameters and the same guards.

The MCP server is not a separate product or plugin. It is a subcommand of the CLI that ships with the app (on macOS the CLI comes as photocraft-cli-<version>-macos-universal.zip, signed and notarized like the desktop app). PhotoCraft follows the same MCP conventions as its sibling FilmCraft, so a setup you build for one craft app transfers to the others.

Start it: headless or bridged to the running app

  • Headless (no window): photocraft-cli mcp --automation-read-root /work/project --automation-write-root /work/project — the agent reads and writes only inside the roots you name. Paths can be relative to a root or absolute beneath it; without a root, the server has no filesystem authority at all.
  • Bridged to a running app: add --bridge and --control-token-file (documented in the repo's development.md) to drive the desktop app you have open. The ui_inspect and ui_screenshot tools require a running desktop app.
  • Plain form from the README: photocraft-cli mcp — headless, or bridged to the running app.
  • On Windows and Linux the same CLI ships in each GitHub release next to the desktop builds; use the full path to the binary if it is not on your PATH.

The tools your agent gets

The official docs/mcp.md lists these tools; document, session and job tools (doc_new, doc_save, timeline.create, jobs_list, jobs_cancel) are part of the same surface and appear throughout the same document.

MCP toolWhat it does
command_listDiscover engine command ids, parameter docs and enabled state — accepts filter and enabled_only; returns id, label, menu, shortcut, params, enabled, disabledReason, needsDocument
command_runRun one command by id with optional params and wait — the same ids the UI dispatches
command_batchRun ordered steps with stop_on_error (default true). Not an atomic transaction: earlier successful steps stay applied, with no rollback
doc_inspectLayer tree, history and selection; an empty session returns document:null
render_previewBounded PNG of the document — index and max_side (default 1024, maximum 2048)
ui_inspect / ui_screenshotLive app state and window — bridge mode only, requires the running desktop app
  • Two resources, photocraft://document and photocraft://commands, return the same live JSON as doc_inspect and command_list — handy for clients that prefer reading resources over calling tools.
  • Unknown tool arguments are rejected before execution (JSON-RPC -32602, naming the offending key), and tool failures surface as isError:true — a worker panic becomes a tool error, not a crash.

Connect Claude Code, Cursor or any MCP client

The server is launched by a command, so any MCP client that starts a local server can run it — point the client at photocraft-cli mcp plus the roots you want to allow. Menus for adding MCP servers move between client versions, so treat these as patterns and your client's documentation as the authority.

  • Claude Code (terminal): claude mcp add photocraft -- photocraft-cli mcp --automation-read-root /work/project --automation-write-root /work/project
  • Cursor / Claude Desktop style (JSON): {"mcpServers": {"photocraft": {"command": "photocraft-cli", "args": ["mcp", "--automation-read-root", "/work/project", "--automation-write-root", "/work/project"]}}}
  • After connecting, just ask in plain language — 'open wave.psd, sharpen at 80, add a curves adjustment layer, export a PNG'. The agent discovers exact command ids with command_list and runs them with command_run.

The safety model: what an agent can and cannot touch

  • Filesystem authority is opt-in: reads and writes are confined to the roots you pass; path traversal, escaping absolute paths and escaping symlinks are rejected.
  • Saves are guarded: existing target filenames are refused (including via symlink), so a cancelled or failed job cannot replace an earlier export; only files the job itself created are cleaned up.
  • Batches are not transactions: stop_on_error halts at the first failure, but earlier successful steps stay applied. Inspect with doc_inspect and undo with edit.undo, once per history entry — and undo does not roll back files already written to disk.
  • Experiment on copies: the docs recommend command_run with image.duplicate or history.newDocument before risky edits — both create a new active document and leave the source unchanged.
  • Tools advertise honestly: generic command/control tools conservatively advertise writes, and annotation hints do not grant permission.
  • The desktop app's own control channel (photocraft --control) is authenticated and loopback-only — it is what bridge mode rides on, via --control-token-file.

Progress and cancellation on long jobs

Long renders report progress over MCP: a direct headless command_run of file.export.renderVideo reports frame counts when the request carries a progressToken, with notifications throttled to at most ten per second and cancellation stopping at a frame boundary — only files the job created are removed. Two limits to know: render video stays synchronous even with wait:false, and batch exports do not emit MCP progress or support per-step cancellation. For long video exports, use the single command with a progress token rather than a batch step.

Frequently Asked Questions

Does PhotoCraft have an MCP server?
Yes, built in — no plugin or extra install. photocraft-cli mcp starts it (headless, or --bridge to a running desktop app) and exposes the same 500+ commands the UI uses, plus document inspection and preview rendering. It follows the same conventions as FilmCraft, so one setup pattern covers the craft family.
How do I connect PhotoCraft to Claude Code?
Run: claude mcp add photocraft -- photocraft-cli mcp --automation-read-root <dir> --automation-write-root <dir>. After that, ask in plain language — the agent discovers command ids with command_list and runs them with command_run, the same ids the PhotoCraft UI uses.
Does it work with Cursor?
Yes. Add a local MCP server entry that launches photocraft-cli mcp with your chosen roots (the command + args JSON pattern is shown above). Cursor starts the server, and PhotoCraft's tools — command_list, command_run, command_batch, doc_inspect, render_preview — appear in the agent's tool list.
Is it safe to let an AI agent edit my photos?
The server only reaches files under the read/write roots you pass, rejects path traversal and symlink escapes, and refuses to overwrite existing export targets. Batches are not atomic and undo does not un-write files, so keep the roots narrow and experiment on duplicates (image.duplicate / history.newDocument) — that is the official docs' own recommendation.
What is the difference between MCP and PhotoCraft's JSON control channel?
Both dispatch the same engine commands. The JSON control channel (photocraft --control) is an authenticated, loopback-only channel for the running desktop app — UI state inspection, pointer events, offscreen screenshots. MCP is the standard agent protocol layered on top: your client launches photocraft-cli mcp and gets named tools instead of speaking the raw protocol.
Does the MCP server cost anything?
No — it is part of PhotoCraft, which is free and open source (MIT/Apache-2.0). The optional AI subscriptions sold on the official site ($8–$48/month for cloud generation credits) are unrelated to the local MCP server. This guide site is independent and charges only for its own tutorials and preset packs.

More about ArtCraft

ArtCraft software

The suite explained: free, open-source apps in pure Rust that reimplement the Adobe workflow — what each replaces, what is actually ready, and the official downloads.

ArtCraft Launcher

The official launcher for the Craft App Suite: install, update and open all thirteen apps from one tray app — SHA-256-verified downloads, auto-updates, native Rust (no Electron).

More ArtCraft apps

PhotoCraft

Open-source Photoshop replacement in pure Rust: layers, masks, adjustment layers, layer styles, text, vectors, brushes and real PSD files — free, no subscription required.

FilmCraft

Open-source nonlinear video editor in pure Rust — a free, clean-room take on the Premiere Pro workflow, scriptable and agent-native.

More tutorials

PhotoCraft install & first launch

Download, install and first-launch PhotoCraft on Windows, macOS or in the browser — with the exact official sources.

PhotoCraft adjustments & export

Grade with the 16 adjustment layer types, then export to PSD, PNG, JPEG, WebP or TIFF — with round-trip verification.

More honest comparisons

PhotoCraft vs Photoshop

PhotoCraft vs Adobe Photoshop, honestly compared: real PSD support and the familiar layer workflow for free — with the early-alpha gaps spelled out.