内容
# Photoshop MCP Windows-First
> 为本地MCP工作流提供非官方的Adobe Photoshop自动化工具。不隶属于或得到Adobe Inc.的认可。
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
[]()
一个用于从AI助手控制Adobe Photoshop的模型上下文协议(MCP)服务器,具有Windows优先的工作流层、结构化状态、烟雾测试的操作回放,以及一个用于高保真图像编辑的捆绑Codex技能。
> **🎨 90+ 工具** | **🖥️ Windows优先** | **🧠 捆绑Codex技能** | **🔧 ExtendScript + UI回退** | **🧪 真实的烟雾覆盖**
## 功能
- ✅ **支持Windows和macOS**
- ✅ **支持Photoshop 2012-2025+**
- ✅ **ExtendScript API**:通过AppleScript/COM自动化实现通用兼容性
- ✅ **Windows优先的控制层**:结构化状态、目标、提示、资源和UI恢复工具
- ✅ **自动检测**:自动在您的系统上查找Photoshop安装
- ✅ **90+ 工具**:全面的Photoshop自动化
- ✅ **文档管理**:创建、打开、保存、关闭、裁剪文档
- ✅ **图层操作**:创建、删除、复制、合并、转换图层
- ✅ **图层属性**:不透明度、混合模式、可见性、锁定
- ✅ **文本格式化**:字体、大小、颜色、对齐控制
- ✅ **图像放置**:放置图像、打开文件、适应文档
- ✅ **滤镜**:高斯模糊、锐化、噪声、运动模糊
- ✅ **颜色调整**:亮度/对比度、色相/饱和度、自动色阶/对比度
- ✅ **选择和蒙版**:矩形选择、图层蒙版
- ✅ **历史控制**:撤销/重做操作、查看历史状态
- ✅ **动作**:播放录制的动作、执行自定义脚本
- ✅ **基于Fixture的烟雾动作**:捆绑的`MCP Smoke / 动作 1`动作Fixture,用于无人值守验证
- ✅ **自动栅格化**:在需要时自动转换图层
- ✅ **上下文跟踪**:在每个操作后返回文档/图层状态,以实现AI上下文感知
- ✅ **捆绑Codex技能**:`skills/image-editing-agent`与此MCP服务器对齐
## 快速入门
```bash
git clone https://github.com/rookietopred02-gif/photoshop-mcp-windows-first.git
cd photoshop-mcp-windows-first
npm install
npm run build
```
## 安装
### 从源代码
```bash
git clone https://github.com/rookietopred02-gif/photoshop-mcp-windows-first.git
cd photoshop-mcp-windows-first
npm install
npm run build
```
## 配置
### 对于Cursor
将以下内容添加到您的Cursor设置(`.cursor/config.json`或工作区设置):
```json
{
"mcpServers": {
"photoshop": {
"command": "node",
"args": ["C:/path/to/photoshop-mcp-windows-first/dist/index.js"],
"env": {
"PHOTOSHOP_PATH": "C:/Program Files/Adobe/Adobe Photoshop 2024/Photoshop.exe",
"LOG_LEVEL": "1"
}
}
}
}
```
### 对于Claude Desktop
将以下内容添加到您的Claude Desktop配置(`~/Library/Application Support/Claude/claude_desktop_config.json`在macOS上或`%APPDATA%\Claude\claude_desktop_config.json`在Windows上):
```json
{
"mcpServers": {
"photoshop": {
"command": "node",
"args": ["C:/path/to/photoshop-mcp-windows-first/dist/index.js"],
"env": {
"PHOTOSHOP_PATH": "C:/Program Files/Adobe/Adobe Photoshop 2024/Photoshop.exe",
"LOG_LEVEL": "1"
}
}
}
}
```
### 环境变量
- `PHOTOSHOP_PATH`:(可选)指定自定义Photoshop安装路径
- `LOG_LEVEL`: 日志级别(0=DEBUG,1=INFO,2=WARN,3=ERROR)
## 捆绑的Codex技能
该仓库包括在`skills/image-editing-agent`处的对齐Codex技能。
要在本地安装它:
```powershell
Copy-Item -Recurse -Force `
".\\skills\\image-editing-agent" `
"$HOME\\.codex\\skills\\image-editing-agent"
```
该技能经过调整:
- 优先使用结构化的Photoshop MCP工具而不是原始脚本
- 在重大编辑后使用检查点和验证
- 将默认Photoshop动作视为不可靠,除非已经证明是无人值守的
- 与捆绑的烟雾测试的`MCP Smoke`动作Fixture一起干净地工作,当需要动作回放时
## 验证
内置了真实机器验证:
```bash
npm run lint
npm test
npm run test:real
```
`npm run test:real`使用捆绑的Fixture-backed动作烟雾路径,而不是探测随机安装的默认动作。
## 可用工具
### 连接与信息
#### `photoshop_ping`
测试与Photoshop的连接。
```javascript
// 示例:检查Photoshop是否可访问
photoshop_ping()
```
#### `photoshop_get_version`
获取Photoshop版本信息。
```javascript
// 示例:获取版本详细信息
photoshop_get_version()
```
### 文档管理
#### `photoshop_create_document`
创建新的Photoshop文档。
**参数:**
- `width`(数字,必填):文档宽度(像素)
- `height`(数字,必填):文档高度(像素)
- `resolution`(数字,可选):DPI分辨率(默认:72)
- `colorMode`(字符串,可选):颜色模式 - RGB,CMYK或Grayscale(默认:RGB)
```javascript
// 示例:创建1920x1080 RGB文档
photoshop_create_document({
width: 1920,
height: 1080,
resolution: 72,
colorMode: "RGB"
})
```
#### `photoshop_get_document_info`
获取活动文档的信息。
```javascript
// 示例:获取当前文档详细信息
photoshop_get_document_info()
```
#### `photoshop_save_document`
保存活动文档。
**参数:**
- `path`(字符串,必填):保存到的完整路径
- `format`(字符串,可选):PSD,JPEG或PNG(默认:PSD)
- `quality`(数字,可选):JPEG质量1-12(默认:8)
```javascript
// 示例:保存为JPEG
photoshop_save_document({
path: "/Users/username/Desktop/output.jpg",
format: "JPEG",
quality: 10
})
```
#### `photoshop_close_document`
关闭活动文档。
**参数:**
- `save`(布尔值,可选):保存后关闭(默认:false)
```javascript
// 示例:关闭而不保存
photoshop_close_document({ save: false })
```
### 图层操作
#### `photoshop_create_layer`
创建新的图层。
**参数:**
- `name`(字符串,可选):图层名称
```javascript
// 示例:创建命名图层
photoshop_create_layer({ name: "Background" })
```
#### `photoshop_delete_layer`
删除活动图层。
```javascript
// 示例:删除当前图层
photoshop_delete_layer()
```
#### `photoshop_create_text_layer`
创建文本图层。
**参数:**
- `text`(字符串,必填):文本内容
- `x`(数字,可选):X位置(像素)(默认:100)
- `y`(数字,可选):Y位置(像素)(默认:100)
- `fontSize`(数字,可选):字体大小(点)(默认:24)
```javascript
// 示例:创建文本图层
photoshop_create_text_layer({
text: "Hello World",
x: 200,
y: 150,
fontSize: 48
})
```
#### `photoshop_fill_layer`
用纯色填充活动图层。
**参数:**
- `red`(数字,必填):红色分量(0-255)
- `green`(数字,必填):绿色分量(0-255)
- `blue`(数字,必填):蓝色分量(0-255)
```javascript
// 示例:填充为蓝色
photoshop_fill_layer({
red: 0,
green: 100,
blue: 255
})
```
#### `photoshop_get_layers`
获取活动文档中的所有图层列表。
```javascript
// 示例:列出所有图层
photoshop_get_layers()
```
#### `photoshop_set_layer_opacity`
设置活动图层的不透明度。
**参数:**
- `opacity`(数字,必填):不透明度值(0-100)
```javascript
// 示例:设置为75%不透明度
photoshop_set_layer_opacity({ opacity: 75 })
```
#### `photoshop_set_layer_blend_mode`
设置活动图层的混合模式。
**参数:**
- `blendMode`(字符串,必填):混合模式(NORMAL,MULTIPLY,SCREEN,OVERLAY等)
```javascript
// 示例:设置为multiply
photoshop_set_layer_blend_mode({ blendMode: "MULTIPLY" })
```
可用混合模式:NORMAL,DISSOLVE,DARKEN,MULTIPLY,COLORBURN,LINEARBURN,DARKERCOLOR,LIGHTEN,SCREEN,COLORDODGE,LINEARDODGE,LIGHTERCOLOR,OVERLAY,SOFTLIGHT,HARDLIGHT,VIVIDLIGHT,LINEARLIGHT,PINLIGHT,HARDMIX,DIFFERENCE,EXCLUSION,SUBTRACT,DIVIDE,HUE,SATURATION,COLOR,LUMINOSITY
#### `photoshop_set_layer_visibility`
显示或隐藏活动图层。
**参数:**
- `visible`(布尔值,必填):可见性状态
```javascript
// 示例:隐藏图层
photoshop_set_layer_visibility({ visible: false })
```
#### `photoshop_set_layer_locked`
锁定或解锁活动图层。
**参数:**
- `locked`(布尔值,必填):锁定状态
```javascript
// 示例:锁定图层
photoshop_set_layer_locked({ locked: true })
```
#### `photoshop_rename_layer`
重命名活动图层。
**参数:**
- `name`(字符串,必填):新图层名称
```javascript
// 示例:重命名图层
photoshop_rename_layer({ name: "Hero Image" })
```
#### `photoshop_duplicate_layer`
复制活动图层。
**参数:**
- `newName`(字符串,可选):复制图层名称
```javascript
// 示例:复制图层并设置新名称
photoshop_duplicate_layer({ newName: "Background Copy" })
```
#### `photoshop_merge_visible_layers`
将所有可见图层合并为一个。
```javascript
// 示例:合并可见图层
photoshop_merge_visible_layers()
```
#### `photoshop_flatten_image`
将所有图层展平为单个背景图层。
```javascript
// 示例:展平图像
photoshop_flatten_image()
```
#### `photoshop_rasterize_layer`
栅格化活动图层(将文本/智能对象转换为普通图层)。
```javascript
// 示例:栅格化图层
photoshop_rasterize_layer()
```
### 图层排序
#### `photoshop_move_layer_to_position`
将活动图层移动到另一个图层相对的位置。
**参数:**
- `targetLayerName`(字符串,必填):参考图层名称
- `position`(字符串,必填):ABOVE,BELOW,TOP或BOTTOM
```javascript
// 示例:将图层移动到“Background”之上
photoshop_move_layer_to_position({
targetLayerName: "Background",
position: "ABOVE"
})
```
#### `photoshop_move_layer_to_top`
将活动图层移动到图层栈的顶部。
```javascript
// 示例:移动到顶部
photoshop_move_layer_to_top()
```
#### `photoshop_move_layer_to_bottom`
将活动图层移动到图层栈的底部。
```javascript
// 示例:移动到底部
photoshop_move_layer_to_bottom()
```
#### `photoshop_move_layer_up`
将活动图层向上移动一个位置。
```javascript
// 示例:向上移动
photoshop_move_layer_up()
```
#### `photoshop_move_layer_down`
将活动图层向下移动一个位置。
```javascript
// 示例:向下移动
photoshop_move_layer_down()
```
### 图层变换
#### `photoshop_fit_layer_to_document`
按比例缩放活动图层以适应文档画布。
**参数:**
- `fillDocument`(布尔值,可选):如果为true,则填充整个画布(可能裁剪)。如果为false,则适应画布(可能有边距)。默认:false
```javascript
// 示例:适应画布内的图层
photoshop_fit_layer_to_document({ fillDocument: false })
// 示例:填充整个画布(如果需要裁剪)
photoshop_fit_layer_to_document({ fillDocument: true })
```
#### `photoshop_scale_layer`
按百分比缩放活动图层。
**参数:**
- `scalePercent`(数字,必填):缩放百分比(例如50表示50%,200表示200%)
- `centerAnchor`(布尔值,可选):从中心(true)或左上角(false)缩放。默认:true
```javascript
// 示例:缩放至150%
photoshop_scale_layer({
scalePercent: 150,
centerAnchor: true
})
```
#### `photoshop_move_layer`
按指定偏移量移动活动图层。
**参数:**
- `deltaX`(数字,必填):水平偏移量(像素)
- `deltaY`(数字,必填):垂直偏移量(像素)
```javascript
// 示例:向右移动100px并向下移动50px
photoshop_move_layer({
deltaX: 100,
deltaY: 50
})
```
#### `photoshop_rotate_layer`
旋转活动图层。
**参数:**
- `degrees`(数字,必填):旋转角度(正数=顺时针)
```javascript
// 示例:顺时针旋转45度
photoshop_rotate_layer({ degrees: 45 })
### 滤镜
#### `photoshop_apply_gaussian_blur`
对活动图层应用高斯模糊滤镜。
**参数:**
- `radius`(数字,必填):模糊半径(像素)(0.1-250)
```javascript
// 示例:应用10px模糊
photoshop_apply_gaussian_blur({ radius: 10 })
```
#### `photoshop_apply_sharpen`
应用锐化滤镜。
**参数:**
- `amount`(数字,必填):锐化量(百分比1-500)
- `radius`(数字,必填):半径(像素)(0.1-250)
- `threshold`(数字,可选):阈值(0-255,默认:0)
```javascript
// 示例:锐化图像
photoshop_apply_sharpen({
amount: 100,
radius: 1.5,
threshold: 0
})
```
#### `photoshop_apply_noise`
应用添加噪声滤镜。
**参数:**
- `amount`(数字,必填):噪声量(0.1-400)
- `distribution`(字符串,可选):UNIFORM或GAUSSIAN(默认:UNIFORM)
- `monochromatic`(布尔值,可选):单色噪声(默认:false)
```javascript
// 示例:添加噪声
photoshop_apply_noise({
amount: 10,
distribution: "GAUSSIAN",
monochromatic: false
})
```
#### `photoshop_apply_motion_blur`
应用运动模糊滤镜。
**参数:**
- `angle`(数字,必填):模糊角度(-360至360)
- `radius`(数字,必填):模糊距离(像素)(1-999)
```javascript
// 示例:应用运动模糊
photoshop_apply_motion_blur({
angle: 45,
radius: 20
})
```
### 颜色调整
#### `photoshop_adjust_brightness_contrast`
调整亮度和对比度。
**参数:**
- `brightness`(数字,必填):亮度调整(-100至100)
- `contrast`(数字,必填):对比度调整(-100至100)
```javascript
// 示例:增加亮度和对比度
photoshop_adjust_brightness_contrast({
brightness: 20,
contrast: 15
})
```
#### `photoshop_adjust_hue_saturation`
调整色相、饱和度和亮度。
**参数:**
- `hue`(数字,必填):色相偏移(-180至180)
- `saturation`(数字,必填):饱和度调整(-100至100)
- `lightness`(数字,必填):亮度调整(-100至100)
```javascript
// 示例:调整颜色
photoshop_adjust_hue_saturation({
hue: 30,
saturation: 20,
lightness: 0
})
```
#### `photoshop_auto_levels`
应用自动色阶调整。
```javascript
// 示例:自动色阶
photoshop_auto_levels()
```
#### `photoshop_auto_contrast`
应用自动对比度调整。
```javascript
// 示例:自动对比度
photoshop_auto_contrast()
```
#### `photoshop_desaturate`
使图层去色(转换为灰阶)。
```javascript
// 示例:去色
photoshop_desaturate()
```
#### `photoshop_invert`
反转图层颜色。
```javascript
// 示例:反转颜色
photoshop_invert()
```
### 文本格式化
#### `photoshop_set_text_font`
为活动文本图层设置字体系列和大小。
**参数:**
- `fontName`(字符串,必填):字体名称
- `fontSize`(数字,可选):字体大小(点)
```javascript
// 示例:更改字体
photoshop_set_text_font({
fontName: "Helvetica",
fontSize: 48
})
```
#### `photoshop_set_text_color`
为活动文本图层设置颜色。
**参数:**
- `red`(数字,必填):红色分量(0-255)
- `green`(数字,必填):绿色分量(0-255)
- `blue`(数字,必填):蓝色分量(0-255)
```javascript
// 示例:设置文本为蓝色
photoshop_set_text_color({
red: 0,
green: 100,
blue: 255
})
```
#### `photoshop_set_text_alignment`
设置文本对齐方式。
**参数:**
- `alignment`(字符串,必填):LEFT,CENTER,RIGHT,LEFTJUSTIFIED,CENTERJUSTIFIED,RIGHTJUSTIFIED,FULLYJUSTIFIED
```javascript
// 示例:居中对齐文本
photoshop_set_text_alignment({ alignment: "CENTER" })
```
#### `photoshop_update_text_content`
更新活动文本图层的内容。
**参数:**
- `text`(字符串,必填):新的文本内容
```javascript
// 示例:更新文本
photoshop_update_text_content({ text: "新文本" })
```
### 选择和蒙版
#### `photoshop_select_rectangle`
创建矩形选择。
**参数:**
- `left`,`top`,`right`,`bottom`(数字,必填):选择边界(像素)
```javascript
// 示例:选择区域
photoshop_select_rectangle({
left: 100,
top: 100,
right: 500,
bottom: 400
})
```
#### `photoshop_select_all`
选择整个文档。
```javascript
// 示例:全选
photoshop_select_all()
```
#### `photoshop_deselect`
清除所有选择。
```javascript
// 示例:取消选择
photoshop_deselect()
```
#### `photoshop_invert_selection`
反转当前选择。
```javascript
// 示例:反转选择
photoshop_invert_selection()
```
#### `photoshop_create_layer_mask`
从当前选择创建图层蒙版。
```javascript
// 示例:创建蒙版
photoshop_create_layer_mask()
```
#### `photoshop_delete_layer_mask`
删除活动图层的图层蒙版。
```javascript
// 示例:删除蒙版
photoshop_delete_layer_mask()
```
#### `photoshop_apply_layer_mask`
应用(合并)图层蒙版到图层。
```javascript
// 示例:应用蒙版
photoshop_apply_layer_mask()
```
### 历史记录和撤销/重做
#### `photoshop_undo`
撤销最后的操作(或多个操作)- 等效于Ctrl/Cmd+Z。
**参数:**
- `steps`(数字,可选):撤销步骤数(默认:1)
```javascript
// 示例:撤销最后的操作
photoshop_undo()
// 示例:撤销最后3个操作
photoshop_undo({ steps: 3 })
```
#### `photoshop_redo`
重做之前撤销的操作(或多个操作)- 等效于Ctrl/Cmd+Shift+Z。
**参数:**
- `steps`(数字,可选):重做步骤数(默认:1)
```javascript
// 示例:重做最后撤销的操作
photoshop_redo()
// 示例:重做最后2个撤销的操作
photoshop_redo({ steps: 2 })
```
#### `photoshop_get_history`
获取活动文档的历史状态。
```javascript
// 示例:查看历史记录
photoshop_get_history()
```
### 操作与自动化
#### `photoshop_play_action`
从操作调色板中播放已录制的操作。
**参数:**
- `actionName`(字符串,必填):操作名称
- `actionSetName`(字符串,必填):操作集名称
```javascript
// 示例:播放操作
photoshop_play_action({
actionName: "我的操作",
actionSetName: "默认操作"
})
```
#### `photoshop_execute_script`
执行自定义的ExtendScript代码(高级)。
**参数:**
- `code`(字符串,必填):ExtendScript代码
```javascript
// 示例:执行自定义代码
photoshop_execute_script({
code: "app.beep();"
})
```
### 图片处理
#### `photoshop_resize_image`
调整活动图片的大小。
**参数:**
- `width`(数字,必填):新宽度(像素)
- `height`(数字,必填):新高度(像素)
```javascript
// 示例:调整为Instagram帖子大小
photoshop_resize_image({
width: 1080,
height: 1080
})
```
#### `photoshop_crop_document`
将文档裁剪到指定的边界。
**参数:**
- `left`(数字,必填):左侧边缘(像素)
- `top`(数字,必填):顶部边缘(像素)
- `right`(数字,必填):右侧边缘(像素)
- `bottom`(数字,必填):底部边缘(像素)
```javascript
// 示例:裁剪文档
photoshop_crop_document({
left: 100,
top: 100,
right: 1820,
bottom: 980
})
```
#### `photoshop_place_image`
将图片文件作为图层放置在活动文档中。
**参数:**
- `filePath`(字符串,必填):图片文件的完整路径
- `x`(数字,可选):X位置偏移(像素)(默认值:0)
- `y`(数字,可选):Y位置偏移(像素)(默认值:0)
```javascript
// 示例:在特定位置放置图片
photoshop_place_image({
filePath: "/Users/username/Pictures/photo.jpg",
x: 100,
y: 200
})
```
#### `photoshop_open_image`
打开图片文件作为新文档。
**参数:**
- `filePath`(字符串,必填):图片文件的完整路径
```javascript
// 示例:打开图片
photoshop_open_image({
filePath: "/Users/username/Pictures/photo.jpg"
})
```
## 示例提示
以下是您可以在配置此MCP服务器时与AI助手(Claude、Cursor等)一起使用的示例提示:
<details>
<summary>🎨 基本设计创建</summary>
```
创建1920x1080的Photoshop文档,颜色模式为RGB。
添加一个浅蓝色背景层,并用RGB(240, 248, 255)填充。
添加居中文本“欢迎”,字体大小为64pt。
保存为welcome.psd到我的桌面。
```
</details>
<details>
<summary>🖼️ 股票图片设计(使用Pexels MCP)</summary>
```
在Pexels上搜索“mountain sunset”图片。
创建1920x1080的Photoshop文档。
放置下载的图片并适应它以填充整个画布。
应用细微的高斯模糊,半径为3像素。
增加亮度15,对比度10。
添加白色文本“Adventure Awaits”,居中在顶部,字体大小为72pt。
设置文本不透明度为90%,混合模式为OVERLAY。
保存为adventure.jpg,质量为10。
```
</details>
<details>
<summary>✨ 照片增强</summary>
```
从我的桌面打开photo.jpg。
应用自动色阶和自动对比度。
应用锐化掩模,量度120%,半径1.5,阈值0。
增加饱和度15。
裁剪以删除每个边缘的100像素。
保存为enhanced-photo.jpg,质量12。
```
</details>
<details>
<summary>🎭 图层效果和混合</summary>
```
创建1200x800文档。
添加一个名为“背景”的新图层,并用RGB(50, 50, 50)填充。
在位置(100,100)放置logo.png。
将徽标图层调整到其当前大小的50%。
设置混合模式为SCREEN,不透明度为85%。
添加另一个图层,填充RGB(255, 100, 50)。
设置该图层的混合模式为MULTIPLY,不透明度为60%。
合并所有可见图层。
保存为composite.psd。
```
</details>
<details>
<summary>📝 文本海报设计</summary>
```
创建1080x1350的纵向文档(Instagram故事大小)。
添加一个图层,并用类似渐变的颜色RGB(120, 40, 200)填充。
在(540,300)添加文本“SUMMER”,字体大小为96pt。
更改文本颜色为白色RGB(255,255,255)。
设置文本对齐方式为CENTER。
在(540,450)添加另一个文本“2026”,字体大小为128pt,颜色为白色。
对背景层应用高斯模糊,半径为2像素。
保存为summer-poster.png。
```
</details>
<details>
<summary>🎬 批量处理</summary>
```
打开image1.jpg。
调整大小为1920x1080。
应用自动对比度。
应用细微的锐化(量度80%,半径1.0)。
保存为processed-1.jpg,质量10。
关闭时不保存对原始文件的更改。
对image2.jpg和image3.jpg重复此操作。
```
</details>
<details>
<summary>🖌️ 创意操作</summary>
```
创建2000x2000的正方形文档。
放置abstract-pattern.jpg并适应它以填充文档。
复制图层。
在复制的图层上,应用45度,半径50像素的运动模糊。
设置混合模式为OVERLAY,不透明度为70%。
添加居中文本“MOTION”,白色,字体大小为120pt。
应用矩形选择区域,从(200,200)到(1800,1800)。
反转选择区域并删除(以创建边框效果)。
扁平化图像。
保存为motion-art.jpg。
```
</details>
<details>
<summary>🎯 高级工作流</summary>
```
创建3000x2000的文档,分辨率为300 DPI,用于打印。
放置hero-image.jpg并适应它以填充画布。
复制图像图层。
在复制的图层上,将其完全去除饱和度。
设置混合模式为LUMINOSITY,不透明度为50%。
创建一个名为“Overlay”的新图层。
用RGB(255,150,0)填充并设置混合模式为SOFTLIGHT,不透明度为30%。
在顶部中心添加文本“PORTFOLIO”,在(1500,200)处,字体大小为96pt。
设置文本颜色为白色。
添加子文本“2026 Collection”,在(1500,320)处,字体大小为36pt。
围绕文本区域创建矩形选择区域。
在叠加层上创建图层蒙版。
合并可见图层。
保存为portfolio-cover.psd。
导出为portfolio-cover.jpg,质量12。
```
</details>
<details>
<summary>🔄 使用操作</summary>
```
打开my-photo.jpg。
播放“Vintage Look”操作,来自“My Actions”集。
调整亮度-10以稍微变暗。
保存为vintage-photo.jpg。
```
</details>
<details>
<summary>⚡ 自定义脚本执行</summary>
```
执行此自定义ExtendScript代码:
app.beep();
alert('Processing started!');
```
</details>
<details>
<summary>⏮️ 撤销/重做操作</summary>
```
对活动图层应用高斯模糊,半径为15像素。
[等待结果]
实际上,模糊太多了。撤销。
改为应用高斯模糊,半径为5像素。
```
或者:
```
获取历史状态以查看已执行的操作。
撤销最后3个操作。
重做1步以恢复1个操作。
```
</details>
---
## 用例
### 创建简单设计
```javascript
// 1. 创建新文档
photoshop_create_document({
width: 800,
height: 600,
colorMode: "RGB"
})
// 2. 创建背景层
photoshop_create_layer({ name: "Background" })
// 3. 用颜色填充
photoshop_fill_layer({
red: 240,
green: 240,
blue: 255
})
// 4. 添加文本层
photoshop_create_text_layer({
text: "我的设计",
x: 400,
y: 300,
fontSize: 64
})
// 5. 保存结果
photoshop_save_document({
path: "/Users/username/Desktop/design.psd",
format: "PSD"
})
```
### 批量处理图片
```javascript
// 1. 打开现有文档(手动步骤)
// 2. 调整图像大小
photoshop_resize_image({ width: 1920, height: 1080 })
// 3. 保存为JPEG
photoshop_save_document({
path: "/Users/username/Desktop/resized.jpg",
format: "JPEG",
quality: 12
})
// 4. 关闭文档
photoshop_close_document({ save: false })
```
### 使用Pexels MCP创建设计(使用Pexels MCP)
此示例展示了如何将Photoshop MCP与Pexels MCP结合使用:
```javascript
// 1. 在Pexels上搜索图片(使用Pexels MCP服务器)
// 注意:您需要配置Pexels MCP服务器
pexels_photos_search({
query: "nature landscape",
per_page: 5
})
// 2. 下载您要的图片(手动或通过脚本)
// 3. 创建新的Photoshop文档
photoshop_create_document({
width: 1920,
height: 1080,
colorMode: "RGB"
})
// 4. 放置下载的图片
photoshop_place_image({
filePath: "/Users/username/Downloads/pexels-photo.jpg",
x: 0,
y: 0
})
// 5. 将图片适应文档(NEW!)
photoshop_fit_layer_to_document({
fillDocument: true // 填充整个画布
})
// 6. 添加文本叠加层
photoshop_create_text_layer({
text: "美丽的自然",
x: 960,
y: 100,
fontSize: 72
})
// 7. 保存最终设计
photoshop_save_document({
path: "/Users/username/Desktop/nature-design.psd",
format: "PSD"
})
```
## 上下文跟踪
每个工具都返回有关Photoshop当前状态的综合上下文信息,包括:
- **文档信息**:名称、尺寸、分辨率、颜色模式、图层数量
- **活动图层信息**:名称、类型、不透明度、混合模式、可见性、锁定状态
- **选择状态**:是否活动
- **操作结果**:更改的具体详细信息
这允许AI助手保持对以下内容的感知:
- 哪个文档是活动的
- 正在处理哪个图层
- 当前图层属性(不透明度、混合模式等)
- 文档尺寸和设置
**示例响应:**
```javascript
{
"applied": true,
"filter": "高斯模糊",
"radius": 10,
"wasRasterized": true,
"context": {
"hasDocument": true,
"document": {
"name": "design.psd",
"width": 1920,
"height": 1080,
"resolution": 72,
"colorMode": "RGBColorMode",
"layerCount": 3,
"hasSelection": false
},
"activeLayer": {
"name": "背景",
"kind": "NORMAL",
"opacity": 100,
"blendMode": "NORMAL",
"visible": true,
"locked": false,
"isBackground": false
}
}
}
```
此上下文有助于AI助手在多个命令之间记住正在处理的文档和图层。
---
## 平台特定说明
### Windows
- 使用COM自动化与Photoshop通信
- 基于注册表的自动检测安装路径
- 支持32位和64位版本
### macOS
- 使用AppleScript/OSA与Photoshop通信
- 基于Spotlight的自动检测
- 支持同时安装多个Photoshop版本
## 支持的Photoshop版本
- **所有Photoshop版本**(2012-2025+):通过AppleScript(macOS)或COM(Windows)使用ExtendScript API
- 重要注意:虽然Photoshop 2022+支持UXP插件,但外部自动化通过AppleScript/COM只能使用ExtendScript。UXP旨在用于内部插件,不能从外部脚本调用。因此,此MCP服务器使用ExtendScript以最大限度地兼容所有Photoshop版本。
## 故障排除
### "找不到Photoshop"
1. 确保Photoshop已安装在默认位置
2. 或设置`PHOTOSHOP_PATH`环境变量为自定义安装路径
```json
{
"env": {
"PHOTOSHOP_PATH": "C:\\Custom\\Path\\Adobe Photoshop 2025\\Photoshop.exe"
}
}
```
### "无法连接到Photoshop"
1. 确保Photoshop正在运行(如果未运行,服务器将尝试启动它)
2. 检查Photoshop首选项中是否启用了脚本
3. 在Windows上,验证COM自动化是否未被安全设置阻止
### "脚本执行超时"
- 某些操作可能在大型文档上需要更长时间
- 默认超时为30秒
- 对于复杂操作,请考虑将它们分解为更小的步骤
### 调试日志记录
通过设置`LOG_LEVEL=0`启用详细日志记录:
```json
{
"env": {
"LOG_LEVEL": "0"
}
}
```
## 开发
### 构建
```bash
npm run build
```
### 监视模式
```bash
npm run dev
```
### lint & 格式化
```bash
npm run lint
npm run format
```
## 快速入门示例
### 💡 常见用例
| 任务 | 提示示例 |
|------|----------------|
| **基本设计** | "创建1920x1080文档,添加蓝色背景,居中文本'Hello'" |
| **照片编辑** | "打开photo.jpg,应用自动色阶,锐化100%,保存为edited.jpg" |
| **股票图像** | "放置image.jpg,适应填充画布,添加叠加文本'Summer 2026'" |
| **图层效果** | "设置活动图层混合模式为MULTIPLY,不透明度80%" |
| **过滤器** | "对当前图层应用10px高斯模糊" |
| **文本样式** | "将文本更改为Helvetica 64pt,颜色红色,居中对齐" |
| **批量工作** | "调整大小为1080x1080,自动对比度,保存为square.jpg,关闭" |
| **蒙版** | "选择矩形100,100到500,500,创建图层蒙版" |
---
## 架构
```
photoshop-mcp/
├── src/
│ ├── core/ # MCP服务器核心
│ │ ├── server.ts # 主MCP服务器
│ │ ├── session.ts # 会话管理
│ │ └── tool-registry.ts # 工具注册系统
│ ├── platform/ # 平台特定检测和执行
│ │ ├── detector.ts # 主检测器
│ │ ├── connection.ts # 连接管理器
│ │ ├── windows-detector.ts # Windows注册表检测
│ │ ├── windows-executor.ts # Windows COM自动化
│ │ ├── macos-detector.ts # macOS Spotlight检测
│ │ └── macos-executor.ts # macOS AppleScript执行
│ ├── api/ # Photoshop API抽象
│ │ ├── photoshop-api.ts # API工厂
│ │ ├── batch-play.ts # UXP batchPlay帮助程序(旧版)
│ │ └── extendscript.ts # ExtendScript代码段库
│ ├── tools/ # MCP工具实现(42+工具)
│ │ ├── document-tools.ts # 文档操作
│ │ ├── layer-tools.ts # 图层创建/删除
│ │ ├── layer-properties-tools.ts # 不透明度,混合模式等
│ │ ├── layer-transform-tools.ts # 缩放,旋转,移动
│ │ ├── image-tools.ts # 调整大小,裁剪
│ │ ├── image-placement-tools.ts # 放置/打开图片
│ │ ├── filter-tools.ts # 模糊,锐化,噪声
│ │ ├── adjustment-tools.ts # 颜色调整
│ │ ├── text-tools.ts # 文本格式化
│ │ ├── selection-tools.ts # 选择和蒙版
│ │ └── action-tools.ts # 操作和自定义脚本
│ └── utils/ # 实用程序
│ └── logger.ts # 日志系统(基于stderr)
└── examples/ # 配置示例
├── cursor-config.json
└── claude-desktop-config.json
```
## 贡献
欢迎贡献!请随意提交拉取请求。
## 许可证
MIT
## 致谢
- 使用[Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)构建
- 灵感来自Adobe Photoshop脚本社区
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器