Skip to content

deermiya/PSForge

Repository files navigation

PSForge

Python 版本 MCP 版本 许可证 平台

基于 MCP 协议的 AI 驱动 Photoshop 自动化工具

English | 中文

PSForge 是一个 MCP 服务器,让 AI 助手直接控制 Adobe Photoshop。不再为每个 PS 操作单独封装工具,而是暴露少量高杠杆工具 —— AI 直接生成 ExtendScript,PSForge 通过 COM 执行。

快速开始: 查看 QUICKSTART.md 了解安装指南


为什么从 61 个工具砍到少量核心工具?

上一版把每个 PS 操作(创建图层、设透明度、加模糊……)都封装成独立的 MCP 工具,共 61 个。实际使用中,AI 几乎只用 execute_script 发送原始 ExtendScript,因为:

  • 一段脚本能做 10 个工具调用的事,只需一次 COM 往返
  • ExtendScript 比任何固定参数集都灵活
  • AI 完全有能力生成正确的 ExtendScript

所以 v0.3.0 去掉了所有包壳工具,只保留真正有用的。v0.4.x 继续保留极简核心,同时新增面向图片复刻 PSD 的高层工作流工具。

工具列表

工具 用途
execute_script 在 Photoshop 中执行任意 ExtendScript。主力工具。
execute_batch 单次 COM 调用执行多段脚本,各自收集结果。
get_session_info 查询 PS 连接状态、版本、当前文档概况。
get_layers 获取所有图层信息(名称、类型、透明度、混合模式、边界)。
capture_canvas 截图画布返回 base64 PNG,供 AI 视觉反馈。
recreate_image_as_layered_psd 将参考图复刻为分层 PSD,并导出 PNG 预览。支持 fast / balanced / source 模式。

提示词模板 (Prompts)

除了基础工具,PSForge 还提供内置的 Prompt 模板,帮助大模型以特定的工作流处理任务。

提示词 用途
ps-image-analyzer 指引 AI 客户端(利用客户端自身的 Vision 视觉能力)分析参考图,并生成一套可被 PSForge 完美执行的 Photoshop 结构化重建规格书(JSON)。

如何使用 Prompts

Prompts 由 FastMCP 自动注册,可在支持 MCP Prompt 协议的客户端中使用:

  1. Claude Desktop:点击输入框左侧的 Prompts 列表,选择 ps-image-analyzer,将规则载入上下文。
  2. Cursor / Agent 助手:用自然语言命令 AI(如 “使用 ps-image-analyzer 提示词分析此图片并重建”),Agent 会自动在后台读取并应用该模板。

系统要求

组件 版本 说明
Python 3.10 - 3.14 必需
操作系统 Windows 使用 COM 接口
Photoshop CC 2019+ 需要运行中
MCP 客户端 任意 Claude Desktop、Cursor 等

安装

pip install psforge

从源码安装:

git clone https://github.com/deermiya/PSForge.git
cd PSForge
pip install -e .

配置

Claude Desktop

编辑 %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "psforge": {
      "command": "psforge"
    }
  }
}

如果你是从源码运行,使用项目自带的启动脚本,并把路径替换为你的实际克隆目录:

{
  "mcpServers": {
    "psforge": {
      "command": "C:\\path\\to\\PSForge\\start_psforge.bat"
    }
  }
}

重启 Claude Desktop,测试:获取 Photoshop 会话信息

Codex

参考示例文件:codex_config.example.toml

编辑 Codex 配置文件:

%USERPROFILE%\.codex\config.toml

如果你已通过 pip install psforge 安装:

[mcp_servers.psforge]
command = 'psforge'
startup_timeout_sec = 120

如果你是从源码运行,推荐使用项目自带的启动脚本,并把路径替换为你的实际克隆目录:

[mcp_servers.psforge]
command = 'C:\path\to\PSForge\start_psforge.bat'
startup_timeout_sec = 120

保存后重启 Codex,测试:使用 PSForge 获取 Photoshop 会话信息

如何在 AI Agent 中触发

配置 MCP 并重启客户端后,直接在对话中明确要求使用 PSForge:

  • 使用 PSForge 获取 Photoshop 会话信息
  • 用 PSForge 把这张图片复刻成分层 PSD
  • 调用 PSForge 的 recreate_image_as_layered_psd,把这张海报生成 PSD 和预览图
  • 调用 PSForge execute_script 创建一个 Photoshop 文档
  • 使用 PSForge 批量处理 D:\photos 下的 PNG 图片

PSForge 会向 AI Agent 暴露 execute_scriptexecute_batchget_session_infoget_layerscapture_canvasrecreate_image_as_layered_psd 等 MCP 工具。Agent 可以直接调用这些工具控制 Photoshop,不需要屏幕识别、鼠标模拟或 Computer Use。

如果 Agent 没有自动选择 PSForge,可以在提示词里加一句:

请使用 PSForge MCP,不要使用屏幕识别或 Computer Use。

相比基于屏幕的自动化,PSForge 通过 ExtendScript/COM 直接控制 Photoshop,几乎不消耗视觉识别 token,更快、更稳定,也更适合生成可编辑 PSD 和批量自动化。

架构

AI 客户端 (Claude / Cursor)
        │ MCP 协议 (stdio)
        ▼
MCP Server (FastMCP)          ← server.py + registry.py
        │ 工具 & 提示词调用
        ▼
核心工具 & 提示词                ← tools/ 和 prompts/
        │ PS 操作
        ▼
PS 适配层                     ← ps_adapter/(单例、重试、上下文)
        │ Windows COM / ExtendScript
        ▼
Adobe Photoshop

使用示例

一次性生成海报

你:创建一张 1080x1350 的 synthwave 风格海报,渐变背景、
    条纹太阳、透视网格、标题 "RETROWAVE"

Claude 生成一段 ExtendScript:
1. 创建文档
2. 绘制多色标渐变背景
3. 用选区循环创建条纹太阳
4. 用数学绘制透视网格
5. 添加带外发光的标题文字
→ 一次 execute_script 调用完成

视觉反馈循环

你:打开这张照片,调成电影感

Claude:
1. execute_script → 打开文件,应用曲线 + 调色
2. capture_canvas → 截图回传给 AI
3. AI 判断:"暗部太深,高光需要暖色"
4. execute_script → 调整曲线,加暖色滤镜
5. capture_canvas → 确认最终效果

批量处理

你:给 D:\photos 下所有 PNG 加水印

Claude:
1. execute_batch → [打开文件1 + 加水印 + 保存, 打开文件2 + ...]
   单次 COM 往返完成

添加自定义工具

psforge/tools/ 目录下新建 Python 文件,启动时自动注册:

from psforge.decorators import debug_tool, log_tool_call
from psforge.ps_adapter import PhotoshopApp
from psforge.registry import register_tool

def register(mcp):
    registered_tools = []

    @debug_tool
    @log_tool_call
    def my_tool(param: str) -> dict:
        """工具描述。"""
        ps_app = PhotoshopApp()
        result = ps_app.execute_javascript(f'/* 你的脚本 */')
        return {"success": True, "result": str(result)}

    registered_tools.append(register_tool(mcp, my_tool, "my_tool"))
    return registered_tools


## 添加自定义提示词 (Prompts)

 `psforge/prompts/` 目录下新建 Python 文件启动时自动注册```python
from psforge.registry import register_prompt

def register(mcp):
    def my_prompt() -> str:
        """提示词描述。"""
        return "在此处填写你的提示词模板内容。"

    register_prompt(mcp, my_prompt, name="my-custom-prompt")
    return ["my-custom-prompt"]

## 常见问题

**"无法连接 Photoshop"** — 确保 PS 正在运行。检查 首选项 → 常规 → 启用远程连接。查看 `psforge_debug.log` 了解详情。

**"操作超时"** — 检查 PS 是否有弹窗。PSForge 会自动禁用对话框,但某些操作仍可能阻塞。

**Claude 中看不到工具** — 检查 `claude_desktop_config.json` 路径是否正确。重启 Claude Desktop。查看日志:`%APPDATA%\Claude\logs\`

## 版本历史

### v0.4.0

新增 MCP Prompts(提示词模板)机制。引入 `ps-image-analyzer` 提示词模板,供 AI 客户端自动进行设计图像分析与 Photoshop 重建。支持在 `psforge/prompts/` 目录下动态扫描与自动注册自定义 Prompt。

### v0.4.x

新增 `recreate_image_as_layered_psd`,用于低 token 的图片到分层 PSD 工作流。工具会创建隐藏参考层、分离的构建图层、可编辑文字层,并导出 PNG 预览。

### v0.3.0

从 61 个工具精简为 5 个核心工具。新增 `capture_canvas` 支持 AI 视觉反馈。AI 直接生成 ExtendScript,不再需要包壳工具。

### v0.2.0

性能优化:移除自动上下文查询,修复重试嵌套。新增 `execute_batch` 和 `select_layer_by_name`。61 个工具 / 15 个模块。

### v0.1.0

首次发布。59 个工具,四层架构。

## 许可证

MIT License - 详见 [LICENSE](LICENSE)

**基于 [photoshop-python-api](https://github.com/loonghao/photoshop-python-api) 和 [MCP](https://modelcontextprotocol.io/) 构建**

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages