InDesign MCP Server
NPM · INDESIGN-MCP-SERVER
Drive Adobe InDesign from any MCP client: 135+ tools for layout, styles, books and PDF export.
Available components
Last scanned (30 minutes ago)
Scores higher than 45% of npm servers
Deprecated
This server is marked deprecated in the MCP registry.
The registry records this reason: Renamed to adobe-mcp-indesign.
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 39 of 121 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency16
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Maintenance check failed: the publisher has marked this version as deprecated on the registry, telling users to stop installing it. See how to fix → Fail
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability71
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 14090 tokens (~102/item across 137 items; 137 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
- Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 138 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +4
- Stability: unverified → 0.23 ▲ functional
- 16 Oct 26 −2
- Maintenance: pass → fail ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/indesign-mcp-server@2.3.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 121 packages
| Packages resolved | 121 |
|---|---|
| Stale | 39 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_document_to_book Add Document To Book ~53
Add an InDesign document to the end of a book and save the book
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
| documentPath | string | yes | Path to the document to add |
No output schema declared.
No examples provided.
add_item_to_group Add Item To Group ~123
Add a top-level page item to an existing group (the group is rebuilt: it keeps its name but gets a new ID and index)
| Name | Type | Req | Description |
|---|---|---|---|
| groupIndex | integer | yes | Index of the group to add the item to, as numbered by list_groups (its index in page.allPageItems) |
| itemIndex | integer | yes | Index of the page item to add to the group, in page.allPageItems as numbered by list_page_items (nested items included) |
| pageIndex | integer | yes | Index of the page containing the group and item (0-based) |
No output schema declared.
No examples provided.
add_page Add Page ~84
Add a page to the active document at the end, the beginning, or before/after a given page; returns the new page count
| Name | Type | Req | Description |
|---|---|---|---|
| position | string | – | Where to add the page: AT_END, AT_BEGINNING, or BEFORE/AFTER referencePage |
| referencePage | integer | – | 0-based reference page index (required for BEFORE/AFTER) |
No output schema declared.
No examples provided.
adjust_page_layout Adjust Page Layout ~197
Adjust a page's size and margins with InDesign's Adjust Layout (content is repositioned/scaled to follow). Bleed values are a document setting and are applied to the whole document. All values use the given units.
| Name | Type | Req | Description |
|---|---|---|---|
| bleedBottom | number | – | Bottom bleed, document-wide |
| bleedInside | number | – | Inside (left) bleed, document-wide |
| bleedOutside | number | – | Outside (right) bleed, document-wide |
| bleedTop | number | – | Top bleed, document-wide |
| bottomMargin | number | – | Bottom margin |
| height | number | – | New page height |
| leftMargin | number | – | Left margin |
| pageIndex | integer | yes | 0-based page index |
| rightMargin | number | – | Right margin |
| topMargin | number | – | Top margin |
| units | string | – | Units for all values below |
| width | number | – | New page width |
No output schema declared.
No examples provided.
apply_character_style Apply Character Style ~119
Apply a character style to all text in a text frame, or to a character range
| Name | Type | Req | Description |
|---|---|---|---|
| endIndex | integer | – | Last character index (inclusive); -1 applies to the whole frame |
| frameIndex | integer | – | Index in page.textFrames (top-level text frames only; not the list_page_items numbering) |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| startIndex | integer | – | First character index (with endIndex) |
| styleName | string | yes | Character style name |
No output schema declared.
No examples provided.
apply_color Apply Color ~179
Apply a swatch as fill or stroke to a page item, or to the text of a text frame
| Name | Type | Req | Description |
|---|---|---|---|
| colorName | string | yes | Color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| colorType | string | – | Apply the swatch to the fill or the stroke |
| itemIndex | integer | yes | Index within the targetType collection on the page (see targetType) |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| targetType | string | – | Collection itemIndex counts in: pageItem = page.allPageItems (the list_page_items numbering); text and textFrame = page.textFrames (text = the text inside the frame); rectangle, ellipse, polygon = pa… |
No output schema declared.
No examples provided.
apply_master_spread Apply Master Spread ~90
Apply a master spread to document pages. Use masterName "None" to remove the master.
| Name | Type | Req | Description |
|---|---|---|---|
| masterName | string | yes | Full master spread name (e.g. "A-Master"), or "None" |
| pageRange | string | – | 1-based page positions in document order: "all", "3", "1-5" or "1,3,7-9" |
No output schema declared.
No examples provided.
apply_object_style Apply Object Style ~121
Apply an object style to a page item
| Name | Type | Req | Description |
|---|---|---|---|
| clearOverrides | boolean | – | Clear local formatting overrides |
| itemIndex | integer | – | Index within the itemType collection on the page |
| itemType | string | – | Collection itemIndex counts in: page.rectangles, page.ovals, page.polygons, page.textFrames, or pageItem = page.allPageItems (the list_page_items numbering) |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| styleName | string | yes | Object style name |
No output schema declared.
No examples provided.
apply_paragraph_style Apply Paragraph Style ~78
Apply a paragraph style to all text in a text frame
| Name | Type | Req | Description |
|---|---|---|---|
| frameIndex | integer | yes | Index in page.textFrames (top-level text frames only; not the list_page_items numbering) |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| styleName | string | yes | Paragraph style name |
No output schema declared.
No examples provided.
cleanup_document Cleanup Document ~170
Clean up the document by removing unused paragraph/character styles, unused swatches, empty layers and/or hidden page items. Use dryRun to list what would be removed.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | Only report what would be removed |
| removeHiddenElements | boolean | – | Remove page items that are hidden (visible = false) (default false) |
| removeUnusedColors | boolean | – | Remove unused swatches (built-in [bracketed] swatches are kept) (default false) |
| removeUnusedLayers | boolean | – | Remove layers with no page items and no guides (the last layer is kept) (default false) |
| removeUnusedStyles | boolean | – | Remove paragraph and character styles not applied to any text (built-in [bracketed] styles are kept) (default false) |
No output schema declared.
No examples provided.
clear_session Clear Session ~19
Clear all session data including page dimensions and document information
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
close_document Close Document ~21
Close the active document WITHOUT saving (unsaved changes are discarded)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
create_book Create Book ~53
Create a new InDesign book file and leave it open (fails if a file already exists at the path)
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Path for the new book file (".indb" is appended if missing) |
No output schema declared.
No examples provided.
create_character_style Create Character Style ~149
Create a character style; only the attributes you pass are set
| Name | Type | Req | Description |
|---|---|---|---|
| bold | boolean | – | Set font style "Bold" ("Bold Italic" with italic) |
| fontName | string | – | Font as "Family\tStyle" (e.g. "Arial\tRegular", InDesign's Font.name) or a family name |
| fontSize | number | – | Font size in points |
| italic | boolean | – | Set font style "Italic" |
| name | string | yes | Style name |
| textColor | string | – | Text color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| underline | boolean | – | Underline text |
No output schema declared.
No examples provided.
create_color_swatch Create Color Swatch ~128
Create a color swatch from RGB values, stored as RGB or converted to CMYK
| Name | Type | Req | Description |
|---|---|---|---|
| blue | number | yes | Blue value (0-255) |
| colorSpace | string | – | Color space of the swatch (CMYK uses a simple, non-color-managed conversion) |
| colorType | string | – | PROCESS for CMYK/RGB process color, SPOT for a spot (ink) color |
| green | number | yes | Green value (0-255) |
| name | string | yes | Swatch name |
| red | number | yes | Red value (0-255) |
No output schema declared.
No examples provided.
create_document Create Document ~216
Create a new document and make it active. All measurements are in millimetres. Margins are applied to every page of the new document.
| Name | Type | Req | Description |
|---|---|---|---|
| bleedBottom | number | – | Bottom bleed in mm |
| bleedInside | number | – | Inside (left) bleed in mm |
| bleedOutside | number | – | Outside (right) bleed in mm |
| bleedTop | number | – | Top bleed in mm |
| facingPages | boolean | – | Enable facing pages |
| height | number | – | Page height in mm |
| marginBottom | number | – | Bottom margin in mm |
| marginLeft | number | – | Left (inside, for facing pages) margin in mm |
| marginRight | number | – | Right (outside, for facing pages) margin in mm |
| marginTop | number | – | Top margin in mm |
| pageOrientation | string | – | Page orientation; width and height are swapped if needed to match |
| pages | integer | – | Number of pages |
| width | number | – | Page width in mm |
No output schema declared.
No examples provided.
create_document_hyperlink Create Document Hyperlink ~146
Create a hyperlink on the first occurrence of sourceText in the document. The destination is a URL, a page, or the first occurrence of some other text (a text anchor).
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | – | For URL: the URL. For TEXT: existing text in the document to link to. Not used for PAGE. |
| linkType | string | – | Type of destination |
| name | string | – | Optional hyperlink name (must be unique in the document) |
| pageIndex | integer | – | Zero-based destination page index (required for PAGE links) |
| sourceText | string | yes | Existing text in the document to turn into a link (first occurrence, case-sensitive) |
No output schema declared.
No examples provided.
create_document_section Create Document Section ~122
Start a new section at a page (or update the section that already starts there) with its own page numbering
| Name | Type | Req | Description |
|---|---|---|---|
| includeSectionPrefix | boolean | – | Include the prefix when displaying page numbers |
| marker | string | – | Section marker text |
| numberingStyle | string | – | Page number style (PageNumberStyle) |
| sectionPrefix | string | – | Section prefix |
| startNumber | integer | – | Starting page number. Omit to continue numbering from the previous section. |
| startPage | integer | yes | Zero-based index of the page that starts the section |
No output schema declared.
No examples provided.
create_ellipse Create Ellipse ~177
Create an ellipse on the active page (or pageIndex)
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | string | – | Fill color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| height | number | – | Height in mm |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| strokeColor | string | – | Stroke color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| strokeWeight | number | – | Stroke weight in points (default 1 when strokeColor is given) |
| width | number | – | Width in mm |
| x | number | – | X position in mm from the page top-left; omitted values are placed on the page automatically |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
create_group Create Group ~44
Group the page items currently selected in InDesign (at least 2)
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | Index of the page where the group will be created (0-based) |
No output schema declared.
No examples provided.
create_group_from_items Create Group From Items ~62
Create a group from specific page items by their indices
| Name | Type | Req | Description |
|---|---|---|---|
| itemIndices | array | yes | Indices (from list_page_items) of top-level items to group together |
| pageIndex | integer | yes | Index of the page containing the items (0-based) |
No output schema declared.
No examples provided.
create_layer Create Layer ~92
Create a new layer in the active document (fails if a layer with that name exists)
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Layer color: a UIColors name (e.g. BLUE, LIGHT_BLUE, RED) or "R,G,B" with each value 0-255 |
| locked | boolean | – | Layer locked state |
| name | string | yes | Layer name |
| visible | boolean | – | Layer visibility |
No output schema declared.
No examples provided.
create_master_guides Create Master Guides ~195
Create row/column guides on every page of a master spread (MasterSpread.createGuides)
| Name | Type | Req | Description |
|---|---|---|---|
| columnGutter | number | – | Column gutter in mm |
| fitMargins | boolean | – | Divide the area inside the margins (true) or the whole page (false) |
| guideColor | string | – | Guide color: UI color name (e.g. "BLUE", "LIGHT_BLUE", "GRID_GREEN") or "r,g,b" (0-255) |
| layerName | string | – | Layer to create guides on (default: active layer) |
| masterName | string | yes | Full master spread name (e.g. "A-Master") |
| numberOfColumns | integer | – | Number of columns per page |
| numberOfRows | integer | – | Number of rows per page |
| removeExisting | boolean | – | Remove existing guides first |
| rowGutter | number | – | Row gutter in mm |
No output schema declared.
No examples provided.
create_master_rectangle Create Master Rectangle ~227
Create a rectangle on a page of a master spread. Position and size are in mm from that master page's top-left corner.
| Name | Type | Req | Description |
|---|---|---|---|
| cornerRadius | number | – | Rounded-corner radius in mm (0 = square corners) |
| fillColor | string | – | Fill: swatch name in the document (e.g. "Black", "Paper", "None") or "#RRGGBB" (default: document default) |
| height | number | yes | Height in mm |
| masterName | string | yes | Full master spread name (e.g. "A-Master") |
| masterPageIndex | integer | – | 0-based page within the master spread |
| strokeColor | string | – | Stroke: swatch name in the document (e.g. "Black", "Paper", "None") or "#RRGGBB" (default: document default) |
| strokeWeight | number | – | Stroke weight in points |
| width | number | yes | Width in mm |
| x | number | yes | X position in mm |
| y | number | yes | Y position in mm |
No output schema declared.
No examples provided.
create_master_spread Create Master Spread ~182
Create a new master spread. Its full name is namePrefix + "-" + baseName (e.g. "B-Chapter").
| Name | Type | Req | Description |
|---|---|---|---|
| baseName | string | – | Base name (overrides name) |
| name | string | yes | Master name; used as the base name unless baseName is given |
| namePrefix | string | – | Prefix shown on pages using this master (e.g. "B"); InDesign assigns one if omitted |
| pageColor | string | – | Pages-panel color: UI color name (e.g. "BLUE", "LIGHT_BLUE", "GRID_GREEN") or "r,g,b" (0-255), "USE_MASTER_COLOR" or "NOTHING" |
| pagesPerSpread | integer | – | Pages in the master spread (default: document setting) |
| showMasterItems | boolean | – | Show master items on document pages |
No output schema declared.
No examples provided.
create_master_text_frame Create Master Text Frame ~265
Create a text frame on a page of a master spread. Position and size are in mm from that master page's top-left corner.
| Name | Type | Req | Description |
|---|---|---|---|
| alignment | string | – | Paragraph alignment for the frame text (InDesign Justification; LEFT_JUSTIFIED = justified, last line left) |
| content | string | yes | Text content for the frame |
| fontName | string | – | Font as "Family\tStyle" (e.g. "Arial\tBold", InDesign's Font.name) or a family name |
| fontSize | number | – | Font size in points |
| height | number | – | Height in mm |
| isPrimaryTextFrame | boolean | – | Make this the master spread's primary text frame |
| masterName | string | yes | Full master spread name (e.g. "A-Master") |
| masterPageIndex | integer | – | 0-based page within the master spread (0 = left/first page) |
| textColor | string | – | Text color: swatch name in the document (e.g. "Black", "Paper", "None") or "#RRGGBB" |
| width | number | – | Width in mm |
| x | number | – | X position in mm |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
create_object_style Create Object Style ~149
Create an object style; only the attributes you pass are included in the style
| Name | Type | Req | Description |
|---|---|---|---|
| cornerRadius | number | – | Rounded corner radius in mm (0 = not included) |
| fillColor | string | – | Fill color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| name | string | yes | Object style name |
| opacity | number | – | Opacity percentage (100 = fully opaque) |
| strokeColor | string | – | Stroke color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| strokeWeight | number | – | Stroke weight in points (default 1 when strokeColor is given) |
No output schema declared.
No examples provided.
create_page_guides Create Page Guides ~197
Create row/column guides on one page (like Layout > Create Guides, limited to this page)
| Name | Type | Req | Description |
|---|---|---|---|
| columnGutter | number | – | Column gutter in mm |
| fitMargins | boolean | – | Divide the area inside the margins (true) or the whole page (false) |
| guideColor | string | – | Guide color: UI color name (e.g. "BLUE", "GRID_GREEN") or "r,g,b" (0-255) |
| layerName | string | – | Layer to create the guides on (default: active layer) |
| numberOfColumns | integer | – | Number of columns (2+ creates vertical guides) |
| numberOfRows | integer | – | Number of rows (2+ creates horizontal guides) |
| pageIndex | integer | yes | 0-based page index |
| removeExisting | boolean | – | Remove the page's existing guides first |
| rowGutter | number | – | Row gutter in mm |
No output schema declared.
No examples provided.
create_paragraph_style Create Paragraph Style ~169
Create a paragraph style; only the attributes you pass are set
| Name | Type | Req | Description |
|---|---|---|---|
| alignment | string | – | Paragraph alignment (InDesign Justification; LEFT_JUSTIFIED = justified, last line left) |
| fontName | string | – | Font as "Family\tStyle" (e.g. "Arial\tRegular", InDesign's Font.name) or a family name |
| fontSize | number | – | Font size in points |
| leading | number | – | Leading in points |
| name | string | yes | Style name |
| spaceAfter | number | – | Space after paragraph in points |
| spaceBefore | number | – | Space before paragraph in points |
| textColor | string | – | Text color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
No output schema declared.
No examples provided.
create_polygon Create Polygon ~187
Create a regular polygon on the active page (or pageIndex)
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | string | – | Fill color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| height | number | – | Height in mm |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| sides | integer | – | Number of sides |
| strokeColor | string | – | Stroke color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| strokeWeight | number | – | Stroke weight in points (default 1 when strokeColor is given) |
| width | number | – | Width in mm |
| x | number | – | X position in mm from the page top-left; omitted values are placed on the page automatically |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
create_rectangle Create Rectangle ~194
Create a rectangle on the active page (or pageIndex)
| Name | Type | Req | Description |
|---|---|---|---|
| cornerRadius | number | – | Rounded corner radius in mm (0 = square corners) |
| fillColor | string | – | Fill color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| height | number | – | Height in mm |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| strokeColor | string | – | Stroke color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| strokeWeight | number | – | Stroke weight in points (default 1 when strokeColor is given) |
| width | number | – | Width in mm |
| x | number | – | X position in mm from the page top-left; omitted values are placed on the page automatically |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
create_spread_guides Create Spread Guides ~247
Create row/column guides on every page of a spread (Spread.createGuides). Set numberOfRows and/or numberOfColumns above 0; with both 0 nothing is created (the result reports the guide count before and after).
| Name | Type | Req | Description |
|---|---|---|---|
| columnGutter | number | – | Column gutter in mm |
| fitMargins | boolean | – | If true, rows/columns divide the area inside the page margins; if false, the full page |
| guideColor | string | – | Guide color: a UIColors name (e.g. BLUE, LIGHT_BLUE, GRID_GREEN) or "R,G,B" with each value 0-255 |
| layerName | string | – | Name of an existing layer to create the guides on (default: active layer) |
| numberOfColumns | number | – | Number of columns to create on each page (0-100) |
| numberOfRows | number | – | Number of rows to create on each page (0-100) |
| removeExisting | boolean | – | Remove existing guides when creating the new ones |
| rowGutter | number | – | Row gutter in mm |
| spreadIndex | integer | yes | Spread index (0-based) |
No output schema declared.
No examples provided.
create_table Create Table ~159
Create a table in a new text frame on the active page (or pageIndex)
| Name | Type | Req | Description |
|---|---|---|---|
| columns | integer | yes | Number of columns |
| headerRows | integer | – | Number of header rows (must be less than rows; default 1 when rows > 1) |
| height | number | – | Text frame height in mm |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| rows | integer | yes | Total number of rows, including header rows |
| width | number | – | Frame and table width in mm |
| x | number | – | X position in mm from the page left edge; omitted values are placed automatically |
| y | number | – | Y position in mm from the page top edge |
No output schema declared.
No examples provided.
create_text_frame Create Text Frame ~271
Create a text frame on the active page (or pageIndex). Styles are applied first; explicit formatting overrides them.
| Name | Type | Req | Description |
|---|---|---|---|
| alignment | string | – | Paragraph alignment (InDesign Justification; LEFT_JUSTIFIED = justified, last line left) |
| characterStyle | string | – | Character style name to apply |
| content | string | yes | Text content for the frame |
| fontName | string | – | Font as "Family\tStyle" (e.g. "Arial\tRegular", InDesign's Font.name) or a family name (default: style/document default) |
| fontSize | number | – | Font size in points (default: style/document default) |
| height | number | – | Height in mm |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| paragraphStyle | string | – | Paragraph style name to apply |
| textColor | string | – | Text color (default: style/document default): swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
| width | number | – | Width in mm |
| x | number | – | X position in mm from the page left edge; omit position or size to have the frame placed automatically |
| y | number | – | Y position in mm from the page top edge |
No output schema declared.
No examples provided.
data_merge Data Merge ~202
Data merge: select a CSV or tab-delimited text data source for the active document and (optionally) merge records. The document must already contain data merge placeholders for merging to succeed.
| Name | Type | Req | Description |
|---|---|---|---|
| createNewDocument | boolean | – | Create a new document for the merged records |
| dataSource | string | yes | Absolute path to the data source file (.csv or tab-delimited .txt) |
| mergeRecords | boolean | – | Merge records after selecting the data source. If false, only selects the source and lists its fields. |
| recordNumber | integer | – | Record to merge when recordSelection is ONE_RECORD |
| recordRange | string | – | Record range when recordSelection is RANGE, e.g. "1-5,8" |
| recordSelection | string | – | Which records to merge |
| recordsPerPage | string | – | One record per page, or multiple records per page |
| removeBlankLines | boolean | – | Remove blank lines caused by empty fields |
No output schema declared.
No examples provided.
delete_all_page_layout_snapshots Delete All Page Layout Snapshots ~33
Delete all layout snapshots for a page
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based page index |
No output schema declared.
No examples provided.
delete_master_spread Delete Master Spread ~46
Delete a master spread (pages that used it are left with no master)
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Full master spread name to delete (e.g. "B-Master") |
No output schema declared.
No examples provided.
delete_page Delete Page ~39
Delete a page from the document (the only page cannot be deleted)
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based index of the page to delete |
No output schema declared.
No examples provided.
delete_page_item Delete Page Item ~74
Delete a page item (by index from list_page_items) from a page
| Name | Type | Req | Description |
|---|---|---|---|
| itemIndex | integer | yes | Index of the page item to delete, in page.allPageItems as numbered by list_page_items (nested items included) |
| pageIndex | integer | yes | Index of the page containing the item (0-based) |
No output schema declared.
No examples provided.
delete_page_layout_snapshot Delete Page Layout Snapshot ~36
Delete the page's layout snapshot for its current size and shape
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based page index |
No output schema declared.
No examples provided.
delete_spread Delete Spread ~40
Delete a spread and all its pages. The last remaining spread cannot be deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| spreadIndex | integer | yes | Spread index to delete (0-based) |
No output schema declared.
No examples provided.
detach_master_items Detach Master Items ~103
Detach master page items onto a document page: each master item is overridden onto the page and the copy is detached so it no longer follows the master. Without itemIndex, all master items shown on the page (and items already overridden there) are detached.
| Name | Type | Req | Description |
|---|---|---|---|
| itemIndex | integer | – | 0-based index into the page's master items (Page.masterPageItems); omit to detach all |
| pageIndex | integer | yes | 0-based document page index |
No output schema declared.
No examples provided.
duplicate_master_spread Duplicate Master Spread ~124
Duplicate a master spread; the copy gets newName as its base name (InDesign assigns a new prefix)
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Full name of the master spread to duplicate (e.g. "A-Master") |
| newName | string | yes | Base name for the duplicated master spread |
| position | string | – | Where to put the copy among the masters: AT_END, AT_BEGINNING, or BEFORE/AFTER the reference master |
| referenceMasterName | string | – | Full name of the reference master spread (required for BEFORE/AFTER) |
No output schema declared.
No examples provided.
duplicate_page Duplicate Page ~74
Duplicate a page and put the copy at the given position in the document
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based index of the page to duplicate |
| position | string | – | Where to put the copy |
| referencePageIndex | integer | – | 0-based reference page index (required for BEFORE/AFTER) |
No output schema declared.
No examples provided.
duplicate_page_item Duplicate Page Item ~126
Duplicate a page item on the same page, optionally placing the copy at x/y; returns the copy ID
| Name | Type | Req | Description |
|---|---|---|---|
| itemIndex | integer | yes | Index of the page item to duplicate, in page.allPageItems as numbered by list_page_items (nested items included) |
| pageIndex | integer | yes | Index of the page containing the item (0-based) |
| x | number | yes | X of the duplicate's top-left corner, in mm from the page left edge |
| y | number | yes | Y of the duplicate's top-left corner, in mm from the page top edge |
No output schema declared.
No examples provided.
duplicate_spread Duplicate Spread ~81
Duplicate a spread (Spread.duplicate) and place the copy at the given location in the document
| Name | Type | Req | Description |
|---|---|---|---|
| position | string | – | Where to put the copy (LocationOptions) |
| referenceSpreadIndex | integer | – | Reference spread index (0-based); required for BEFORE/AFTER |
| spreadIndex | integer | yes | Spread index to duplicate (0-based) |
No output schema declared.
No examples provided.
edit_text_frame Edit Text Frame ~186
Edit the content and/or formatting of an existing text frame
| Name | Type | Req | Description |
|---|---|---|---|
| alignment | string | – | Paragraph alignment for the whole frame (InDesign Justification; LEFT_JUSTIFIED = justified, last line left) |
| content | string | – | New text content (replaces existing text) |
| fontName | string | – | Font as "Family\tStyle" (e.g. "Arial\tRegular", InDesign's Font.name) or a family name |
| fontSize | number | – | Font size in points |
| frameIndex | integer | yes | Index in page.textFrames (top-level text frames only; not the list_page_items numbering) |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| textColor | string | – | Text color: swatch name (e.g. "Black", "Paper") or "#RRGGBB" |
No output schema declared.
No examples provided.
execute_indesign_code Execute InDesign Code ~30
Execute custom InDesign ExtendScript code
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | ExtendScript code to execute |
No output schema declared.
No examples provided.
export_book Export Book ~83
Export an entire book to a single file
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
| format | string | – | Export format |
| outputPath | string | yes | Path for the exported file |
| pdfPreset | string | – | PDF export preset name for format PDF (e.g. "[High Quality Print]"); default: current PDF export settings |
No output schema declared.
No examples provided.
export_document_xml Export Document XML ~61
Export the document XML structure (the Structure pane content) to an XML file
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path of the XML file to write |
| includeImages | boolean | – | Copy original images into an Images folder next to the XML file |
No output schema declared.
No examples provided.
How do I install the InDesign MCP Server server?
InDesign MCP Server runs locally as an npm package, launched with npx -y indesign-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · indesign-mcp-server
claude mcp add zachshallbetter-indesign-mcp-server -- npx -y indesign-mcp-server
What is the InDesign MCP Server server?
InDesign MCP Server is listed in the public MCP registry as io.github.zachshallbetter/indesign-mcp-server. Drive Adobe InDesign from any MCP client: 135+ tools for layout, styles, books and PDF export. This page covers its npm package (indesign-mcp-server).
Is the InDesign MCP Server server safe to use?
InDesign MCP Server scores 73 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the InDesign MCP Server server expose?
InDesign MCP Server exposes 137 tools: add_page, delete_page, duplicate_page, navigate_to_page, get_page_info, and 132 more. Their descriptions and schemas cost roughly 13,643 tokens of context every time the server is loaded.
Is the InDesign MCP Server server still maintained?
InDesign MCP Server is marked deprecated in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the InDesign MCP Server server under?
InDesign MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.