MCP — attach an AI agent

An agent such as Claude drives this editor directly.

Signed in, this works on photovim.com too. Get a connection code below and run one line on your own computer. The code lives for a few minutes and attaches to your tab only.

What is different

What the agent makes stays an editable document, not a single flattened picture.

  • Text arrives as text layers and the background as its own layer, so changing the wording or a colour happens right there.
  • What the agent does is one undo step. If you dislike it, Ctrl+Z takes it back.
  • It runs in the tab you are looking at — same document, same undo history.

Get a connection code

Keep an editor tab open, get a code, then paste the line below into a terminal on your own computer. The code expires in a few minutes.

Sign in to get a code

Connect without installing (remote)

Like Canva and Figma, one URL is enough. No Node needed. For Claude Code the line below is all it takes; once you get a code, the slot is filled in.

claude mcp add --transport http photovim https://photovim.com/mcp --header "Authorization: Bearer connection code"

Other clients use the URL https://photovim.com/mcp with an Authorization: Bearer code header, or https://photovim.com/mcp/code if they cannot send headers. Remotely there is no open_file (it takes a path on your computer), and export returns png/jpg/webp as images only.

Connect with the package (npx)

Add the following to your client's MCP config. Node 22 or newer is all you need — nothing to install. Once you get a code above, the code slot is filled in.

{
  "mcpServers": {
    "photovim": {
      "command": "npx",
      "args": ["-y", "@photovim/mcp", "--url", "wss://photovim.com/cable", "--code", "connection code"]
    }
  }
}

Per client

Claude Code
Put it in .mcp.json in your working folder, or add it with claude mcp add photovim -- npx -y @photovim/mcp --url … --code ….
Claude Desktop · Cursor
Add it under mcpServers in claude_desktop_config.json as is, then restart Claude Desktop.
Codex
Same command and args under [mcp_servers.photovim] in ~/.codex/config.toml.

How to tell it is attached

Look at MCP, to the right of Help in the editor menu bar. The dot in the button is the current state.

  • Green — attached. When an agent runs something, its name is shown too.
  • Yellow — connecting, or reconnecting after the connection dropped.
  • Red — could not join. Check the token or the server.

What works today

Opening and saving documents, selections, creating and arranging and transforming and adjusting layers, adding and editing text, painting brush strokes, removing backgrounds, selecting subjects, AI generation, undo — 34 tools in all.

ToolWhat it doesKind
Connect
list_tabsEditor tabs that are open right nowRead
attachAttach to an editor tab — later tools run there (same document, same undo)Select
get_capabilitiesWhat this editor can do right now — formats, adjustment names, modelsRead
Document
open_fileOpen an image, PSD, .photovim or TIFF as a new tabChange (goes into Undo)
new_documentCreate an empty documentChange (goes into Undo)
list_documentsOpen documents (tabs)Read
select_documentPick a document (tab)Select
exportSave the document to a file (.png .jpg .webp .psd .photovim)Read
Look
get_stateDocument state — size, revision, layer tree, selection, undo depthRead
list_layersLayer list and state (same as get_state)Read
screenshotThe current composite as PNGRead
Selection
rect_selectRectangular selection (document coordinates)Select
select_subjectFind the subject with the in-browser model and select it (the photo never leaves)Select
deselectClear the selectionSelect
selection_to_maskTurn the selection into the active layer's maskChange (goes into Undo)
Layers
select_layerMake one layer active (by id or index)Select
add_layerAdd an empty layer on topChange (goes into Undo)
set_layer_propsLayer name, visibility, opacity, blend modeChange (goes into Undo)
move_layerMove a layer (relative dx/dy or absolute x/y)Change (goes into Undo)
reorder_layerChange layer orderChange (goes into Undo)
transform_layerScale or rotate a layer (text and Smart Object layers keep their values)Change (goes into Undo)
Pixels & adjustments
fill_selectionFill the selection (or the whole layer) with a color — type, shape and Smart Object layers are refused unless rasterize: trueChange (goes into Undo)
paint_strokesPaint brush strokes one by one (points, color, size, opacity, hardness) — you can watch them appear in the editorChange (goes into Undo)
apply_adjustmentApply an adjustment to the active layer (brightness, levels, curves, hue…) — type and shape layers are refused unless rasterize: true; Smart Objects get it as a Smart FilterChange (goes into Undo)
remove_backgroundRemove the background with the in-browser modelChange (goes into Undo)
resize_imageResize the image (all layers together)Change (goes into Undo)
cropCrop the document to a rectangleChange (goes into Undo)
Text
add_textCreate a text layerChange (goes into Undo)
edit_textChange a text layer's content, position or formattingChange (goes into Undo)
AI generation
list_ai_modelsModels available for AI generation, the credits each run costs, and your remaining creditsRead
generate_imageEdit with AI (selection or whole image), make a new image from text, or remove — the result lands on a new layer. Credit models spend your creditsChange (goes into Undo)
ai_job_statusKeep waiting for a long generation and get the result (new layers, credits spent)Read
Batch & undo
batchRun several commands as one bundle — one undo step. With onError=rollback a failure reverts the whole bundleChange (goes into Undo)
undoUndo the last actionChange (goes into Undo)

Limits

Limits are per person. One command counts as one call; a batch counts each of its steps. Reads and writes count the same. Over the limit, the command gets an immediate "rate limited" reply.

Now (everyone)
Per minute300 calls
Per day20,000 calls
Agents attached at once10

Not yet: one-shot results such as "make me a banner" are planned. Today you drive the 34 tools one at a time.

Back to the editor