mcpField
I
InDesign MCP Server

InDesign MCP Server

本地服务
github.com/zachshallbetter媒体与设计281 周前更新

关于 InDesign MCP Server

面向设计团队、出版者和自动化开发者的 MCP 服务,可通过结构化工具控制 Adobe InDesign,覆盖从版面与排版到书籍制作和导出。

主要功能

  1. 01文档与页面管理
  2. 02文本、表格、样式和版面
  3. 03书籍与长文档工具
  4. 04导出 PDF、EPUB 和图像
  5. 05macOS、Windows 与可选 UXP 后端

适用场景

  1. 01生成样式一致的报告
  2. 02制作多页出版物和书籍
  3. 03在版面中应用品牌模板
  4. 04将文档导出用于印刷或数字发布

MCP 相关

它向兼容客户端提供 InDesign 操作工具,涵盖文档、版面、排版和导出。服务在本机运行并连接已安装的 InDesign。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zachshallbetter-adobe-mcp-indesign": {
"command": "npx",
"args": [
"-y",
"adobe-mcp-indesign"
],
"env": {
"INDESIGN_APP_NAME": "<INDESIGN_APP_NAME>",
"INDESIGN_ALLOWED_DIRS": "<INDESIGN_ALLOWED_DIRS>",
"INDESIGN_BACKEND": "<INDESIGN_BACKEND>"
}
}
}
}
启动命令npx -y adobe-mcp-indesign
需要配置的环境变量
INDESIGN_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmadobe-mcp-indesign2.5.0

工具

423

收录的工具列表 · 更新于 2 周前

参数类型必填说明
positionenum否添加页面的位置:AT_END、AT_BEGINNING 或 BEFORE/AFTER referencePageAT_END | AT_BEGINNING | BEFORE | AFTER
referencePageinteger否0 起始的参考页面索引(BEFORE/AFTER 时必需)

详细介绍

InDesign MCP 服务

npm License: MIT Node.js Platform MCP GitHub stars

将 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 版本按以下顺序确定:

  1. INDESIGN_APP_NAME 环境变量(例如 Adobe InDesign 2026)
  2. 正在运行的 InDesign 进程
  3. /Applications 或 ~/Applications 下最新的 Adobe InDesign *.app
  4. 回退到: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(根据与服务公布的相同定义生成)。

领域工具数示例
文档与书籍46create_document、open_document、save_document、preflight_document、data_merge、validate_document、create_book、export_book
页面与跨页30add_page、resize_page、create_page_guides、place_file_on_page、list_spreads、duplicate_spread
文本与表格5create_text_frame、edit_text_frame、create_table、populate_table、find_replace_text
图形与图像8place_image、create_rectangle、create_polygon、create_object_style
样式与颜色8create_paragraph_style、create_character_style、create_color_swatch、apply_color
布局、主页与图层30move_page_item、create_group、create_master_spread、detach_master_items、create_layer
导出与实用工具10export_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
脚本执行
平台机制说明
macOSosascript → do script自动检测应用名称;在 OS 临时目录中创建临时 .jsx
WindowsPowerShell 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。

文档

问题反馈:https://github.com/zachshallbetter/adobe-mcp/issues

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。