项目标题与描述
ADB-MCP (Adobe AI Control via MCP Protocol) 是一个概念验证项目,旨在通过MCP协议为大型语言模型(LLM)提供接口,实现对Adobe创意工具(如Photoshop和Premiere)的AI控制。
核心架构:
rust
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(部分组件)
安装步骤
-
克隆仓库:
bashgit clone https://github.com/mikechambers/adb-mcp.git
-
安装依赖:
bashnpm install
-
构建可执行文件:
bashnpm install -g pkg pkg .
-
启动代理服务器:
bashnode server.js
-
安装对应的Adobe插件
使用说明
基本使用示例
连接AI客户端到MCP服务器:
javascript
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自动化示例
创建黑白调整图层:
javascript
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自动化示例
导入媒体文件:
javascript
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服务器核心
javascript
// 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命令处理
python
# 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调用信息确保理解需求参数
"""