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 (2 hours 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 →
place_image Place Image ~213
Place an image file in a new frame on the active page (or pageIndex). Omit width and height to size the frame to the image.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Path to the image file |
| fitMode | string | – | InDesign fit option applied to the frame (PROPORTIONALLY and FILL_PROPORTIONALLY also center the content); NONE keeps the placed size |
| height | number | – | Frame height in mm |
| linkImage | boolean | – | Keep the image linked (false embeds it) |
| objectStyle | string | – | Object style to apply to the frame |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| scale | number | – | Image scale percentage (1-1000); used when fitMode is NONE or the frame is sized to the image |
| width | number | – | Frame width in mm |
| x | number | – | X position in mm |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
place_xml_on_page Place XML On Page ~108
Place an XML element (the first element whose tag matches xmlElementName) on a page. x/y are measured in mm from the page's top-left corner.
| Name | Type | Req | Description |
|---|---|---|---|
| autoflowing | boolean | – | Autoflow placed text |
| pageIndex | integer | yes | 0-based page index |
| x | number | – | X position in mm |
| xmlElementName | string | yes | Tag name of the XML element to place |
| y | number | – | Y position in mm |
No output schema declared.
No examples provided.
place_xml_on_spread Place XML On Spread ~155
Place an element of the document's XML structure on a spread (Spread.placeXML). The element is found by tag name, searching the structure depth-first from the root.
| Name | Type | Req | Description |
|---|---|---|---|
| autoflowing | boolean | – | Autoflow placed text |
| matchIndex | integer | – | Which element to use when several have this tag (0-based, document order) |
| spreadIndex | integer | yes | Spread index (0-based) |
| x | number | – | X of the place point in mm, measured from the ruler origin |
| xmlElementName | string | yes | Tag name (markup tag) of the XML element to place |
| y | number | – | Y of the place point in mm, measured from the ruler origin |
No output schema declared.
No examples provided.
populate_table Populate Table ~121
Fill table cells from a 2-D array. Tables are numbered across the text frames of the page; cells outside the table are skipped and counted.
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | Rows of cell values; null becomes an empty cell |
| pageIndex | integer | – | Page index (0-based); defaults to the active page |
| startColumn | integer | – | Starting column index |
| startRow | integer | – | Starting row index (header rows count) |
| tableIndex | integer | – | Index among the tables in page.textFrames, counted frame by frame |
No output schema declared.
No examples provided.
preflight_book Preflight Book ~92
Preflight a book and save the preflight report (PDF, or text if the path ends in .txt). The report path is returned.
| Name | Type | Req | Description |
|---|---|---|---|
| autoOpen | boolean | – | Automatically open the report |
| bookPath | string | yes | Path to the book file |
| outputPath | string | – | Path for the preflight report (default: <book name>-preflight.pdf in the system temp folder) |
No output schema declared.
No examples provided.
preflight_document Preflight Document ~122
Run a preflight check on the active document with a preflight profile and list the problems found (optionally saving a report)
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | integer | – | Maximum number of problems to list |
| profile | string | – | Preflight profile name, e.g. "[Basic]" (the built-in profile). Embedded document profiles are checked first, then application profiles. |
| reportPath | string | – | Optional absolute path to save the preflight report (.pdf or .txt) |
| timeoutSeconds | integer | – | Maximum seconds to wait for preflight to finish |
No output schema declared.
No examples provided.
print_book Print Book ~94
Print every document in a book with a printer preset, optionally showing the print dialog first
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
| printDialog | boolean | – | Show the print dialog and wait for the user (leave false for unattended use) |
| printerPreset | string | – | Printer preset name (e.g. "[Default]" or a saved preset), or "DEFAULT_VALUE" for the default preset |
No output schema declared.
No examples provided.
reframe_page Reframe Page ~123
Reframe a page: set its bounding box from two opposing corners, in mm in the given coordinate space
| Name | Type | Req | Description |
|---|---|---|---|
| coordinateSpace | string | – | Coordinate space of the corner coordinates; PAGE_COORDINATES unless you need another |
| pageIndex | integer | yes | 0-based page index |
| x1 | number | yes | Top-left X coordinate in mm |
| x2 | number | yes | Bottom-right X coordinate in mm |
| y1 | number | yes | Top-left Y coordinate in mm |
| y2 | number | yes | Bottom-right Y coordinate in mm |
No output schema declared.
No examples provided.
remove_item_from_group Remove Item From Group ~117
Remove a member from a group (the group is rebuilt with the remaining members, or dissolved if fewer than 2 remain)
| Name | Type | Req | Description |
|---|---|---|---|
| groupIndex | integer | yes | Index of the group to remove the item from, as numbered by list_groups (its index in page.allPageItems) |
| itemIndex | integer | yes | Index of the member within the group (group.pageItems), as listed by get_group_info; not the list_page_items numbering |
| pageIndex | integer | yes | Index of the page containing the group (0-based) |
No output schema declared.
No examples provided.
remove_master_override Remove Master Override ~84
Remove local overrides from master items on a document page, restoring the master version. Without itemIndex, all overrides on the page are removed.
| Name | Type | Req | Description |
|---|---|---|---|
| itemIndex | integer | – | 0-based index among the page's overridden master items (top-level page items first, then guides); omit to remove all |
| pageIndex | integer | yes | 0-based document page index |
No output schema declared.
No examples provided.
repaginate_book Repaginate Book ~35
Repaginate all documents in a book and save it
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
No output schema declared.
No examples provided.
resize_page Resize Page ~183
Resize a page (Page.resize). With REPLACING/ADDING, width and height are lengths in mm; with MULTIPLYING they are scale factors; with RESHAPING_* they are a width:height ratio.
| Name | Type | Req | Description |
|---|---|---|---|
| anchorPoint | string | – | Point of the page that stays fixed while it resizes |
| coordinateSpace | string | – | Coordinate space the size is measured in; PAGE_COORDINATES unless you need another |
| height | number | yes | Height value (mm, factor or ratio part depending on resizeMethod) |
| pageIndex | integer | yes | 0-based page index |
| resizeMethod | string | – | How width and height are applied: replace the size (default), multiply it, add to it, or reshape to a ratio |
| width | number | yes | Width value (mm, factor or ratio part depending on resizeMethod) |
No output schema declared.
No examples provided.
resize_page_item Resize Page Item ~106
Resize a page item to width x height mm around an anchor point
| Name | Type | Req | Description |
|---|---|---|---|
| anchorPoint | string | – | Anchor point for resizing |
| height | number | yes | New height in mm |
| itemIndex | integer | yes | Index of the page item to resize, in page.allPageItems as numbered by list_page_items (nested items included) |
| pageIndex | integer | yes | Index of the page containing the item (0-based) |
| width | number | yes | New width in mm |
No output schema declared.
No examples provided.
save_document Save Document ~71
Save the active document. With filePath, saves to that location (Save As); without it, saves in place (the document must have been saved before).
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | – | Absolute path to save to (e.g. /Users/me/Documents/file.indd). Omit to save in place. |
No output schema declared.
No examples provided.
save_document_to_cloud Save Document To Cloud ~85
Save the active document as an Adobe Creative Cloud document (Document.saveAsCloud / saveACopyCloud). Requires InDesign with cloud documents support and a signed-in Creative Cloud account.
| Name | Type | Req | Description |
|---|---|---|---|
| cloudName | string | yes | Name for the cloud document |
| mode | string | – | SAVE_A_COPY keeps the open document as is; SAVE_AS makes the open document the cloud document |
No output schema declared.
No examples provided.
select_page Select Page ~72
Select a page in the active document (for example before running a command that acts on the selection)
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based page index |
| selectionMode | string | – | REPLACE_WITH replaces the selection; ADD_TO / REMOVE_FROM change it; SET_KEY makes the page the key object |
No output schema declared.
No examples provided.
select_page_item Select Page Item ~88
Select a page item (by index from list_page_items) in the document window
| Name | Type | Req | Description |
|---|---|---|---|
| existingSelection | string | – | How to handle existing selection |
| itemIndex | integer | yes | Index of the page item to select, 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.
select_spread Select Spread ~85
Select a spread (Spread.select) and optionally make it the active spread in the layout window
| Name | Type | Req | Description |
|---|---|---|---|
| makeActive | boolean | – | Also make it the layout window's active spread (scrolls it into view) |
| selectionMode | string | – | How the selection relates to the existing selection (SelectionOptions) |
| spreadIndex | integer | yes | Spread index to select (0-based) |
No output schema declared.
No examples provided.
set_active_layer Set Active Layer ~33
Make an existing layer the active layer of the active document
| Name | Type | Req | Description |
|---|---|---|---|
| layerName | string | yes | Layer name to activate |
No output schema declared.
No examples provided.
set_book_properties Set Book Properties ~269
Set book options (only the ones given) and save the book
| Name | Type | Req | Description |
|---|---|---|---|
| automaticDocumentConversion | boolean | – | Enable automatic document conversion |
| automaticPagination | boolean | – | Enable automatic pagination |
| bookPath | string | yes | Path to the book file |
| insertBlankPage | boolean | – | Insert blank pages as necessary |
| mergeIdenticalLayers | boolean | – | Merge identical layers when exporting to PDF |
| synchronizeBulletNumberingList | boolean | – | Synchronize bullets and numbering |
| synchronizeCellStyle | boolean | – | Synchronize cell styles |
| synchronizeCharacterStyle | boolean | – | Synchronize character styles |
| synchronizeConditionalText | boolean | – | Synchronize conditional text |
| synchronizeCrossReferenceFormat | boolean | – | Synchronize cross reference formats |
| synchronizeMasterPage | boolean | – | Synchronize master pages |
| synchronizeObjectStyle | boolean | – | Synchronize object styles |
| synchronizeParagraphStyle | boolean | – | Synchronize paragraph styles |
| synchronizeSwatch | boolean | – | Synchronize swatches |
| synchronizeTableOfContentStyle | boolean | – | Synchronize table of content styles |
| synchronizeTableStyle | boolean | – | Synchronize table styles |
| synchronizeTextVariable | boolean | – | Synchronize text variables |
| synchronizeTrapStyle | boolean | – | Synchronize trap styles |
No output schema declared.
No examples provided.
set_document_grid_settings Set Document Grid Settings ~313
Set document grid and baseline grid settings (GridPreference). Pass only the properties to change. Measurements are millimetres.
| Name | Type | Req | Description |
|---|---|---|---|
| baselineColor | string | – | baselineColor (UIColors) |
| baselineDivision | number | – | baselineDivision. Millimetres (a string with units such as "12pt" or "0.5in" is also accepted) |
| baselineGridRelativeOption | string | – | baselineGridRelativeOption (BaselineGridRelativeOption) |
| baselineGridShown | boolean | – | baselineGridShown |
| baselineStart | number | – | baselineStart. Millimetres (a string with units such as "12pt" or "0.5in" is also accepted) |
| baselineViewThreshold | number | – | baselineViewThreshold |
| documentGridShown | boolean | – | documentGridShown |
| documentGridSnapto | boolean | – | documentGridSnapto |
| gridColor | string | – | gridColor (UIColors) |
| gridsInBack | boolean | – | gridsInBack |
| horizontalGridSubdivision | integer | – | horizontalGridSubdivision |
| horizontalGridlineDivision | number | – | horizontalGridlineDivision. Millimetres (a string with units such as "12pt" or "0.5in" is also accepted) |
| verticalGridSubdivision | integer | – | verticalGridSubdivision |
| verticalGridlineDivision | number | – | verticalGridlineDivision. Millimetres (a string with units such as "12pt" or "0.5in" is also accepted) |
No output schema declared.
No examples provided.
set_document_layout_preferences Set Document Layout Preferences ~102
Set Adjust Layout preferences (stored in the document) and Align & Distribute / Smart Guides preferences (application-wide in InDesign). Pass one or more groups with the properties to change.
| Name | Type | Req | Description |
|---|---|---|---|
| adjustLayout | object | – | Adjust Layout (document, AdjustLayoutPreference) |
| alignDistribute | object | – | Align & Distribute (application-wide, AlignDistributePreference) |
| smartGuides | object | – | Smart Guides (application-wide, SmartGuidePreference) |
No output schema declared.
No examples provided.
set_document_preferences Set Document Preferences ~120
Set document preferences. Pass one or more groups (general, margins, guides, text, grid) with the properties to change. Measurements are millimetres. Margin changes are applied to the document defaults and to every existing document and master page.
| Name | Type | Req | Description |
|---|---|---|---|
| general | object | – | Document setup (DocumentPreference) |
| grid | object | – | Grids (GridPreference) |
| guides | object | – | Ruler guides (GuidePreference) |
| margins | object | – | Margins and columns (MarginPreference) |
| text | object | – | Text (TextPreference) |
No output schema declared.
No examples provided.
set_group_properties Set Group Properties ~100
Set a group's name, visibility and locked state
| Name | Type | Req | Description |
|---|---|---|---|
| groupIndex | integer | yes | Index of the group to modify, as numbered by list_groups (its index in page.allPageItems) |
| locked | boolean | – | Whether the group is locked |
| name | string | – | Name for the group |
| pageIndex | integer | yes | Index of the page containing the group (0-based) |
| visible | boolean | – | Whether the group is visible |
No output schema declared.
No examples provided.
set_page_background Set Page Background ~105
Set a page background: adds a full-page rectangle filled with a swatch, sent to the back of its layer
| Name | Type | Req | Description |
|---|---|---|---|
| backgroundColor | string | – | Swatch name in the document (e.g. "Paper", "Black", a custom swatch); "White" falls back to "Paper" |
| opacity | number | – | Background opacity percentage (0-100) |
| pageIndex | integer | – | 0-based page index (default 0, the first page) |
No output schema declared.
No examples provided.
set_page_item_properties Set Page Item Properties ~163
Set fill, stroke, visibility and lock state of a page item (only the properties you pass are changed)
| Name | Type | Req | Description |
|---|---|---|---|
| fillColor | string | – | Fill swatch name (e.g. "Black", "None") or "#RRGGBB" |
| itemIndex | integer | yes | Index of the page item to modify, in page.allPageItems as numbered by list_page_items (nested items included) |
| locked | boolean | – | Whether the item is locked |
| pageIndex | integer | yes | Index of the page containing the item (0-based) |
| strokeColor | string | – | Stroke swatch name or "#RRGGBB" |
| strokeWeight | number | – | Stroke weight in points |
| visible | boolean | – | Whether the item is visible |
No output schema declared.
No examples provided.
set_page_properties Set Page Properties ~157
Set properties for a page (only the properties given are changed)
| Name | Type | Req | Description |
|---|---|---|---|
| appliedTrapPreset | string | – | Name of an existing trap preset to apply |
| label | string | – | Page label |
| layoutRule | string | – | Liquid layout rule (LayoutRuleOptions) |
| optionalPage | boolean | – | Optional page for HTML5 pagination |
| pageColor | string | – | Page color shown in the Pages panel: UI color name (e.g. "BLUE", "LIGHT_BLUE"), "r,g,b" (0-255), "USE_MASTER_COLOR" or "NOTHING" |
| pageIndex | integer | yes | 0-based page index |
| snapshotBlendingMode | string | – | Snapshot blending mode (SnapshotBlendingModes) |
No output schema declared.
No examples provided.
set_spread_properties Set Spread Properties ~208
Set writable properties of a spread. Only the properties you pass are changed; each is applied independently and any rejected value is reported.
| Name | Type | Req | Description |
|---|---|---|---|
| allowPageShuffle | boolean | – | If true, the spread holds at most two pages when pages are added; if false, pages can be added or moved into this existing spread |
| label | string | – | Script label (any string) |
| name | string | – | Spread name (InDesign treats this as an alias of the spread's label) |
| pageTransitionDirection | string | – | Page transition direction (PageTransitionDirectionOptions); must be one the chosen transition type supports |
| pageTransitionDuration | string | – | Page transition duration (PageTransitionDurationOptions) |
| pageTransitionType | string | – | Page transition type (PageTransitionTypeOptions), used in SWF/interactive PDF export |
| showMasterItems | boolean | – | Display master page items on the pages of this spread |
| spreadIndex | integer | yes | Spread index (0-based) |
No output schema declared.
No examples provided.
snapshot_page_layout Snapshot Page Layout ~38
Create a liquid-layout snapshot of the page layout for its current size and shape
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | 0-based page index |
No output schema declared.
No examples provided.
synchronize_book Synchronize Book ~47
Synchronize styles, swatches and other enabled options from the book's style source document to all documents, then save the book
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
No output schema declared.
No examples provided.
ungroup Ungroup ~65
Ungroup a group, releasing all its items
| Name | Type | Req | Description |
|---|---|---|---|
| groupIndex | integer | yes | Index of the group to ungroup, as numbered by list_groups (its index in page.allPageItems) |
| pageIndex | integer | yes | Index of the page containing the group (0-based) |
No output schema declared.
No examples provided.
update_all_cross_references Update All Cross References ~32
Update all cross references in a book
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
No output schema declared.
No examples provided.
update_all_numbers Update All Numbers ~39
Update all numbers (page numbers, chapter numbers, paragraph numbers) in a book
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
No output schema declared.
No examples provided.
update_chapter_and_paragraph_numbers Update Chapter And Paragraph Numbers ~35
Update chapter and paragraph numbers in a book
| Name | Type | Req | Description |
|---|---|---|---|
| bookPath | string | yes | Path to the book file |
No output schema declared.
No examples provided.
validate_document Validate Document ~145
Check the document for problems: missing/modified links, missing fonts, missing or low-resolution images, overset text and unused styles
| Name | Type | Req | Description |
|---|---|---|---|
| checkFonts | boolean | – | Report fonts that are not installed (missing, substituted, faux) |
| checkImages | boolean | – | Report placed graphics with missing/modified links and images below minImagePpi |
| checkLinks | boolean | – | Report links that are missing, out of date or inaccessible |
| checkOverset | boolean | – | Report stories with overset text |
| checkStyles | boolean | – | Report paragraph and character styles not applied to any text |
| minImagePpi | number | – | Minimum effective resolution for images |
No output schema declared.
No examples provided.
view_document View Document ~15
View document information and current state
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
zoom_to_page Zoom To Page ~70
Show a page in the document window: fit the page in the window, or zoom to a given percentage
| Name | Type | Req | Description |
|---|---|---|---|
| pageIndex | integer | yes | Zero-based page index to show |
| zoomLevel | number | – | Zoom percentage (5-4000). Omit to fit the page in the window. |
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.