Adobe AgentBLOCK
None
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
adb-mcp is a proof of concept project to enabled AI control of Adobe tools (Adobe Photoshop and Adobe Premiere) by providing an interface to LLMs via the MCP protocol.
The project is not endorsed by nor supported by Adobe.
It has been tested with Claude desktop (Mac and Windows) from Anthropic, as well as the OpenAI Agent SDK, and allows AI clients to control Adobe Photoshop and Adobe Premiere. Theoretically, it should work with any AI App / LLM that supports the MCP protocol, and is built in a way to support multiple Adobe applications.
Example use cases include:
- Giving Claude step by step instruction on what to do in Photoshop, providing a conversational based interface (particularly useful if you are new to Photoshop).
- Giving Claude a task (create an instagram post that looks like a Polariod image, create a double exposure) and letting it create it from start to finish to use as a template.
- Asking Claude to generate custom Photoshop tutorials for you, by creating an example file, then step by step instructions on how to recreate.
- As a Photoshop utility tool (have Claude rename all of your layers into a consistent format)
- Have Claude create new Premiere projects pre-populations with clips, transitions, effects and Audio
The Premiere agent is a bit more limited in functionality compared to the Photoshop agent, due to current limitations of the Premiere plugin API.
How it works
The proof of concept works by providing:
- A MCP Server that provides an interface to functionality within Adobe Photoshop to the AI / LLM
- A Node based command proxy server that sits between the MCP server and Adobe app plugins
- An Adobe app (Photoshop and Premiere) plugin that listens for commands, and drives the programs
AI MCP Server Command Proxy Server Photoshop / Premiere UXP Plugin Photoshop / Premiere
5511d4beb1f9OBSERVED · 2026-09-28Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add uxp-template-ps-starter -- npx -y [email protected]
{
"mcpServers": {
"uxp-template-ps-starter": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (93)
44 read · 42 write · 7 destructive. Blast radius: 7 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
add_black_and_white_adjustment_layer | write | Adds a Black & White adjustment layer to the specified layer. |
add_black_and_white_effect | write | |
add_brightness_contrast_adjustment_layer | write | Adds an adjustment layer to the layer with the specified ID to adjust brightness and contrast |
add_color_balance_adjustment_layer | write | Adds an adjustment layer to the layer with the specified ID to adjust color balance |
add_drop_shadow_layer_style | destructive | Adds a drop shadow layer style to the layer with the specified ID |
add_gaussian_blur_effect | write | |
add_layer_mask_from_selection | write | Creates a layer mask on the specified layer defined by the active selection. |
add_marker_to_sequence | write | |
add_media_to_sequence | write | |
add_motion_blur_effect | write | |
add_stroke_layer_style | write | Adds a stroke layer style to the layer with the specified ID. |
add_tint_effect | write | |
add_vibrance_adjustment_layer | write | Adds an adjustment layer to layer with the specified ID to adjust vibrance and saturation |
align_content | read | |
append_video_transition | read | |
apply_gaussian_blur | write | Applies a Gaussian Blur to the layer with the specified ID |
apply_motion_blur | write | Applies a Motion Blur to the layer with the specified ID |
call_batch_play_command | read | |
clear_selection | destructive | Clears / deselects the current selection |
close_gaps_on_sequence | read | |
copy_merged_selection_to_clipboard | read | Copies the selected pixels from all visible layers to the system clipboard. |
copy_selection_to_clipboard | read | Copies the selected pixels from the specified layer to the system clipboard. |
create_bin_in_active_project | write | |
create_document | write | |
create_gradient_layer_style | write | |
create_multi_line_text_layer | write | |
create_pixel_layer | write | Creates a new pixel layer with the specified ID |
create_project | write | |
create_sequence_from_media | write | |
create_single_line_text_layer | write | |
crop_document | read | Crops the document to the active selection. |
cut_selection_to_clipboard | read | Copies and removes (cuts) the selected pixels from the specified layer to the system clipboard. |
delete_layer | destructive | Deletes the layer with the specified ID |
delete_selection | destructive | Removes the pixels within the selection on the pixel layer with the specified ID |
duplicate_document | read | Duplicates the current Photoshop Document into a new file |
duplicate_layer | read | |
edit_text_layer | write | |
execute_extend_script | write | |
export_frame | read | Captures a specific frame from the sequence at the given timestamp |
export_layers_as_png | read | Exports multiple layers from the Photoshop document as PNG files. |
export_png | read | |
export_sequence | read | |
fill_selection | read | Fills the selection on the pixel layer with the specified ID |
flatten_all_layers | read | |
flip_layer | read | Flips the layer with the specified ID on the specified axis. |
generate_image | read | Uses Adobe Firefly Generative AI to generate an image on a new layer with the specified layer name. |
generative_fill | read | Uses Adobe Firefly Generative AI to perform generative fill within the current selection. |
get_active_document_info | read | |
get_document_image | read | Returns a jpeg of the current visible Photoshop document as an MCP Image object that can be displayed. |
get_document_info | read | Retrieves information about the currently active document. |
get_documents | read | |
get_layer_bounds | read | Returns the pixel bounds for the layer with the specified ID |
get_layer_image | read | Returns a jpeg of the specified layer |
get_layers | write | Returns a nested list of dicts that contain layer info and the order they are arranged in. |
get_project_info | read | |
get_sequence_frame_image | read | Returns a jpeg of the specified timestamp in the specified sequence in Premiere pro as an MCP Image object that can be displayed. |
group_layers | read | |
harmonize_layer | read | Harmonizes (matches lighting and other settings) the selected layer with the background layers. |
import_media | write | |
invert_selection | read | Inverts the current selection in the Photoshop document |
move_layer | write | Moves the layer within the layer stack based on the specified position |
move_project_items_to_bin | write | |
open_file | read | |
open_photoshop_file | read | Opens the specified Photoshop-compatible file within Photoshop. |
open_project | read | Opens the Premiere project at the specified path. |
paste_from_clipboard | read | Pastes the current clipboard contents onto the specified layer. |
place_image | read | Places the image at the specified path on the existing pixel layer with the specified id. |
rasterize_layer | read | Converts the specified layer into a rasterized (flat) image. |
remove_background | destructive | Automatically removes the background of the image in the layer with the specified ID and keeps the main subject |
remove_item_from_sequence | destructive | |
remove_layer_mask | destructive | Removes the layer mask from the specified layer. |
rename_layers | write | Renames one or more layers |
rotate_layer | read | Rotates the layer with the specified ID. |
save_document | write | Saves the current Photoshop Document |
save_document_as | write | Saves the current Photoshop document to the specified location and format. |
save_document_image_as_png | write | |
save_project | write | |
save_project_as | write | Saves the current Premiere project to the specified location. |
scale_layer | read | Scales the layer with the specified ID. |
select_ellipse | read | Creates an elliptical selection and selects the specified layer |
select_polygon | read | Creates an n-sided polygon selection and selects the specified layer |
select_rectangle | read | Creates a rectangular selection and selects the specified layer |
select_sky | read | Automatically selects the sky in the specified layer. |
select_subject | read | Automatically selects the subject in the specified layer. |
set_active_document | write | |
set_active_sequence | write | |
set_audio_track_mute | write | |
set_clip_disabled | write | |
set_clip_start_end_times | write | |
set_layer_properties | write | Sets the blend mode and opacity properties on the layer with the specified ID |
set_layer_visibility | write | Sets the visibility of the layer with the specified ID |
set_video_clip_properties | write | |
translate_layer | read |
Trust audit
BLOCKgrade D · trust 63/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (6 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (12)
return Function("return this")();return Function("return this")();return Function("return this")();let url = `http://127.0.0.1:3030/commands/get/${APPLICATION}/`;add_drop_shadow_layer_style, clear_selection, delete_layer, delete_selection, remove_background, remove_item_from_sequence, remove_layer_mask
.debug
.debug
jpeg_bytes = base64.b64decode(base64_data)
jpeg_bytes = base64.b64decode(base64_data)
raw_bytes = base64.b64decode(response['rawDataBase64'])
express, socket.io, socket.io-client
fonttools, python-socketio, mcp, requests, websocket-client
Gates applied: no_behavioural_pass.
5511d4beb1f9full audit observations/trust-audit/mcp-server/mikechambers__adobe-agent.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-28 | 5511d4beb1f9 | BLOCK | D | 63 | first audit |
Questions
What is the Adobe Agent MCP server?
None
What tools does Adobe Agent expose?
93 in total: 44 read-only, 42 that write, and 7 that can delete or overwrite (add_drop_shadow_layer_style, clear_selection, delete_layer, delete_selection, remove_background). Every one is listed on this page with its risk.
Is Adobe Agent safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (63/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 7 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Adobe Agent need?
No credential environment variables were found in its source, so it appears to need none.
How current is this page?
The grade is for one exact copy of the source (5511d4beb1f9), read on 2026-09-28. The repository is watched and re-audited when it changes.