关于 InDesign MCP Server
面向设计团队、出版者和自动化开发者的 MCP 服务,可通过结构化工具控制 Adobe InDesign,覆盖从版面与排版到书籍制作和导出。
主要功能
- 01文档与页面管理
- 02文本、表格、样式和版面
- 03书籍与长文档工具
- 04导出 PDF、EPUB 和图像
- 05macOS、Windows 与可选 UXP 后端
适用场景
- 01生成样式一致的报告
- 02制作多页出版物和书籍
- 03在版面中应用品牌模板
- 04将文档导出用于印刷或数字发布
MCP 相关
它向兼容客户端提供 InDesign 操作工具,涵盖文档、版面、排版和导出。服务在本机运行并连接已安装的 InDesign。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y adobe-mcp-indesignINDESIGN_APP_NAMEmacOS only: force a specific app name, e.g. "Adobe InDesign 2026"INDESIGN_ALLOWED_DIRSExtra directories allowed for file operations (':' on macOS, ';' on Windows)INDESIGN_BACKENDExecution backend: extendscript (default), uxp or auto本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
423收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| position | enum | 否 | 添加页面的位置:AT_END、AT_BEGINNING 或 BEFORE/AFTER referencePageAT_END | AT_BEGINNING | BEFORE | AFTER |
| referencePage | integer | 否 | 0 起始的参考页面索引(BEFORE/AFTER 时必需) |
详细介绍
InDesign MCP 服务
将 Adobe InDesign 打造成 AI 设计自动化平台 — 提供 420 多个 MCP 工具,用于处理文档、版面、排版、样式、表格、图像、长文档、交互式文档、印前处理,以及导出 PDF 和 EPUB。使用自然语言,通过 Claude、Cursor、Warp 或任何 MCP 客户端操控 InDesign。
为何打造此工具
设计运营仍意味着手动重复处理相同的版面任务。此服务将 InDesign 提供为结构化工具,供 Agent 调用:创建页面、放置素材、应用品牌样式、导出 PDF——无需离开聊天界面。
适用场景
- 自动化版面任务并保持品牌一致性的设计团队
- 大规模生成文档的内容创作者
- 需要真正操控 InDesign 的 AI 助手
- 构建设计自动化工作流的开发者
- 简化制作流程的出版商
主要功能
核心功能
- 文档管理 — 创建、打开、保存、关闭、首选项、印前检查、XML
- 页面管理 — 添加、删除、复制、移动、参考线、导航
- 内容 — 文本框、表格、查找/替换、形状、图像
- 样式 — 段落、字符、对象样式和色板
- 版面 — 跨页、主页跨页、图层、组、页面项目、参考线和网格
- 导出 — PDF、JPEG/PNG 图像、EPUB(可重排或固定版面)、印刷打包
- 书籍 — 多文档书籍、同步、重新编页、交叉引用
模块范围
每个范围涵盖 InDesign 某一部分的面板和对话框,并将功能逐项映射到能力图谱:
- 排版 — 字符和段落格式、OpenType、项目符号和编号、GREP 样式、制表位、CJK 排版
- 样式 — 段落、字符、对象、表格、单元格和目录样式、样式组、快速应用、嵌套样式
- 文本框、表格和长文档 — 文本框选项、文本绕排、注释和修订、文本串接;表格和单元格选项;目录、脚注、索引、条件文本、超链接、交叉引用、文本变量和书籍
- 框架、路径和版面 — 形状、描边、锚定对象、库、变换、路径查找器、替代版面和流动版面、灵活版面、链接内容、参考线和网格
- 颜色、效果和图像 — 色板、渐变、混合油墨、颜色设置和校样、效果和透明度、链接和导入选项
- 输出 — 提供所有选项的 PDF、EPUB 和 HTML 导出,Word 和 Excel 导入、打印、印前检查、分色、拼版和打包
- 交互式文档、XML、数据合并 — 按钮和表单、对象状态、动画、媒体;XML 结构、标签和导入/导出;数据合并、查找和更改、词典和语言
- 文档、页面和首选项 — 文档预设、页面和跨页、父页面、图层、选择、撤消历史记录,以及首选项的所有面板
平台
- macOS — AppleScript(
osascript)桥接;自动检测 InDesign 版本(或通过INDESIGN_APP_NAME设置) - Windows — 通过 PowerShell(
New-Object -ComObject)进行 COM 自动化;尝试当前和较新的 InDesign ProgID - UXP(可选) — 通过本地桥接和
uxp/下的插件使用INDESIGN_BACKEND=uxp|auto - 会话管理器 — 跟踪页面尺寸,并补全你未提供的位置和尺寸
- 帮助工具 — 提供每个工具和类别的参数,根据与
tools/list相同的定义生成 - 安全的 JSX 辅助工具 —
src/utils/jsxSafe.js,用于将经过验证的字符串、数字和路径插值到 ExtendScript 中
快速开始
前提条件
- Adobe InDesign(推荐使用 2023 或更高版本)
- Node.js 18+
- macOS 或 Windows
macOS
使用 AppleScript。如果出现提示,请为你的终端/Node 授予自动化权限(系统设置 → 隐私与安全性 → 自动化)。
InDesign 版本按以下顺序确定:
INDESIGN_APP_NAME环境变量(例如Adobe InDesign 2026)- 正在运行的 InDesign 进程
/Applications或~/Applications下最新的Adobe InDesign *.app- 回退到:
Adobe InDesign 2025
Windows
通过 PowerShell 使用 COM 自动化。无需额外安装步骤。应已安装 InDesign;服务将连接到正在运行的实例,或通过 COM 启动 InDesign。
安装
无需克隆。MCP 客户端使用 npx 启动服务,首次运行时会从 npm 下载。它已在官方 MCP Registry 中列出,名称为 io.github.zachshallbetter/adobe-mcp-indesign。
Claude Code:
claude mcp add indesign -- npx -y adobe-mcp-indesign
MCP 客户端配置
其他任何客户端(Claude Desktop claude_desktop_config.json、Cursor、Warp,……):
{
"mcpServers": {
"indesign": {
"command": "npx",
"args": ["-y", "adobe-mcp-indesign"]
}
}
}
可选的环境变量覆盖项:
{
"mcpServers": {
"indesign": {
"command": "npx",
"args": ["-y", "adobe-mcp-indesign"],
"env": {
"INDESIGN_APP_NAME": "Adobe InDesign 2026",
"INDESIGN_ALLOWED_DIRS": "/Users/you/Projects:/Users/you/Documents"
}
}
}
}
INDESIGN_APP_NAME— 仅限 macOS;为 AppleScript 强制指定应用名称INDESIGN_ALLOWED_DIRS— 文件操作允许访问的额外目录(macOS 分隔符为:,Windows 分隔符为;)
重启客户端,打开 InDesign,然后试试:创建一个 A4 文档并添加居中的标题。
如需从克隆的仓库运行(用于开发),请在执行 npm install 后使用 "command": "node" 和 "args": ["/ABSOLUTE/PATH/TO/adobe-mcp-indesign/src/index.js"]。
帮助系统
await tools.call("help");
await tools.call("help", { tool: "create_document" });
await tools.call("help", { category: "text" });
await tools.call("help", { format: "detailed" });
await tools.call("help", { format: "examples" });
调用示例
await callTool('create_document', {
width: 210,
height: 297,
pages: 1
});
await callTool('create_text_frame', {
content: 'Hello, InDesign!',
fontSize: 14
});
await callTool('create_paragraph_style', {
name: 'Heading',
fontSize: 24,
alignment: 'CENTER_ALIGN'
});
工具
包含 7 个领域的 137 个工具。完整参考文档列出了每个参数,详见 docs/TOOLS.md(根据与服务公布的相同定义生成)。
| 领域 | 工具数 | 示例 |
|---|---|---|
| 文档与书籍 | 46 | create_document、open_document、save_document、preflight_document、data_merge、validate_document、create_book、export_book |
| 页面与跨页 | 30 | add_page、resize_page、create_page_guides、place_file_on_page、list_spreads、duplicate_spread |
| 文本与表格 | 5 | create_text_frame、edit_text_frame、create_table、populate_table、find_replace_text |
| 图形与图像 | 8 | place_image、create_rectangle、create_polygon、create_object_style |
| 样式与颜色 | 8 | create_paragraph_style、create_character_style、create_color_swatch、apply_color |
| 布局、主页与图层 | 30 | move_page_item、create_group、create_master_spread、detach_master_items、create_layer |
| 导出与实用工具 | 10 | export_pdf、export_images、export_epub、package_document、indesign_status、execute_indesign_code |
面向 AI Agent
- 连接时提供说明。 服务会在其
initialize响应中发送使用说明(单位、索引、颜色、字体、路径、错误),MCP 客户端会将其传递给模型。 - 每个工具都有注释。
readOnlyHint、destructiveHint、idempotentHint和openWorldHint让客户端可在执行delete_page、cleanup_document或close_document等破坏性调用前询问用户(close_document会丢弃未保存的更改)。 - 真实错误。 调用失败时会返回
isError: true,并附带类似 "No document open" 或 "Error: color swatch 'Brand' not found" 的消息。 - 自描述。
help({ tool })会返回任意工具的参数;help({ category })会按类别列出工具。 - 约定。 坐标以目标页面左上角为原点,单位为毫米;索引从 0 开始;颜色使用色板名称或
"#RRGGBB";字体格式为"Family\tStyle"。工作流请参阅 docs/LLM_PROMPT.md。
会话管理
服务会跟踪页面尺寸和活动文档元数据,因此在未指定坐标时,工具可以使用合理的默认值放置内容。
await callTool('get_session_info', {});
await callTool('clear_session', {});
await callTool('create_text_frame', {
content: 'Auto-positioned text',
fontSize: 12
});
架构
src/
├── core/
│ ├── InDesignMCPServer.js # MCP server
│ ├── scriptExecutor.js # macOS AppleScript + Windows COM
│ └── sessionManager.js # Session state
├── handlers/ # Tools by domain
│ ├── documentHandlers.js
│ ├── pageHandlers.js
│ ├── textHandlers.js
│ ├── styleHandlers.js
│ ├── graphicsHandlers.js
│ ├── bookHandlers.js
│ ├── pageItemHandlers.js
│ ├── groupHandlers.js
│ ├── masterSpreadHandlers.js
│ ├── spreadHandlers.js
│ ├── layerHandlers.js
│ ├── exportHandlers.js
│ ├── utilityHandlers.js
│ ├── helpHandlers.js
│ └── index.js
├── types/ # Tool definitions
├── utils/
│ ├── stringUtils.js # Response helpers, escapeJsxString
│ └── jsxSafe.js # Validated ExtendScript literals / paths
└── index.js
脚本执行
| 平台 | 机制 | 说明 |
|---|---|---|
| macOS | osascript → do script | 自动检测应用名称;在 OS 临时目录中创建临时 .jsx |
| Windows | PowerShell COM DoScript | 按版本从新到旧尝试 ProgID;在 OS 临时目录中创建临时 .jsx |
ExtendScript 安全性
传入 JSX 的工具参数应通过 src/utils/jsxSafe.js 处理:
str()、num()、bool()、index()、enumOf()、measure()、json()、numList()- 对文件系统路径使用
validateFilePath()/jsxPath()(INDESIGN_ALLOWED_DIRS)
每个处理程序都会使用这些辅助函数;原始参数字符串不会传入脚本。
错误
脚本会以文本形式报告失败("No document open"、"Error …"、"… not found")。服务会识别这些错误(src/utils/stringUtils.js 中的 looksLikeFailure),并以 success: false 和 MCP isError: true 返回,以便客户端区分失败调用和成功调用。
实际应用
- 自动生成风格一致的报告
- 品牌资产和模板系统
- 多页出版物和书籍
- 由设计系统驱动的版面设计
测试
npm run check # syntax check core modules
npm test # everything below that needs no InDesign
npm run test:audit # script audit only; pass a regex to audit some tools
npm run test:integration # full suite — requires InDesign running
npm run test:unified # single-document unified runner
npm test 涵盖:
- 工具定义: 每个工具都有描述、标题、注释,以及类型明确且带有说明的参数列表
- 路径限制: 每个文件或文件夹参数都会拒绝 home 文件夹和
INDESIGN_ALLOWED_DIRS之外的路径 - MCP 协议: 服务通过 stdio 启动、发送说明、列出所有工具,并为每个工具响应
help - 错误检测: 失败消息会转换为
isError结果 - 工具参考:
docs/TOOLS.md与定义保持一致 - 脚本审计: 见下文
脚本审计(tests/audit/scripts.audit.js)会根据每个工具的 schema 构造参数并调用该工具,捕获它将要发送的 ExtendScript;如果任何已公布的工具未被分发、脚本不是有效的 ES5(ExtendScript 不支持 let、箭头函数或 JSON),或脚本使用了 InDesign 2023 脚本 DOM(types-for-adobe)中不存在的属性、方法、枚举或全局对象,审计就会失败。
每次推送和拉取请求都会在 CI 中运行 check 和 npm test。审计会依据 Adobe 发布的 DOM 检查脚本,但不会运行脚本,因此针对正在运行的 InDesign 执行的集成测试仍是最终检查。
相关项目
执行后端
| 后端 | 启用方式 |
|---|---|
| ExtendScript / COM(默认) | 取消设置,或使用 INDESIGN_BACKEND=extendscript |
| UXP 桥接 + 插件 | 使用 INDESIGN_BACKEND=uxp(或 auto)+ npx -p adobe-mcp-indesign adobe-mcp-indesign-uxp-bridge + 加载 uxp/plugin |
| ArtCraft / DesignCraft | 使用 INDESIGN_TARGET=craft;或者在 InDesign 不可用且 DesignCraft 正在运行时自动回退(127.0.0.1:7979) |
ArtCraft(DesignCraft)支持
此服务支持为 Storytold 的 DesignCraft 桌面排版应用透明适配器。当未安装或未运行 InDesign,或设置了 INDESIGN_TARGET=craft(或 ADOBE_TARGET=craft)时,兼容的工具会直接路由至 DesignCraft 的环回控制协议(默认为 127.0.0.1:7979,也可通过 DESIGNCRAFT_CONTROL_PORT 设置)。
详情:docs/architecture-execution.md 和 uxp/README.md。
可选的打包参考:theloniuser/indesign-uxp-server(已将桥接程序/插件改编至 uxp/,并注明来源)。
示例
参阅 examples/basic-flyer.md 和 examples/mcp-config.json,了解首次运行工作流和客户端配置。
贡献
参阅 CONTRIBUTING.md。请按照 SECURITY.md 中的说明私下报告安全问题。
致谢
此服务最初由 Lukas Drechsel-Burkhard 编写,项目地址为 lucdesign/indesign-mcp-server,采用 MIT 许可证发布。本项目基于该作品构建;原始版权声明保留在 LICENSE 中。
许可证
MIT。参阅 LICENSE。
文档
- docs/MCP_INSTRUCTIONS.md:各客户端的设置、环境变量和故障排除
- docs/TOOLS.md:所有工具及参数
- docs/LLM_PROMPT.md:Agent 的约定和工作流
- docs/architecture-execution.md:脚本如何连接到 InDesign
- docs/CHANGELOG.md
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。