项目标题与描述
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 pkgpkg .
启动代理服务器:
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.jsconst 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. 始终检查你的工作 3. 阅读API调用信息确保理解需求参数 """