indesign-cli MCP Server
This server enables AI agents to programmatically control Adobe InDesign through a structured set of tools for document creation, layout, styling, and export.
Document Management Create, open, save, close, and package documents. Configure document properties (size, margins, bleed, orientation, facing pages), manage sections, preferences, and find/replace text.
Page & Spread Operations Add, delete, duplicate, move, resize, reframe, and navigate pages and spreads. Create layout snapshots.
Master Spreads Create, duplicate, delete, and inspect master spreads. Apply them to pages, add text frames/rectangles/guides, detach master items, and remove overrides.
Layers Create, list, and organize layers, including hidden/locked layer info.
Page Items (Objects) Create rectangles, ellipses, polygons, and text frames. Move, resize, duplicate, delete, and select items. Manage script labels on page items.
Grouping Create groups, add/remove items from groups, and inspect groups on pages.
Text & Tables Create and edit text frames with font, size, alignment, and color options. Create and populate tables with configurable rows, columns, and headers. Find text across documents.
Styles Create and apply paragraph, character, and object styles. List all styles by type.
Colors & Swatches Create process or spot color swatches, apply colors to objects (fill or stroke), and list document colors.
Guides Create guides on pages, spreads, or master spreads with configurable rows, columns, and gutters.
Export & Packaging Export to PDF (with quality presets, bleed, marks), JPEG images, or EPUB. Package documents for print.
Hyperlinks Create URL, page, or text hyperlinks, and retrieve all document hyperlinks.
Inspection & Info Get document info, layers, styles, colors, stories, elements, sections, grid settings, and preferences. Get detailed info on pages, spreads, page items, groups, images, and master spreads.
Session & Scripting Get/clear session info, execute custom ExtendScript (JSX) code for advanced automation, and query available tools by domain or keyword.
XML Place XML content on a page.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@indesign-cli MCP Server search for PDF export tools"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎨 indesign-cli
中文 | English
让 AI Agent 直接操作 Adobe InDesign 的命令行工具。
indesign-cli 把 InDesign 的自动化能力包装成 Agent 友好的 CLI:Agent 可以查询工具、执行 JSX 脚本、调用排版能力、验证导出文件,并按需配合项目级 Skill 使用。
当前 Node-backed registry 固定包含 150 个 InDesign 工具,CLI 还叠加 server.*、session.*、script.run、export.verify、tool.batch、feedback.report 等原生命令和项目插件工具。实时可见能力以 tool domains / tool list 输出为准,覆盖文档、页面、跨页、母版、图层、文本、图片、基础图形、样式、导出、Book、Presentation、模板槽位、脚本执行和环境检查。
如果你正在做 AI 生成画册、建筑汇报、品牌手册、版式模板、HTML 转 InDesign 这类项目,它可以让 Agent 不再靠“猜坐标”和“手搓脚本”工作,而是通过稳定的命令和结构化返回值操作真实 InDesign。
✨ 这个项目解决什么问题?
Adobe InDesign 很强,但对 AI Agent 来说并不好用:
工具能力多,Agent 不知道该调用哪个。
JSX 脚本可以执行,但调试、传参、返回值和错误处理都很散。
MCP 工具很多,直接塞进上下文会占用大量 token。
真实导出物是否成功,不能只靠“命令没报错”判断。
indesign-cli 做的事情很简单:把真实 InDesign 自动化能力变成 Agent 更容易使用的一组命令。
它的关键价值之一是 省 token:Agent 不需要一次性读取上百个工具的完整描述,可以先看 tool domains 的摘要,再用 tool search、tool list、tool schema 按需加载当前任务需要的工具说明。输出默认是紧凑单行 JSON,需要人工查看时加 --pretty。
它不是一个给人类手动排版的 CLI,也不是一个新的排版引擎。它更像是 AI 项目和 InDesign 之间的稳定桥梁。
Related MCP server: InDesign MCP Server
🚀 快速安装
一个离线 Setup 就够了。 CLI、Node、winax 和 HTML 插件全部打包在里面,本机不需要装 Node 或 npm,也不需要编译任何原生模块。
你只需要:
Windows
Adobe InDesign 桌面版:推荐 2024-2026;CLI 会尝试连接 2022-2026、CC 版本和通用
InDesign.ApplicationCOM 入口,实际可用版本取决于本机 COM 注册
InDesign 需要和命令行运行在同一个 Windows 用户会话中。
下载:
外部 / 开源用户:到 GitHub Releases 下载
indesign-cli-agent-setup.exe。事务所内部工位和无人值守 Agent:从公司 NAS 取同一个 Setup。
# 1. 运行 Setup,装到 %LOCALAPPDATA%,不需要管理员权限
.\indesign-cli-agent-setup.exe
# 2. 重开一个终端 —— PATH 注册只对新开的进程生效
# 3. 验证;第二条命令能列出工具才说明 HTML 能力可用
indesign-cli-agent server health --deep --connect-indesign
indesign-cli-agent tool list --domain htmlserver health 返回 ok: true 且 data.indesign_com.checked 为 true,说明真实 InDesign COM 链路已经通了。
外部用户请关闭遥测。 成品 EXE 的共享遥测默认写入 SA 事务所内网 NAS:外网环境不可达、写入会静默失败,但仍建议显式关闭
$env:INDESIGN_CLI_TELEMETRY="off"。详见 反馈与遥测。
已经装过的机器用 indesign-cli-agent install 就地更新或修复,不必重新下载 Setup。
Setup 首次把轻量启动器和完整 runtime 安装到 %LOCALAPPDATA%\indesign-cli。后续 indesign-cli-agent <indesign-cli 参数...> 只读取 state\current-runtime.json 并启动 runtime\<version>\cli\indesign-cli.exe;embedded runtime 只用于 Setup 的首次离线落地,不作为日常执行目录。
%LOCALAPPDATA%\indesign-cli\
bin\indesign-cli-agent.exe
runtime\<version>\{cli,node,server,plugins\html-indesign}
state\current-runtime.json
tmp\日常更新读取 NAS 优先、GitHub 兜底的 runtime-latest.json(schema v2),下载并校验 runtime ZIP,在 staging 中检查 CLI、Node、winax、builtin HTML 插件和系统 Edge 后原子切换。成功后只保留当前 runtime;失败时删除新 staging 并继续使用旧 runtime。日常更新不替换 bin\indesign-cli-agent.exe;启动器自身需要升级时重新运行新版 Setup。
从 0.4.2 迁移时不做旧协议桥接,由公司 Agent 从 NAS 重新运行最新版 Setup。Skill 仍由公司现有渠道独立发布,本 CLI 不自动安装 Skill。
发行构建(维护者)
发行脚本会依次构建持久的 PyInstaller onedir CLI、轻量启动器、包含 Node/winax/HTML 插件生产依赖的 runtime ZIP,以及单个完整离线 Setup:
python scripts\build_agent_bootstrapper.py `
--node-root "C:\Program Files\nodejs" `
--node-modules .\node_modules `
--html-plugin-tgz <sa-html-indesign-<插件版本>.tgz> `
--version <运行时版本> `
--nas-url "\\<文件服务器主机名>\<共享>\tools\indesign-cli\runtime-windows-x64-<运行时版本>.zip" `
--github-url "https://github.com/zhanglongxiao111/indesign-cli/releases/download/v<运行时版本>/runtime-windows-x64-<运行时版本>.zip"先加 --dry-run 可只校验输入并查看三段 PyInstaller 命令。外部 runtime-latest.json 是 ZIP 完整性事实源,写入真实 SHA-256。ZIP 和 Setup 内的 runtime-metadata.json 只用于离线身份/组件校验,其 SHA 字段固定为 64 个 0:归档无法在自身内部保存自己的最终摘要,否则写入摘要本身会再次改变摘要。
构建完成后,使用固定内网发布脚本先空跑再正式切换:
python scripts\publish_agent_runtime.py --release-dir .\dist-agent --dry-run
python scripts\publish_agent_runtime.py --release-dir .\dist-agent脚本会校验版本和 SHA-256,归档到 NAS releases/<version>/,并把 runtime-latest.json 作为最后一步原子切换。不要手工覆盖 NAS 当前清单。
🧠 独立发布 Agent Skill
如果你希望某个项目里的 Agent 自动知道如何制作 HTML/InDesign 演示文稿并使用 indesign-cli,需要通过公司 Agent 渠道发布完整 Skill 目录。
Skill 的唯一发布源在仓库中:
skills/indesign-cli/把整个目录复制到目标项目,不能只复制 SKILL.md,否则会丢失 references、作者包脚本、起步模板和展示元数据:
D:\AI\your-project\.codex\skills\indesign-cli\无论用哪种方式安装,发布的都只有程序本身,不携带、不安装也不修改 Skill。CLI 不提供自动复制 Skill 的命令;公司 Agent 渠道直接从上述仓库目录独立发布 Skill。
🧩 插件接入
indesign-cli 支持项目级插件,让上层项目把自己的高层能力接入统一工具目录。比如 HTML-to-InDesign 项目注册 html 域,Agent 再通过同一套 tool list/schema/call 使用它。
从源码安装时补装 html-indesign
用 Setup 装的用户不需要这一步,html 域已经内置。只有从源码(pip install -e .)跑的开发者需要手动补上:
git clone https://github.com/zhanglongxiao111/html-indesign.git
cd html-indesign
# --ignore-scripts 很重要:生产依赖里有 playwright,不加会去下载几百 MB 浏览器,
# 而这个插件用的是系统 Edge,那些浏览器根本用不上。成品运行环境也是这么装的。
npm install --omit=dev --ignore-scripts
indesign-cli plugin install .
indesign-cli plugin validate .
indesign-cli tool list --domain html最后一条能列出 html.authoring_lint、html.build、html.reverse_export 等工具,说明 HTML → InDesign 能力已经接上。
插件记录写在当前目录的 .indesign-cli\plugins\,也就是按项目安装。换一个项目目录要重新跑一次 plugin install。
插件工具不会默认挤进 Agent 上下文。Agent 仍然先看 domain 摘要,再按需读取具体 schema。
🛠️ 常用能力
🔎 查询可用工具
indesign-cli tool domains
indesign-cli tool search --query "pdf"
indesign-cli tool list --domain template
indesign-cli tool schema template.populate_template_slotsAgent 可以先查有哪些工具,再只读取需要的 schema,减少上下文浪费。
🧭 反馈与遥测
CLI 提供 feedback 域,用来在 Agent 遇到工具缺口、文档不清、错误信息不可操作或 schema 难用时留下结构化反馈:
indesign-cli feedback report --code TOOL_GAP --note "缺少批量替换段落样式的直接工具" --tool style.apply_paragraph_style
indesign-cli tool schema feedback.report通过 indesign-cli-agent 成品 EXE 运行时(0.4.1 起),共享遥测默认写入公司(SA 事务所)内网 NAS 根目录。公网/外部用户请设置 INDESIGN_CLI_TELEMETRY=off 关闭遥测;未关闭时事件会尝试写入 SA 内网收集点(外网环境不可达,写入静默失败,但建议显式关闭)。pip/源码安装仍保持显式 opt-in,需要自行配置:
# 指向你自己的收集目录,本地路径或 UNC 共享都可以
$env:INDESIGN_CLI_TELEMETRY_DIR="D:\indesign-cli-telemetry"CLI 会直接写入该根目录下的 sessions/YYYY-MM-DD/*.jsonl 和 state/*.json;reports/ 预留给后续聚合结果。记录字段为白名单元数据:session_id、origin_key、cwd_hash、可选 Agent 线程/运行 ID、工具 id/source、成功失败、错误码、耗时、参数键名、反馈 code/note 和最近调用摘要;0.4.2 起为便于内部排障,还记录真实工作目录(cwd)、机器名(host)和路径类参数值(arg_paths,仅键名以 path/file/dir/folder 结尾的字符串参数)。
不会记录:非路径参数值、脚本内容、文档正文内容。可用配置:
变量 | 作用 |
| 共享遥测根目录;agent EXE 默认注入公司 NAS 路径,pip/源码安装未设置时不写共享遥测 |
| 完全关闭遥测 |
| 显式指定完整 telemetry session |
| 上层 Agent 线程 ID,由运行时注入 |
| 上层 Agent 单次运行 ID,由运行时注入 |
| 默认 session 空闲切分阈值,默认 8 小时 |
🧰 能力覆盖
当前 indesign-cli 的 InDesign 内置工具来自 src/tools/index.js registry,并由 src/core/indesign-tool-registry.json artifact 单向投影给 Python CLI。Node-backed 工具基线是 classic 114 / internal 30 / advanced 6,合计 150;internal 工具在 CLI 中显示为 source: hidden_handler,MCP 不直接暴露。
CLI 工具目录由三类来源合并:
Node-backed artifact:来自
src/core/indesign-tool-registry.jsonCLI primitives:
server.*、session.*、script.run、export.verify、tool.batch、feedback.report项目插件:通过
plugin install/list/validate/doctor动态接入
这些能力覆盖 InDesign 绝大部分常用自动化功能,以及大多数 Agent 自动化场景:
文档、页面、跨页、母版、图层
文本框、表格、图片、基础图形、页面对象
段落样式、字符样式、对象样式、色板
PDF / IDML / 图片导出与产物验证
Book、Presentation、模板槽位和高级模板填充
JSX 脚本执行、session 线索和环境检查
这些能力通过 CLI 分域查询,不会一次性占满 Agent 上下文。
🧱 Registry 与 artifact
新增或修改内置 InDesign 工具时,不再编辑 src/handlers/ 或 src/types/;这两个目录以及旧 src/core/InDesignMCPServer.js 已在终态架构中删除。标准路径是:
修改对应
src/tools/<domain>/tool-module,让工具定义、schema、contract、handler 和 CLI id 共置。在域
index.js聚合;新域再接入全局src/tools/index.js。生成并校验 artifact:
node src\core\artifact.js --write
node src\core\artifact.js --checkCLI 的 Node-backed 工具目录只读 artifact。artifact 缺失或 registry_hash 不匹配会硬失败,避免 Python 侧重新猜测 domain、schema 或隐藏工具。
📜 执行 JSX 脚本
indesign-cli --pretty script run test\workspace\probe.jsx适合测试真实 InDesign 行为、创建文档、检查对象、执行复杂排版逻辑。
复杂构建或导出可能超过默认等待时间,可以显式加长脚本通道超时(script run 默认 300 秒;tool call 默认 30 秒):
indesign-cli --pretty script run test\workspace\build.jsx --timeout-ms 900000短脚本也可以从 stdin 输入:
Get-Content test\workspace\probe.jsx | indesign-cli --pretty script run --stdin📦 验证导出物
indesign-cli export verify output\deck.pdf用于确认 PDF、IDML 等文件真的生成成功,而不是只看命令是否结束。
export_images 当前只声明并支持 JPEG。传入 PNG/TIFF 会返回 ARTIFACT_FORMAT_UNSUPPORTED,避免生成误导性的 .jpg 产物。
🛡️ 文档关闭安全
document.close_document 默认不会在多文档场景关闭 activeDocument。如果确实要关闭本轮创建的测试文档,参数必须显式包含 expectedDocumentName 或 forceActiveDocument:true;如需丢弃未保存修改,还必须传 allowDiscard:true。
🧩 使用模板槽位
indesign-cli tool call template.list_template_blueprints --args-file args.json
indesign-cli tool call template.inspect_template_blueprint --args-file args.json
indesign-cli tool call template.create_page_with_template --args-file args.json
indesign-cli tool call template.populate_template_slots --args-file args.json适合让 Agent 基于母版、脚本标签和槽位名生成稳定页面。
📚 Book / Presentation 工具
indesign-cli 也包含 Book 和 Presentation 相关能力,例如:
创建和管理 InDesign Book
导出 Book
创建演示型文档
添加封面页、章节页、全幅图片页、图片网格页
这些能力可以通过 tool domains、tool list 和 tool schema 查询。
🚨 常见错误码速查
所有命令(含参数拼写错误)都返回统一 JSON envelope(schema_version: 2),失败时看 error.code、error.message 和 error.hint。高频错误码:
错误码 | 含义 | 典型处置 |
| 命令行参数缺失或拼错 | 看 |
| 工具参数缺失或 JSON 无效 | 用 |
| 参数名拼错 | 按 |
| 工具或域不存在 | 先 |
| 缺必填参数 |
|
| 超时参数非法 / 执行超时 | 超时值范围 1-3600 秒; |
| batch plan 格式或步骤失败 | 按 |
| Node 后端或 InDesign 脚本失败 | 跑 |
| 没有打开的文档 | 先打开或创建文档 |
| 导出物验证失败 | 确认导出成功、路径正确、产物非旧文件 |
| 环境或依赖问题 | 见上文"常见环境问题排查" |
| CLI 未预期异常 | 带 |
🧪 示例工作流
一个典型 Agent 流程可能是:
indesign-cli server health --deep --connect-indesign
indesign-cli tool domains
indesign-cli tool search --query "template"
indesign-cli tool schema template.populate_template_slots
indesign-cli tool explain template.populate_template_slots
indesign-cli script run test\workspace\build.jsx
indesign-cli session doctor
indesign-cli export verify output\presentation.pdfAgent 负责生成脚本和参数,indesign-cli 负责把它们安全地送进真实 InDesign,并返回结构化结果。
💡 适合谁使用?
适合:
想让 AI Agent 自动操作 InDesign 的开发者
正在做 HTML / JSON / 模板到 InDesign 的转换项目
需要自动生成设计汇报、画册、排版文档的团队
希望用脚本验证真实 InDesign 输出的 Agent 工作流
不适合:
只想手动点按钮排版的普通 InDesign 用户
不安装 Adobe InDesign 的纯后端环境
希望用它替代浏览器、LaTeX 或其他排版引擎的场景
🔧 本地开发
这条路给要改源码、做二次开发或在 CI 里跑的人。和 Setup 不同,它要求本机自备 Node.js 18+ 和 Python 3.10+,并且会现场编译 winax。
git clone https://github.com/zhanglongxiao111/indesign-cli.git
cd indesign-cli
pip install -e .
indesign-cli server setup
indesign-cli --pretty server health --deep --connect-indesignserver setup 会装上 InDesign 自动化所需的 Node 依赖,包括 winax。server health 返回 ok: true 且 data.indesign_com.checked 为 true,说明真实 InDesign COM 链路已完成只读探针。
从源码跑不带 html 域——内置 HTML 插件只随成品运行环境分发。补装办法见 插件接入。
常见环境问题排查
server health 的输出包含当前 runtime 根目录/版本/组件、builtin HTML 插件、系统 Edge,以及工具链诊断。排查环境问题先看这份输出。
ModuleNotFoundError: No module named 'cli_anything'
命令入口 indesign-cli.exe 和 Python 用户包目录不一致,常见于沙箱或受控 Agent 运行时重定向了 APPDATA / USERPROFILE。检查用户包目录:
python -c "import site; print(site.getuserbase()); print(site.getusersitepackages())"如果指向临时目录,把 PYTHONUSERBASE 固定到真实用户目录或稳定短路径,再重新安装。
winax 编译失败(如 error C1083)
server setup 需要用 MSVC 编译原生模块 winax,在超长路径(深层临时目录)下容易失败。解决方式是把 server 目录固定到稳定短路径:
# 1. 定位当前 server 目录
python -c "from cli_anything.indesign.core.runtime import resolve_server_root; print(resolve_server_root())"
# 2. 把整个目录复制到短路径,例如 D:\indesign-cli-server
# 3. 指向它并重装依赖
setx INDESIGN_CLI_SERVER_ROOT "D:\indesign-cli-server"
indesign-cli server setupINDESIGN_CLI_SERVER_ROOT 必须指向包含 package.json、src/index.js、src/advanced/index.js 的目录。这也是推荐的预构建模式:winax 构建一次,多个会话和受控环境复用,不必每次临时编译。
npm 不可用(Volta / nvm shim 损坏)
server setup 会先探测 PATH 上的 npm;探测失败时自动回退到 Node 自带的 npm-cli.js。两者都不可用时报 NPM_NOT_AVAILABLE,需要先修复本机 Node / npm 安装。
运行测试
git diff --check
node src\core\artifact.js --check
node scripts\check_architecture.mjs
node tests\architecture\registry.test.mjs
node scripts\validate_schemas.js
node scripts\check_duplicates.mjs
node tests\index.js --required
python -m pytest agent-harness\cli_anything\indesign\tests -q📁 项目结构
.
├─ agent-harness/ # Python CLI、CLI 测试
├─ src/core/ # MCP server 工厂、router、runtime、artifact、会话与脚本执行
├─ src/tools/ # domain tool-module;schema、contract、handler、CLI id 共置
├─ scripts/ # 维护脚本和检查脚本
├─ tests/ # 测试和真实 InDesign E2E
├─ docs/ # 设计文档、计划、协作记录
├─ skills/ # 可手动复制到其他项目的 Agent Skill 和预览资产
├─ pyproject.toml # pip 安装入口
└─ AGENTS.md # 项目级 Agent 协作规则🗺️ 下一步方向
项目后续会重点完善:
更稳定的 HTML / 语义模板到 InDesign 转换链路
更好用的模板槽位协议
更适合 Agent 的排版检查和导出验证
更完善的示例项目和真实 E2E 场景
📄 License
MIT
Available Tools
114 toolsadd_item_to_groupB
Add a page item to an existing group
Inputs: itemIndex (required), pageIndex (required), groupIndex (required).
add_pageC
Add a new page to the document
Inputs: position, referencePage.
adjust_page_layoutC
Adjust page layout with new dimensions and margins
Inputs: pageIndex (required), width, height, bleedTop, +7 more.
apply_character_styleB
Apply a character style to text
Inputs: styleName (required), endIndex, frameIndex, startIndex.
apply_colorC
Apply color to an object
Inputs: colorName (required), objectIndex (required), colorType, frameIndex, +1 more.
apply_master_spreadB
Apply a master spread to pages
Inputs: masterName (required), pageRange.
apply_object_styleB
Apply an object style to a page item
Inputs: styleName (required), itemType, itemIndex.
apply_paragraph_styleC
Apply a paragraph style to text
Inputs: styleName (required), frameIndex, paragraphIndex.
clear_sessionA
Clear all session data including page dimensions and document information
Inputs: no named parameters.
close_documentA
Close a document only when the target is unambiguous. Modified documents require allowDiscard.
Inputs: allowDiscard, forceActiveDocument, expectedDocumentName.
create_character_styleC
Create a character style
Inputs: name (required), bold, italic, fontSize, +3 more.
create_color_swatchC
Create a color swatch
Inputs: red (required), blue (required), name (required), green (required), +1 more.
create_documentC
Create a new document
Inputs: pages, width, height, bleedTop, +9 more.
create_document_hyperlinkC
Create a hyperlink in the document
Inputs: sourceText (required), destination (required), linkType, pageIndex.
create_document_sectionC
Create a new section in the document
Inputs: startPage (required), startNumber, sectionPrefix, numberingStyle.
create_ellipseB
Create an ellipse on the active page
Inputs: x (required), y (required), width (required), height (required), +3 more.
create_groupC
Create a group from currently selected items
Inputs: pageIndex (required).
create_group_from_itemsA
Create a group from specific page items by their indices
Inputs: pageIndex (required), itemIndices (required).
create_layerC
Create a new layer
Inputs: name (required), color, locked, visible.
create_master_guidesC
Create guides on a master spread
Inputs: masterName (required), layerName, rowGutter, fitMargins, +5 more.
create_master_rectangleB
Create a rectangle on a master spread
Inputs: x (required), y (required), width (required), height (required), +5 more.
create_master_spreadC
Create a new master spread
Inputs: name (required), baseName, pageColor, namePrefix, +1 more.
create_master_text_frameB
Create a text frame on a master spread
Inputs: content (required), masterName (required), x, y, +7 more.
create_object_styleC
Create an object style for consistent formatting
Inputs: name (required), fillColor, strokeColor, cornerRadius, +2 more.
create_page_guidesC
Create guides on a page
Inputs: pageIndex (required), layerName, rowGutter, fitMargins, +5 more.
create_paragraph_styleC
Create a paragraph style
Inputs: name (required), leading, fontSize, alignment, +4 more.
create_polygonC
Create a polygon on the active page
Inputs: x (required), y (required), width (required), height (required), +4 more.
create_rectangleB
Create a rectangle on the active page
Inputs: x (required), y (required), width (required), height (required), +4 more.
create_spread_guidesC
Create guides on a spread
Inputs: spreadIndex (required), layerName, rowGutter, fitMargins, +5 more.
create_tableB
Create a table on the active page
Inputs: rows (required), columns (required), x, y, +4 more.
create_text_frameB
Create a text frame on the active page
Inputs: content (required), x, y, width, +7 more.
delete_all_page_layout_snapshotsB
Delete all layout snapshots for a page
Inputs: pageIndex (required).
delete_master_spreadC
Delete a master spread
Inputs: name (required), masterIndex.
delete_pageB
Delete a page from the document
Inputs: pageIndex (required).
delete_page_itemC
Delete a page item
Inputs: itemIndex (required), pageIndex (required).
delete_page_layout_snapshotB
Delete the layout snapshot for a page
Inputs: pageIndex (required).
delete_spreadC
Delete a spread
Inputs: spreadIndex (required).
detach_master_itemsC
Detach master page items from a page
Inputs: pageIndex (required), itemIndex.
duplicate_master_spreadC
Duplicate a master spread
Inputs: name (required), newName (required), position, masterIndex, +1 more.
duplicate_pageC
Duplicate a page
Inputs: pageIndex (required), position, referencePageIndex.
duplicate_page_itemC
Duplicate a page item
Inputs: x (required), y (required), itemIndex (required), pageIndex (required).
duplicate_spreadC
Duplicate a spread
Inputs: spreadIndex (required), position, referenceSpreadIndex.
edit_text_frameC
Edit an existing text frame
Inputs: frameIndex (required), content, fontName, fontSize, +2 more.
execute_indesign_codeB
Execute custom InDesign ExtendScript code
Inputs: code (required).
export_epubB
Export document to EPUB
Inputs: filePath (required), includeImages, includeStyles.
export_imagesC
Export pages as images
Inputs: outputPath (required), pages, format, quality, +1 more.
export_pdfC
Export document to PDF
Inputs: filePath (required), pages, quality, includeBleed, +1 more.
find_replace_textB
Find and replace text in the document
Inputs: findText (required), replaceText (required), wholeWord, caseSensitive.
find_text_in_documentC
Find text across the entire document
Inputs: searchText (required), useRegex, wholeWord, replaceText, +1 more.
get_document_colorsC
Get all colors and swatches in the document
Inputs: includeTints, includeSwatches, includeGradients.
get_document_elementsB
Get all elements in the document
Inputs: elementType.
get_document_grid_settingsA
Get comprehensive grid settings for the document
Inputs: no named parameters.
get_document_hyperlinksB
Get all hyperlinks in the document
Inputs: includeSources, includeDestinations.
get_document_infoB
Get information about the active document
Inputs: no named parameters.
get_document_layersC
Get all layers in the document
Inputs: includeHidden, includeLocked.
get_document_layout_preferencesC
Get layout preferences and settings for the document
Inputs: no named parameters.
get_document_preferencesC
Get document preferences and settings
Inputs: preferenceType.
get_document_sectionsA
Get all sections in the document
Inputs: no named parameters.
get_document_storiesB
Get all stories in the document
Inputs: includeHidden, includeOverset.
get_document_stylesC
Get all styles in the document
Inputs: styleType.
get_group_infoC
Get detailed information about a group
Inputs: pageIndex (required), groupIndex (required).
get_image_infoC
Get detailed information about an image
Inputs: itemIndex.
get_master_spread_infoC
Get detailed information about a master spread
Inputs: name (required), masterIndex.
get_page_content_summaryB
Get a summary of content on a page
Inputs: pageIndex (required).
get_page_infoB
Get detailed information about a specific page
Inputs: pageIndex (required).
get_page_item_infoC
Get detailed information about a specific page item
Inputs: itemIndex (required), pageIndex (required).
get_page_item_script_labelsB
Read script labels from page items using selection or explicit identifiers
Inputs: mode, objectId, itemIndex, pageIndex, +1 more.
get_session_infoA
Get current session information including page dimensions and active document
Inputs: no named parameters.
get_spread_content_summaryC
Get a summary of content on a spread
Inputs: spreadIndex (required).
get_spread_infoB
Get detailed information about a specific spread
Inputs: spreadIndex (required).
helpA
Get help information about available tools and their usage
Inputs: tool, format, category.
list_color_swatchesB
List all color swatches
Inputs: no named parameters.
list_groupsC
List all groups on a specific page
Inputs: pageIndex (required).
list_layersB
List all layers in the document
Inputs: no named parameters.
list_master_spreadsA
List all master spreads in the document
Inputs: no named parameters.
list_object_stylesA
List all object styles in the document
Inputs: no named parameters.
list_page_itemsB
List all page items on a specific page
Inputs: pageIndex (required).
list_spreadsA
List all spreads in the document
Inputs: no named parameters.
list_stylesC
List all paragraph and character styles
Inputs: styleType.
move_pageC
Move a page to a different position
Inputs: pageIndex (required), binding, position, newPosition, +1 more.
move_page_itemB
Move a page item to a new position
Inputs: x (required), y (required), itemIndex (required), pageIndex (required).
move_spreadC
Move a spread to a different position
Inputs: spreadIndex (required), position, referenceSpreadIndex.
open_documentC
Open an existing document
Inputs: filePath (required).
organize_document_layersC
Organize and clean up document layers
Inputs: sortLayers, deleteEmptyLayers, mergeSimilarLayers.
package_documentC
Package document for printing
Inputs: outputPath (required), includeFonts, includeLinks, includeProfiles.
place_file_on_pageC
Place a file on a page
Inputs: filePath (required), pageIndex (required), x, y, +3 more.
place_file_on_spreadC
Place a file on a spread
Inputs: filePath (required), spreadIndex (required), x, y, +4 more.
place_imageC
Place an image on the active page with scaling and fitting options
Inputs: filePath (required), x, y, scale, +4 more.
place_xml_on_pageC
Place XML content on a page
Inputs: pageIndex (required), xmlElementName (required), x, y, +1 more.
populate_tableC
Populate a table with data
Inputs: data (required), startRow, tableIndex, startColumn.
reframe_pageC
Reframe (resize) a page
Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +2 more.
remove_item_from_groupB
Remove a page item from a group
Inputs: itemIndex (required), pageIndex (required), groupIndex (required).
remove_master_overrideC
Remove override from a master page item
Inputs: itemIndex (required), pageIndex (required).
resize_pageC
Resize a page
Inputs: pageIndex (required), width, height, anchorPoint, +2 more.
resize_page_itemD
Resize a page item
Inputs: width (required), height (required), itemIndex (required), pageIndex (required), +1 more.
save_documentC
Save the active document
Inputs: filePath (required).
select_pageD
Select a page
Inputs: pageIndex (required), selectionMode.
select_page_itemB
Select a specific page item
Inputs: itemIndex (required), pageIndex (required), existingSelection.
select_spreadC
Select a spread
Inputs: spreadIndex (required), selectionMode.
set_active_layerC
Set the active layer
Inputs: layerName (required).
set_document_grid_settingsB
Set comprehensive grid settings for the document
Inputs: baselineGrid, documentGrid, gridAlignment, baselineGridColor, +7 more.
set_document_layout_preferencesC
Set layout preferences for the document
Inputs: adjustLayout, adjustLayoutRules, adjustLayoutMargins, alignDistributeBounds, +3 more.
set_document_preferencesC
Set document preferences
Inputs: preferences (required), preferenceType (required).
set_group_propertiesC
Set properties of a group
Inputs: pageIndex (required), groupIndex (required), name, locked, +1 more.
set_page_backgroundA
Set page background by creating a full-page rectangle with specified color
Inputs: opacity, pageIndex, backgroundColor.
set_page_item_propertiesC
Set properties of a page item
Inputs: itemIndex (required), pageIndex (required), locked, visible, +3 more.
set_page_item_script_labelC
Overwrite the script label for targeted page items
Inputs: label (required), mode, objectId, itemIndex, +2 more.
set_page_propertiesC
Set properties for a page
Inputs: pageIndex (required), label, pageColor, layoutRule, +3 more.
set_spread_propertiesC
Set properties for a spread
Inputs: spreadIndex (required), name, spreadHidden, showMasterItems, +4 more.
snapshot_page_layoutB
Create a snapshot of the current page layout
Inputs: pageIndex (required).
ungroupC
Ungroup a group, releasing all its items
Inputs: pageIndex (required), groupIndex (required).
view_documentC
View document information and current state
Inputs: no named parameters.
zoom_to_pageC
Zoom to fit page in view
Inputs: pageIndex (required), zoomLevel.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 114 tools
Several tool pairs have overlapping boundaries: get_document_layers/list_layers, get_document_styles/list_styles, get_document_colors/list_color_swatches, and reframe_page/resize_page appear to target the same resource/action. The get_document_info/get_session_info/view_document trio also creates ambiguity, making it hard for an agent to reliably select the intended tool.
Most tools follow a consistent snake_case verb_noun pattern such as create_, get_, set_, delete_, and export_. Minor deviations exist though: equivalent listing operations are split between get_document_* and list_* names, and find_replace_text doesn't match the pattern of find_text_in_document.
With 114 tools, this server presents an extreme mismatch for a typical MCP surface, far exceeding the 50+ tool threshold. Even for a complex application like InDesign, the sheer number creates significant selection overhead and makes the toolset difficult for agents to navigate effectively.
The server covers a broad range of document, page, spread, item, and style operations, but lifecycle coverage is uneven. Colors, hyperlinks, sections, and styles can typically be created and queried but not updated or deleted, leaving clear dead ends in several workflows.
Maintenance
Related MCP Connectors
Give your AI agents a design superpower. Generate, edit, and publish publication-grade decks, reports, landing pages, resumes, and marketing visuals directly within your agent workflow. Delivering frontier-level design quality at 3× the speed and 53× lower cost -from conversational prompt to live link or vector PDF in minutes.
Convert, create and edit Word, PowerPoint, Excel and PDF documents from any AI agent.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Agent-Native design tool - create and edit visual designs with agent assistance
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables AI assistants to automate Adobe InDesign publishing workflows, including document creation, text formatting, image placement, PDF export, and more via 35+ professional tools.3660 npm61MIT
- AlicenseCqualityDmaintenanceEnables AI assistants to control Adobe InDesign for automated publishing workflows, document creation, and layout tasks across macOS and Windows.363MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to control Adobe InDesign on Windows via the Model Context Protocol, allowing document inspection, text and style editing, and exports to formats like PDF, images, and EPUB.1969 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to create and edit Adobe InDesign documents, including pages, text frames, styles, images, and previews.25 npmMIT