使用说明
Photoshop MCP服务器
Model Context Protocol (MCP) 使用服务器macOS打开Windows单击功能区上Photoshop中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
概要
此项目包括:FastAPI来修改标记元素的显示属性MCP实施服务器,通过以下方法Photoshop控制:
macOS
- AppleScript后端-所有Photoshop在版本中工作
- UXP Plug-in后端-Photoshop CC 2021以上动作(WebSocket通信)
视窗
- PowerShell后端-所有Photoshop在版本中工作
- UXP Plug-in后端-Photoshop CC 2021以上动作(WebSocket通信)
机能
- FastAPI/Starlette使用REST/WebSocket端点
- 跨平台支持(macOS/Windows)
- AppleScript/PowerShell后端Photoshop控制
- UXP Plug-in后端Photoshop控制(WebSocket通信)
- 插件打包功能
- 缩略图生成功能(支持WebSocket流式传输)
- Cluster多个模式Photoshop管理实例
- LLM自动触摸功能
必要条件
- Python 3.11以上
- macOS在工作空间的边缘Windows 10/11
- Adobe Photoshop 2023以上
安装
pip install photoshop-mcp-server
或者,从源安装:
git clone https://github.com/StarBoze/photoshop-mcp-server.git
cd photoshop-mcp-server
pip install -e .
详细的安装步骤是安装指南来修改标记元素的显示属性。
环境构建详细信息
创建和管理虚拟环境
Python的虚拟环境可避免依赖性冲突:
# 仮想環境の作成
python -m venv venv
# 仮想環境の有効化(macOS/Linux)
source venv/bin/activate
# 仮想環境の有効化(Windows)
venv\Scripts\activate
# 依存パッケージのインストール
pip install -e .
从属软件包
主要依赖包:
- FastAPI: REST单击功能区上WebSocket实施端点
- Uvicorn: ASGI服务器
- Pydantic: 数据验证
- Starlette: WebSocket支持
- psutil: 群集模式
- grpcio: gRPC群集模式
- litellm: LLM集成(自动触摸功能)
运行模式
服务器可以在以下模式下运行:
-
正常模式:
photoshop-mcp-server start- 在后台启动服务器
-
前台模式:
photoshop-mcp-server start --foreground- 在终端显示日志的同时运行
- 便于调试
-
调试模式:
photoshop-mcp-server start --debug- 查看详细日志
- 显示请求和响应的内容
-
UXP模式:
photoshop-mcp-server start --bridge-mode uxp- UXP使用插件Photoshop控制
使用方法
基本用法
# サーバーを起動(プラットフォームに応じたデフォルトバックエンド)
photoshop-mcp-server start
# ヘルプを表示
photoshop-mcp-server --help
指定特定于平台的后端
# macOSでAppleScriptバックエンドを使用
photoshop-mcp-server start --bridge-mode applescript
# WindowsでPowerShellバックエンドを使用
photoshop-mcp-server start --bridge-mode powershell
# UXPバックエンドを使用(クロスプラットフォーム)
photoshop-mcp-server start --bridge-mode uxp
详细的使用方法是文档来修改标记元素的显示属性。
UXP使用后端
UXP使用后端需要:
- UXP打包插件
photoshop-mcp-server package_plugin
- UXP显示插件安装过程
photoshop-mcp-server install_plugin
-
按照显示的步骤安装插件
-
UXP启用后端并启动服务器
photoshop-mcp-server start --bridge-mode uxp
- API请求时
bridge_mode单击功能区上uxp设置为
POST /openFile
{
"path": "/path/to/file.psd",
"bridge_mode": "uxp"
}
UXP插件安装详细信息
UXP单击功能区上的Adobe UXP Developer Tool中所述修改相应参数的值。
Adobe UXP Developer Tool安装
- Adobe UXP开发工具下载最新版本
- 运行下载的安装程序并按照说明安装
- 安装完成后Adobe UXP Developer Tool启动
插件安装说明
-
打包插件
photoshop-mcp-server package_plugin因此
dist/photoshop-mcp.zip将条目添加到文档注册表。 -
UXP Developer Tool在中添加插件
- UXP Developer Tool单击“添加插件”按钮
- 已创建
dist/photoshop-mcp.zip列表框中,此格式对应于条目“无” - 加载插件(单击加载按钮)
-
Photoshop启用
- Photoshop启动(如果已启动,则重新启动)
- 从插件菜单中选择“Photoshop MCP”进行启用
-
MCP启动服务器(UXP模式)
photoshop-mcp-server start --bridge-mode uxp -
接続确认
- 如果服务器日志显示“UXP Plugin connected”消息,则连接成功
- 如果连接失败,请单击故障排除的双曲正切值
WebSocket端点
UXP在动态输入提示中单击WebSocket端点也可用:
ws://localhost:5001/ws
WebSocket直接通过JSON可以发送和接收消息。
跨平台支持详细信息
v0.2.0在工作空间的边缘Photoshop MCP Server完全支持跨平台。添加了以下功能:
平台发现和抽象
platform_utils.py模块提供:
- 平台检测函数(
get_platform(),is_windows(),is_macos()) - 特定于平台的设置(
get_platform_config()) - 特定于平台的临时文件管理(
get_temp_file()) - 平台条件分支(
platform_specific解码器)
# プラットフォームに応じた処理の例
from photoshop_mcp_server.bridge.platform_utils import platform_specific
@platform_specific(
windows_func=windows_specific_function,
macos_func=macos_specific_function,
default_func=default_function
)
def process_file(path):
# プラットフォームに応じた関数が自動的に呼び出される
pass
性能优化
- 通过脚本高速缓存提高运行速度(平均速度提高30%)
- 脚本执行超时设置(默认值为30秒)
- 简化临时文件管理(自动清理)
- 优化并行处理(在处理大量文件时加快50%)
- 减少内存使用(大PSD文件处理时减少40%)
阶段,阶段v1.1新增功能
- UXP Plug-in后端支持(WebSocket通信)
- 插件打包功能
- 安装过程显示功能
- 扩展健康检查端点(检查UXP插件的连接状态)
阶段,阶段v1.2新增功能
缩略图生成功能
- PSD从文件生成缩略图REST端点
- 以指定的尺寸、形式(JPEG/PNG)生成缩略图
- Base64返回编码图像数据
POST /generateThumbnail
{
"path": "/path/to/file.psd",
"width": 256,
"height": 256,
"format": "jpeg",
"quality": 80,
"bridge_mode": "uxp"
}
WebSocket流式传输
- 实时流式传输缩略图生成进度WebSocket端点
- 通知处理的各步骤(打开文件、缩略图生成、图像处理等)的进展状况
- 发生错误时的实时通知
WebSocketエンドポイント: ws://localhost:5001/generateThumbnail/stream
リクエスト:
{
"path": "/path/to/file.psd",
"width": 256,
"height": 256,
"format": "jpeg",
"quality": 80,
"bridge_mode": "uxp"
}
レスポンス(ストリーミング):
{
"type": "start",
"data": { ... }
}
{
"type": "progress",
"data": { "step": "opening_file", "progress": 10, "message": "ファイルを開いています..." }
}
{
"type": "progress",
"data": { "step": "generating_thumbnail", "progress": 30, "message": "サムネイルを生成しています..." }
}
...
{
"type": "complete",
"data": { "width": 256, "height": 256, "format": "jpeg" }
}
阶段,阶段v2.0新增功能
Cluster模式
Cluster模式为多个Photoshop用于管理实例和分布式处理作业的功能。 它是为了有效处理大量图像处理任务而设计的。
主要功能
- 多个Photoshop管理实例(节点)
- 作业分配和负载分配
- 自动故障切换
- 健康检查和监控
- 各种路由策略(例如,最小负载、循环、最小延迟等)
Cluster使用模式
- 启动调度程序
# ディスパッチャーを起動
photoshop-mcp-server start_cluster --host 127.0.0.1 --port 8001
- 启动节点
# ノード1を起動
photoshop-mcp-server start_node --host 127.0.0.1 --port 8002 --dispatcher 127.0.0.1:8001
# ノード2を起動
photoshop-mcp-server start_node --host 127.0.0.1 --port 8003 --dispatcher 127.0.0.1:8001
- API使用发送作业
POST http://127.0.0.1:8001/submit_job
{
"job_type": "open_file",
"payload": {
"path": "/path/to/file.psd"
},
"priority": 1
}
设定例
# ディスパッチャー設定
dispatcher_config = {
"host": "127.0.0.1",
"port": 8001,
"routing_strategy": "least_busy", # least_busy, round_robin, random, lowest_latency, capability_based
"node_timeout": 60.0,
"job_timeout": 300.0,
"health_check_interval": 30.0
}
# ノード設定
node_config = {
"host": "127.0.0.1",
"port": 8002,
"dispatcher": "127.0.0.1:8001",
"capabilities": ["open_file", "save_file", "export_layer", "run_action"],
"max_concurrent_jobs": 5
}
LLM自动触摸功能
LLM自动触摸功能LiteLLM的规格化距离的幂函数。 GPT-4 Vision中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
主要功能
- 图像自动分析
- 自动生成触摸参数
- Photoshop自动执行操作
- 自定义提示调整
LLM使用自动触摸
POST /autoRetouch
{
"path": "/path/to/image.jpg",
"instructions": "肌をなめらかにして、コントラストを上げてください",
"bridge_mode": "uxp"
}
响应:
{
"analysis": {
"basic_info": {
"image_type": "ポートレート",
"main_subject": "女性",
"overall_impression": "自然光で撮影された屋外ポートレート"
},
"technical_characteristics": {
"brightness": {
"status": "やや暗い",
"value": -15
},
"contrast": {
"status": "弱い",
"value": -20
},
...
},
...
},
"retouch_actions": [
{
"type": "brightness_contrast",
"params": {
"brightness": 15,
"contrast": 20
}
},
{
"type": "skin_smoothing",
"params": {
"strength": 30,
"detail": 50
}
},
...
],
"execution_result": {
"status": "success",
"actions_applied": 5,
"execution_time": 3.5
}
}
自定义提示示例
この画像は屋外で撮影されたポートレートです。以下の点に注目してレタッチしてください:
1. 肌をなめらかにする(強さ: 中程度)
2. 目の明るさとコントラストを上げる
3. 背景をわずかにぼかす
4. 全体的な色調を暖かみのある雰囲気に調整する
MCP客户端设置
Photoshop MCP Server打开AI助手等的MCP与客户端协作需要配置文件。
配置文件结构
配置文件通常为mcp-config/photoshop-mcp-server.json中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长:
{
"server_info": {
"name": "photoshop-mcp-server",
"description": "Photoshop MCP Server for macOS and Windows",
"version": "0.2.0",
"endpoint": "http://localhost:5001"
},
"tools": [
{
"name": "open_file",
"description": "Open a file in Photoshop",
"input_schema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file"
},
"bridge_mode": {
"type": "string",
"description": "Bridge mode to use (applescript, powershell, uxp)",
"default": "default"
}
},
"required": ["path"]
}
},
{
"name": "save_file",
"description": "Save the current file",
"input_schema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to save the file"
},
"format": {
"type": "string",
"description": "File format (psd, jpg, png, tiff)",
"default": "psd"
},
"bridge_mode": {
"type": "string",
"description": "Bridge mode to use",
"default": "default"
}
},
"required": ["path"]
}
},
{
"name": "run_action",
"description": "Run a Photoshop action",
"input_schema": {
"type": "object",
"properties": {
"action_set": {
"type": "string",
"description": "Action set name"
},
"action_name": {
"type": "string",
"description": "Action name"
},
"bridge_mode": {
"type": "string",
"description": "Bridge mode to use",
"default": "default"
}
},
"required": ["action_set", "action_name"]
}
},
{
"name": "generate_thumbnail",
"description": "Generate a thumbnail from a PSD file",
"input_schema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the PSD file"
},
"width": {
"type": "integer",
"description": "Thumbnail width",
"default": 256
},
"height": {
"type": "integer",
"description": "Thumbnail height",
"default": 256
},
"format": {
"type": "string",
"description": "Image format (jpeg, png)",
"default": "jpeg"
},
"quality": {
"type": "integer",
"description": "Image quality (1-100)",
"default": 80
},
"bridge_mode": {
"type": "string",
"description": "Bridge mode to use",
"default": "default"
}
},
"required": ["path"]
}
},
{
"name": "auto_retouch",
"description": "Auto retouch an image using LLM",
"input_schema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the image"
},
"instructions": {
"type": "string",
"description": "Retouch instructions"
},
"bridge_mode": {
"type": "string",
"description": "Bridge mode to use",
"default": "default"
}
},
"required": ["path", "instructions"]
}
}
],
"resources": [
{
"uri": "photoshop://status",
"description": "Get server status"
},
{
"uri": "photoshop://version",
"description": "Get server version"
},
{
"uri": "photoshop://plugin/status",
"description": "Get UXP plugin status"
}
]
}
配置文件部署
mcp-config创建目录(如果不存在)- 将上述设定文件
mcp-config/photoshop-mcp-server.json保存为 - MCP允许客户端读取此配置文件
客户端实现示例
JavaScript(WebSocket)
// WebSocketを使用したサムネイル生成ストリーミング
const ws = new WebSocket('ws://localhost:5001/generateThumbnail/stream');
ws.onopen = () => {
// リクエスト送信
ws.send(JSON.stringify({
path: '/path/to/file.psd',
width: 256,
height: 256,
format: 'jpeg',
quality: 80,
bridge_mode: 'uxp'
}));
};
ws.onmessage = (event) => {
const message = JSON.parse(event.data);
switch (message.type) {
case 'start':
console.log('サムネイル生成開始:', message.data);
break;
case 'progress':
console.log(`進捗: ${message.data.progress}% - ${message.data.message}`);
updateProgressBar(message.data.progress);
break;
case 'complete':
console.log('サムネイル生成完了:', message.data);
break;
case 'error':
console.error('エラー:', message.data.message);
break;
}
};
ws.onerror = (error) => {
console.error('WebSocketエラー:', error);
};
ws.onclose = () => {
console.log('WebSocket接続終了');
};
Python(REST API)
import requests
import base64
from PIL import Image
import io
# サムネイル生成リクエスト
response = requests.post('http://localhost:5001/generateThumbnail', json={
'path': '/path/to/file.psd',
'width': 256,
'height': 256,
'format': 'jpeg',
'quality': 80,
'bridge_mode': 'uxp'
})
if response.status_code == 200:
data = response.json()
# Base64エンコードされた画像データをデコード
image_data = base64.b64decode(data['thumbnail'])
# PILで画像を開く
image = Image.open(io.BytesIO(image_data))
# 画像を保存
image.save('thumbnail.jpg')
print(f"サムネイル生成成功: {data['width']}x{data['height']} ({data['format']})")
else:
print(f"エラー: {response.status_code} - {response.text}")
Python(集群API)
import requests
# ジョブの送信
response = requests.post('http://localhost:8001/submit_job', json={
'job_type': 'auto_retouch',
'payload': {
'path': '/path/to/image.jpg',
'instructions': '肌をなめらかにして、コントラストを上げてください'
},
'priority': 2
})
if response.status_code == 200:
data = response.json()
job_id = data['job_id']
print(f"ジョブ送信成功: {job_id}")
# ジョブのステータス確認
status_response = requests.get(f'http://localhost:8001/job_status/{job_id}')
if status_response.status_code == 200:
status_data = status_response.json()
print(f"ジョブステータス: {status_data['status']}")
else:
print(f"エラー: {response.status_code} - {response.text}")
活用事例
Photoshop MCP Server来修改标记元素的显示属性AI从助手和其他应用程序Photoshop进行动态观察时的轴心点。以下是一些主要的案例:
AI自动助理图像编辑
-
基于提示的图像编辑
- “模糊这张照片的背景,让前景的人物变得明亮”这样的自然语言指示Photoshop的作用相同
- 使用自然语言指示复杂的编辑步骤AI表示Photoshop转换为命令执行
-
自动批处理
- “对文件夹内的所有图像应用相同的编辑”这样的指示统一处理多个文件
- 自动调整图像大小、格式转换、滤镜应用等
LLM自动触摸功能
-
图像分析和自动校正
- AI分析图像,自动确定亮度、对比度、饱和度等最佳调整值
- 自动执行肖像照片的皮肤修正、风景照片的色调修正等
-
样式传输和创造性编辑
- “把这张照片编辑成傍晚的气氛”这样的指示进行样式传送
- AI中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长
工作流集成
-
与其他工具协作
- Web应用程序的图像编辑请求处理
- 与图像管理系统协作的编辑工作流自动化
-
后台处理
- 无头模式下的图像处理(无UI执行)
- 服务器环境中的海量图像处理
基于集群模式的分布式处理
-
多个Photoshop并行实例
- 大量的图像Photoshop分布在实例中
- 大幅提高和提高处理速度
-
负载均衡和冗余
- 根据处理负荷动态作业分配
- 在某些节点失败时继续
具体的用例
-
E商业产品图片批量处理
- 自动去除背景、统一尺寸、添加水印等
- 批量生成多个备选方案的产品图像
-
摄影棚后处理自动化
- 肖像照片的皮肤修正,自动调整色调
- 根据客户要求应用编辑样式
-
市场营销素材的大量生成
- 在同一设计模板中应用不同的文本或图像
- 为社交媒体自动生成多大小备选方案
-
优化图像存档
- 自动恢复和优化旧照片
- 添加元数据并标准化图像格式
AI与助手合作
Photoshop MCP Server单击功能区上AI从助手那里Photoshop中所述修改相应参数的值。
协作机制
- MCP单击功能区上AI注册助手
- AI我的助手MCP通过协议Photoshop MCP Server通信
- Photoshop MCP服务器がPhotoshopを制御
示例提示
Photoshopで以下の操作を行ってください:
1. 画像ファイル "/path/to/image.jpg" を開く
2. 明るさとコントラストを調整して、画像を明るくする
3. 結果を "/path/to/output.jpg" として保存する
AI助手响应示例
Photoshopでの操作を実行します。
1. 画像ファイルを開きます...
- ファイル: /path/to/image.jpg
- ステータス: 成功
2. 明るさとコントラストを調整します...
- 明るさ: +15
- コントラスト: +10
- ステータス: 成功
3. 結果を保存します...
- 保存先: /path/to/output.jpg
- 形式: JPEG
- 品質: 90%
- ステータス: 成功
すべての操作が正常に完了しました。
协作时的注意事项
- AI助手必须能够访问本地文件系统
- 建议使用绝对路径指定文件路径
- 处理大文件可能需要很长时间
- UXP单击功能区上的Photoshop必须已启动
故障排除
常见问题和解决办法
服务器启动时出错
问题:服务器未启动或启动后立即退出
解決策:
- 检查端口5001是否被其他应用程序使用
# macOS/Linux lsof -i :5001 # Windows netstat -ano | findstr :5001 - 启动时指定另一个端口
photoshop-mcp-server start --port 5002 - 检查日志文件
cat ~/.photoshop_mcp_server/logs/server.log
UXP插件连接错误
问题: UXP插件无法连接到服务器
解決策:
- Photoshop确认已启动
- UXP确保已正确安装插件
- 确保服务器和插件使用相同的端口
- 防火墙WebSocket确认连接是否被阻止
- 重新启动服务器Photoshop重新启动
AppleScript/PowerShell错误
问题: AppleScript在工作空间的边缘PowerShell后端出现错误
解決策:
- Photoshop确认已启动
- 检查脚本执行权限
- macOS:
sudo chmod +x /usr/bin/osascript - Windows: PowerShell查看执行策略
Get-ExecutionPolicy
- macOS:
- 在调试模式下查看详细日志
photoshop-mcp-server start --debug --foreground
日志文件位置
日志文件保存在以下位置:
- macOS:
~/.photoshop_mcp_server/logs/ - 窗户:
%USERPROFILE%\.photoshop_mcp_server\logs\
主要日志文件:
server.log:服务器主日志api.log: API记录请求和响应bridge.log:后端(AppleScript/PowerShell/UXP)日志cluster.log: Cluster模式日志
支持和反馈
问题没有解决的情况下,包括以下信息GitHubのIssue创建:
- 正在使用OS(包括版本)
- Photoshop的版本
- 执行的命令
- 错误信息
- 日志文件的相关部分
许可证
MIT许可证
版权所有(C)2025 StarBozehttps://github.com/StarBoze