Photoshop自动化服务器

用于自动化执行Photoshop操作的MCP服务器,支持图像编辑、生成式填充、图层管理等核心功能,适用于批量图像处理和创意设计。

  • by jaiganesh-23
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jaiganesh-23/photoshop_mcp_server

使用说明

Photoshop MCP服务器

这是一个MCP服务器,用于自动执行photoshop可以执行的所有操作。

目录

示例用法

    1. 在不使用工具的情况下,使用mcp客户端的命令对图像进行编辑。

https://github.com/user-attachments/assets/ffe3b026-ff8a-46c5-8836-79fb485771af

    1. 从mcp客户端生成带有描述和命令的Instagram帖子。

https://github.com/user-attachments/assets/c872581e-f793-4cad-925e-8d963be14a68

    1. 使用mcp客户端的命令添加和编辑图像片段。

https://github.com/user-attachments/assets/c8d16d6b-80af-44fe-9504-159caf2e55fc

工具

  • photoshop_create_document :

在Photoshop中创建新文档。Args:width:文档宽度(像素)。height:文档高度(像素)。name:文档名称。mode:颜色模式(rgb、cmyk等)。默认为“rgb”。返回:dict:操作的结果。

  • photoshop_open_document :

打开现有文档。Args:file_path:文档文件的路径。返回:dict:操作的结果。

  • photoshop_save_document :

保存活动文档。Args:file_path:保存文档的路径。格式:文件格式(psd、jpg、png)。返回:dict:操作的结果。

  • photoshop_describe_current_document :

将当前Photoshop文档另存为图像,并使用BLIP生成描述。使用后删除临时图像文件。返回:dict:包含生成的描述或错误。

  • photoshop_list_open_documents :

列出当前在Photoshop中打开的文档。返回:dict:包含打开的文档名称及其属性的列表。

  • photoshop_select_document :

通过从打开的文档选项卡中选择给定文档,使其成为活动文档。Args:document_name(str):要选择的文档的名称。返回:dict:操作的结果。

  • photoshop_resize_document :

将当前活动的Photoshop文档调整为给定的宽度和高度(像素)。Args:width(int):以像素为单位的新宽度。height(int):以像素为单位的新高度。返回:dict:操作的结果。

  • photoshop_flatten_document :

展平当前活动的Photoshop文档。返回:dict:操作的结果。 photoshop _ creenshot _ current _ document

截取当前Photoshop文档的屏幕截图,将其大小调整为300x300,并将其作为路径返回。

  • photoshop_create_text_layer :

创建文本图层。Args:text:文本内容。x:x位置。y:y位置。size:字体大小。color_r:红色分量(0-255)。color_g:绿色分量(0-255)。color_b:蓝色分量(0-255)。返回:dict:操作的结果。

  • photoshop_create_solid_color_layer :

创建纯色填充层。Args:color_r:红色分量(0-255)。color_g:绿色分量(0-255)。color_b:蓝色分量(0-255)。name:图层名称。返回:dict:操作的结果。

  • photoshop_select_polygon :

使用套索工具对给定的多边形点进行选择。Args:points(list):表示多边形顶点的(x,y)元组或列表的列表。返回:dict:操作的结果。

  • photoshop_blur_polygon :

模糊由点定义的多边形区域。Args:points(list):多边形的(x,y)元组/列表的列表。半径(浮动):模糊半径(默认值10.0)。返回:dict:操作的结果。

  • photoshop_blur_polygon_edges :

仅模糊由点定义的多边形区域的边缘。Args:points(list):多边形的(x,y)元组/列表的列表。edge_width(int):要模糊的边的宽度(像素)。半径(浮动):模糊半径。返回:dict:操作的结果。

  • photoshop_detect_polygons_with_owlvit_sam2 :

使用OWLViT和文本提示检测当前Photoshop文档中的区域,使用SAM2进行分割,并返回带有标签、框、box_score和多边形点的JSON。所有检测到的阈值以上的框都用于分割。

  • photoshop_region_generative_fill :

使用“稳定扩散镶嵌”来镶嵌由多边形遮罩定义的区域。根据inpaint_mpt填充该区域,并用BLIP生成的图像描述对其进行增强。Args:polygon_mask(list):多边形的(x,y)元组列表。inpaint_mpt(str):描述要进行的更改的文本提示。返回:dict:操作的结果。

  • photoshop_generative_fill_without_region :

在给定更改提示的情况下,使用通量修复模型对要更改的区域进行修复。Args:change_prompt(str):描述图像中要进行的更改的文本提示。返回:dict:操作的结果。

  • photoshop_select_layer :

选择具有给定名称的图层并将其设置为活动图层。Args:layer_name(str):要选择的层的名称。返回:dict:操作的结果。

  • photoshop_delete_layer :

从当前Photoshop文档中删除具有给定名称的图层。Args:layer_name(str):要删除的层的名称。返回:dict:操作的结果。

  • photoshop_rotate_layer :

将指定图层旋转给定角度(以度为单位)。Args:layer_name(str):要旋转的层的名称。角度(浮动):旋转层的角度(以度为单位)(正=顺时针)。返回:dict:操作的结果。

  • photoshop_get_layers_info :

获取当前Photoshop文档中的图层及其位置(坐标和z轴位置)。返回:dict:包含名称、坐标(x,y)和z轴(堆栈)位置的层列表。

  • photoshop_reposition_layer :

更改当前Photoshop文档中图层的位置(坐标和/或z索引)。Args:layer_name(str):要重新定位的层的名称。x(浮点数,可选):新的x坐标(用于文本或智能对象层)。y(浮点数,可选):新的y坐标(用于文本或智能对象层)。z_index(int,可选):新的z索引(堆栈顺序,0=底部)。返回:dict:操作的结果。

  • photoshop_apply_crop :

从当前Photoshop文档中裁剪出矩形区域。Args:rectangular_points(list):四个(x,y)元组/列表的列表,按顺序表示矩形的角:左上、右上、右下、左下。返回:dict:操作的结果。

  • photoshop_copy_paste_region :

从指定图层复制多边形区域并将其粘贴为新图层。Args:layer_name(str):要从中复制的层的名称。polygon_points(list):表示多边形顶点的(x,y)元组/列表的列表。region_name(str,可选):新粘贴区域图层的名称。默认为“复制区域”。返回:dict:操作的结果。

  • photoshop_set_all_locked :

设置给定图层的allLocked属性。Args:layer_name(str):要锁定或解锁的层的名称。value(bool):锁定为True,解锁为False。返回:dict:操作的结果。

  • photoshop_set_background_layer :

设置给定层的isBackgroundLayer属性。Args:layer_name(str):要设置为(或取消设置为)背景的层的名称。value(bool):设置为背景为True,未设置为False。返回:dict:操作的结果。

  • photoshop_apply_spot_heal :

Spot修复当前Photoshop文档中的给定多边形区域。Args:polygon_points(list):表示多边形顶点的(x,y)元组/列表的列表。返回:dict:操作的结果。

  • photoshop_apply_dodge :

通过以下方式减淡给定多边形的内部:•复制合并到新层中•将该层的混合模式设置为线性减淡(添加)•调整其不透明度参数:polygon_points(列表):表示多边形顶点的(x,y)元组/列表的列表。不透明度(浮动):闪避层的不透明度(0-100)。返回:dict:{“success”:bool,“message”/“error”:str}

  • photoshop_apply_burn :

通过以下方式燃烧给定多边形的内部:•复制合并到一个新层中•将该层的混合模式设置为线性燃烧•调整其不透明度参数:polygon_points(list):表示多边形顶点的(x,y)元组/列表的列表。不透明度(浮动):燃烧层的不透明度(0-100)。返回:dict:{“success”:bool,“message”/“error”:str}

  • photoshop_apply_sponge :

模拟海绵效果:-进行多边形选择-复制该区域的合并内容-粘贴为新层-对其应用破坏性的色调/饱和度调整

  • photoshop_apply_sharpen :

通过以下方式锐化多边形区域的内容:•选择多边形•将合并的内容复制到新层中•应用Unsharp Mask过滤器(锐化)Args:polygon_points(list):定义多边形的(x,y)元组/列表的列表。金额(浮动):将金额锐化为百分比(0-500)。radius(浮动):以像素为单位锐化半径(0.1-250)。threshold(int):边缘检测的阈值(0-255)。返回:dict:{“success”:bool,“message”/“error”:str}

  • photoshop_apply_smudge :

通过以下方式涂抹多边形区域:1。选择多边形2。播放录制的SmudgeFill动作Args:polygon_points(列表):定义多边形的(x,y)元组列表。action_name(str):记录的动作的名称(例如“SmudgeFill”)。action_set(str):动作集的名称(例如“MySmudgeSet”)。返回:dict:{成功:bool,消息或错误}

  • photoshop_apply_eraser :

擦除(清除)活动层上给定多边形区域内的像素。Args:polygon_points(list):定义多边形顶点的(x,y)元组/列表的列表。返回:dict:{“success”:bool,“message”:str表示成功,或“error”:str代表失败}

  • photoshop_clip_mask :

创建剪裁遮罩:在第一层内剪裁第二层。Args:first_layer(str):基础(掩码)层的名称。second_layer(str):要剪切(屏蔽)的层的名称。返回:dict:操作的结果。

  • photoshop_empty_expand :

保存当前活动的Photoshop文档并将其展开为新的给定大小,在所有侧面添加额外的白色像素。展开的图像将作为新文档打开。Args:width(int):以像素为单位的新宽度。height(int):以像素为单位的新高度。返回:dict:操作的结果。

  • photoshop_generative_expand :

将当前的Photoshop文档扩展到新的大小,四周都有白色像素,然后使用给定的提示对新扩展的白色区域执行生成填充。Args:width(int):以像素为单位的新宽度。height(int):以像素为单位的新高度。inpaint_mpt(str):对扩展区域进行生成填充的提示。返回:dict:操作的结果。

  • photoshop_clear_created_files :

清除使用以前工具在中创建的文件。返回:dict:操作的结果。

  • photoshop_get_session_info :

获取有关当前Photoshop会话的信息。返回:dict:有关当前Photoshop会话的信息。

  • photoshop_get_active_document_info :

获取有关活动文档的详细信息。返回:dict:有关活动文档或错误消息的详细信息。

  • photoshop_get_selection_info:

获取活动文档中当前所选内容的信息。返回:dict:有关当前选择的信息或错误消息。

  • photoshop_get_selection_info_polygon_points :

通过在临时层上用黑色填充所选内容,将结果复制到新文档中,另存为PNG,并使用OpenCV进行分析,在活动文档中获取当前所选内容的多边形点。返回:dict:有关所选多边形点的信息或错误消息。

资源

  • get_document_info :

获取有关活动文档的信息。返回:dict:有关活动文档的信息或错误消息。

  • get_layers :

获取活动文档中图层的信息。返回:dict:有关层的信息或错误消息。

  • get_photoshop_info :

获取有关Photoshop应用程序的信息。返回:dict:关于Photoshop的信息。

中间件

  • Instructions Middleware:

在启动服务器时启动列表工具的上下文中添加指令。 使用此服务器时应遵循的说明: 1.每当将新文档设置为活动文档时,始终检查文档是否 包含任何背景层。如果是,请将它们转换为普通图层。 2.在运行任何工具之前,请检查活动文档中是否有背景层。 如果有背景层,请在运行工具之前将其转换为普通层。 3.每当背景层转换为普通层时,其名称都会更改为新名称。 使用get_layers_info工具进行检查,并在后续操作中应用正确的名称。 4.使用生成填充时,如果未进行选择,请使用generative_fill_without_region工具/ 区域未知,如果进行了选择,请使用region_generative_fill工具。 5.当使用region_generative_fill等工具时,会创建一个新文档 添加到文档列表中。始终将新创建的文档设置为活动文档 继续进行任何进一步的操作。每当操作创建新文档时,它应该 将该新文档设置为活动文档。 6.始终明确使用MCP服务器提供的工具和资源的内容和方式。 7.只运行photoshop_generative_expan一次。不要不必要地运行两次。 8.在对图层执行操作时,使用screenshot_current_document工具检查您的工作。 根据需要调整图层的位置、大小和其他属性,以实现所需的结果。 9.在保存文档之前/完成工作之后,始终将其压平,以确保所有图层都已合并。

必须明确说明要遵循上下文中提到的说明。对于大多数用例,它 不必提及以下说明。

配置

克隆存储库,并使用uv.lock和pyproject.toml文件设置uv环境。 设置好uv后,运行“uv pip install-e”。'从基目录初始化mcp服务器模块。

如果不使用uv,请从requirements.txt安装需求。

您需要在huggingface和groq上创建一个帐户,以便使用此服务器的api密钥。 将密钥粘贴到基目录上的.env文件夹中。

VS代码MCP配置

{
    "servers": {
        "photoshop-mcp-server": {
            "command": "python", //If you are using global environment for packages or path to env
            "args": [
                "absolute/path/to/photoshop_mcp_server2/server.py"
            ],
            "env": {
		"PS_VERSION": "2024"
	    },
           "type": "stdio"
        }
    }
}

兼容性和注意事项

此MCP服务器仅适用于windows,因为它使用windows com模块与photoshop进行通信。 基础模板和基本工具取自仓库https://github.com/loonghao/photoshop-python-api-mcp-server我有扩展的工具和能力。请查看上述仓库以获取更多信息。

更新

需要修补服务器日志并添加更多工作流。