dcc-mcp-photoshop
Adobe Photoshop adapter bridging AI agents (Claude, Cursor, Copilot) to Photoshop via UXP WebSocket for document and layer management.
README
dcc-mcp-photoshop
Adobe Photoshop adapter for the DCC Model Context Protocol ecosystem. Bridges AI agents (Claude, Cursor, Copilot) to Adobe Photoshop via UXP WebSocket.
⚠️ Pre-Alpha: UXP plugin implementation is pending. API design is stable.
Architecture
AI Agent (Claude / Cursor)
↓ MCP Streamable HTTP (port 8765)
PhotoshopMcpServer [this package, Python]
↓ WebSocket JSON-RPC (port 3000)
UXP Plugin [bridge/uxp-plugin/, JavaScript]
↓ Photoshop UXP API
Adobe Photoshop 2022+
DCC Capabilities:
DccCapabilities(
has_embedded_python=False,
bridge_kind="websocket",
bridge_endpoint="ws://localhost:3000",
snapshot=True,
file_operations=True,
selection=True,
)
Features
Current (v0.1.0 — Placeholder):
- ✅ Package structure and API design
- ✅
PhotoshopBridgeWebSocket client scaffold - ✅ Skill authoring helpers (
ps_success,ps_error,with_photoshop) - ✅
PhotoshopMcpServerwrappingdcc-mcp-core - ⏳ UXP plugin implementation (pending)
- ⏳ WebSocket bridge implementation (pending)
Planned:
- Document management (open, save, export)
- Layer management (create, delete, reorder, blend modes)
- Selection tools (marquee, lasso, magic wand)
- Filter application
- Color adjustments
- Smart Object operations
- Batch processing
Requirements
- Adobe Photoshop 2022+ (UXP support)
- Python 3.8+
dcc-mcp-core >= 0.12.14websockets >= 12.0
Installation
pip install dcc-mcp-photoshop
Or from source:
git clone https://github.com/loonghao/dcc-mcp-photoshop
cd dcc-mcp-photoshop
pip install -e ".[dev]"
Photoshop UXP Plugin Setup
- Install the UXP plugin from
bridge/uxp-plugin/(pending implementation) - Open Photoshop
- Go to Plugins > Browse Plugins
- Install from local manifest
- The plugin starts a WebSocket server on port 3000 automatically
Quick Start
import dcc_mcp_photoshop
handle = dcc_mcp_photoshop.start_server(
port=8765, # MCP HTTP port
ws_port=3000, # Photoshop UXP WebSocket port
)
print(handle.mcp_url())
handle.shutdown()
Skill Authoring Guide
Photoshop skills use get_bridge() to communicate via the UXP WebSocket plugin
instead of importing a DCC Python module directly.
from dcc_mcp_core.skill import skill_entry
from dcc_mcp_photoshop.api import get_bridge, with_photoshop, ps_success
@skill_entry
@with_photoshop
def list_layers(document_index: int = 0, **kwargs) -> dict:
"""List all layers in a Photoshop document."""
bridge = get_bridge()
layers = bridge.call("ps.listLayers", documentIndex=document_index)
return ps_success(
f"Found {len(layers)} layer(s)",
count=len(layers),
layers=[layer["name"] for layer in layers],
)
def main(**kwargs):
return list_layers(**kwargs)
if __name__ == "__main__":
from dcc_mcp_core.skill import run_main
run_main(main)
SKILL.md format
---
name: my-photoshop-skill
description: "Description of what this skill does"
dcc: photoshop
version: "1.0.0"
tags: [photoshop, layers, document]
license: "MIT"
depends: []
---
Setting skill paths
export DCC_MCP_PHOTOSHOP_SKILL_PATHS=/path/to/my/skills
UXP Plugin Protocol
The UXP plugin (JavaScript) runs inside Photoshop and implements a WebSocket server with JSON-RPC 2.0 protocol:
Request format:
{
"jsonrpc": "2.0",
"id": 1,
"method": "ps.listLayers",
"params": {"documentIndex": 0}
}
Response format:
{
"jsonrpc": "2.0",
"id": 1,
"result": [{"name": "Background", "visible": true}]
}
Supported methods (planned):
| Method | Description |
|---|---|
ps.executeScript |
Execute JavaScript/UXP code |
ps.getDocumentInfo |
Get active document metadata |
ps.listDocuments |
List all open documents |
ps.listLayers |
List layers in active document |
ps.createLayer |
Create a new layer |
ps.applyFilter |
Apply a filter to a layer |
ps.exportDocument |
Export document to file |
Roadmap
v0.1.0 — Foundation (current)
- [x] Package structure and API design
- [x] PhotoshopBridge WebSocket client scaffold
- [x] Skill authoring helpers
- [ ] UXP plugin architecture design
v0.2.0 — UXP Plugin + Bridge
- [ ] UXP plugin WebSocket server (JavaScript)
- [ ] Python bridge WebSocket client
- [ ] JSON-RPC 2.0 protocol implementation
- [ ] Authentication and security
v0.3.0 — Document Skills
- [ ] get_document_info skill
- [ ] list_documents skill
- [ ] list_layers skill
- [ ] create_layer skill
- [ ] export_document skill
v0.4.0 — Advanced Skills
- [ ] apply_filter skill
- [ ] color_adjustment skill
- [ ] selection_tool skill
- [ ] smart_object skill
v1.0.0 — Production Ready
- [ ] Smart Object support
- [ ] Batch processing
- [ ] Photoshop 2025+ UXP API compatibility
- [ ] Performance optimizations
Contributing
This project is especially looking for contributors with:
- Adobe UXP / ExtendScript experience
- Photoshop automation knowledge
- WebSocket and JSON-RPC protocol experience
See CONTRIBUTING.md for guidelines.
License
MIT — see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.