项目标题与描述
ADB-MCP (Adobe AI Control via MCP Protocol) 是一个概念验证项目,旨在通过MCP协议为大型语言模型(LLM)提供接口,实现对Adobe创意工具(如Photoshop和Premiere)的AI控制。
核心架构:
AI <-> MCP Server <-> Command Proxy Server <-> Photoshop/Premiere UXP Plugin <-> Photoshop/Premiere
功能特性
- 多Adobe应用支持:目前支持Photoshop和Premiere,设计上支持扩展更多Adobe应用
-
- AI对话式操作:通过自然语言指令控制Adobe软件
-
- 自动化任务:支持从简单操作到复杂工作流的自动化执行
-
- 教学辅助:AI可生成操作教程并实时演示
-
- 跨平台:已在Mac和Windows平台测试通过
-
- 多AI客户端支持:测试支持Claude Desktop和OpenAI Agent SDK 典型用例:
- 通过对话指导Photoshop操作(特别适合新手)
-
- 自动创建Instagram帖子模板(如宝丽来风格、双重曝光效果)
-
- 生成自定义Photoshop教程并演示
-
- 批量处理(如统一图层命名)
-
- Premiere项目自动化(预置剪辑、转场、效果和音频)
安装指南
系统要求
- Node.js环境
-
- Adobe Photoshop/Premiere(最新版)
-
- Python 3.x(部分组件)
安装步骤
- 克隆仓库:
-
- git clone https://github.com/mikechambers/adb-mcp.git
-
- 安装依赖:
-
- npm install
-
- 构建可执行文件:
-
- npm install -g pkg
- pkg .
-
- 启动代理服务器:
-
- node server.js
-
- 安装对应的Adobe插件
使用说明
基本使用示例
连接AI客户端到MCP服务器:
const APPLICATION = "photoshop";
const PROXY_URL = "http://localhost:3001";socket.on('command_packet', ({ application, command }) => {console.log(`Command from ${socket.id} for application ${application}:`, command);let packet = {senderId:socket.id,application:application,command:command}sendToApplication(packet)
});
Photoshop自动化示例
创建黑白调整图层:
const addAdjustmentLayerBlackAndWhite = async (command) => {let options = command.options;let layerId = options.layerId;let layer = findLayer(layerId);await execute(async () => {selectLayer(layer, true);let commands = [{_obj: "make",_target: [{ _ref: "adjustmentLayer" }],using: { /* 参数配置 */ }}];await action.batchPlay(commands, {});});
};
Premiere自动化示例
导入媒体文件:
const importMedia = async (command) => {let paths = command.options.filePaths;let project = await app.Project.getActiveProject();let success = await project.importFiles(paths, true, await project.getRootItem());return { addedProjectItems: /* 新增项目项 */ };
};
核心代码
MCP服务器核心
// server.js
const express = require('express');
const { Server } = require('socket.io');
const io = new Server(server, {transports: ["websocket"],maxHttpBufferSize: 50 * 1024 * 1024
});io.on('connection', (socket) => {socket.on('register', ({ application }) => {if (!applicationClients[application]) {applicationClients[application] = new Set();}applicationClients[application].add(socket.id);});socket.on('command_packet', ({ application, command }) => {let packet = { senderId:socket.id, application, command };sendToApplication(packet);});
});function sendToApplication(packet) {if (applicationClients[packet.application]) {applicationClients[packet.application].forEach(clientId => {io.to(clientId).emit('command_packet', packet);});}
}
Photoshop命令处理
# photoshop_mcp.py
@mcp.tool()
def call_batch_play_command(commands: list):"""通过MCP执行任意Photoshop batchPlay命令参数:commands: 表示batchPlay描述符列表的JSON字符串"""command = createCommand("batchPlay", {"commands": commands})return sendCommand(command)@mcp.resource("config://get_instructions")
def get_instructions() -> str:"""返回Photoshop和API的使用说明"""return """你是一个富有创意的Photoshop专家,乐于帮助他人学习使用Photoshop。遵循规则:1. 深入思考如何解决问题2. 2. 始终检查你的工作3. 3. 阅读API调用信息确保理解需求参数4. """5. ```6. 更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)