# InDesign MCP Server

Wires Adobe InDesign into your agent so it can build pages, apply styles and export PDFs from the chat.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 26
- Author: zachshallbetter
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/zachshallbetter/adobe-mcp/tree/HEAD/packages/indesign
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/mcp/indesign-mcp-server

## What it does

The server exposes InDesign as callable tools: documents, pages, text frames, tables, paragraph and character styles, swatches, layers, master spreads, PDF, EPUB and image export, plus multi-document books. There are 137 tools across seven areas, mapped to the panels and dialogs of InDesign.

On macOS it talks to InDesign through AppleScript (`osascript`); the app version is detected on its own or forced with `INDESIGN_APP_NAME`. Windows goes through COM automation in PowerShell. An optional UXP backend is available with `INDESIGN_BACKEND=uxp|auto`, using a local bridge and the plugin under `uxp/`. A `help` tool returns the parameters of any tool or category.

Run it where InDesign itself is installed — otherwise the server has nothing to attach to. Node.js 18+ and macOS or Windows are required. macOS will ask you to allow automation for your terminal or Node on first launch, and AppleScript stays silent until you grant it. File operations are limited to allowed directories; add more with `INDESIGN_ALLOWED_DIRS` (separator `:` on macOS, `;` on Windows).

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `INDESIGN_APP_NAME`, `INDESIGN_ALLOWED_DIRS`, `INDESIGN_BACKEND` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env INDESIGN_APP_NAME=<INDESIGN_APP_NAME> --env INDESIGN_ALLOWED_DIRS=<INDESIGN_ALLOWED_DIRS> --env INDESIGN_BACKEND=<INDESIGN_BACKEND> --transport stdio indesign -- npx -y adobe-mcp-indesign
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add indesign --env INDESIGN_APP_NAME=<INDESIGN_APP_NAME> --env INDESIGN_ALLOWED_DIRS=<INDESIGN_ALLOWED_DIRS> --env INDESIGN_BACKEND=<INDESIGN_BACKEND> -- npx -y adobe-mcp-indesign
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "indesign": {
            "command": "npx",
            "args": [
                "-y",
                "adobe-mcp-indesign"
            ],
            "env": {
                "INDESIGN_APP_NAME": "<INDESIGN_APP_NAME>",
                "INDESIGN_ALLOWED_DIRS": "<INDESIGN_ALLOWED_DIRS>",
                "INDESIGN_BACKEND": "<INDESIGN_BACKEND>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "indesign": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "adobe-mcp-indesign"
            ],
            "env": {
                "INDESIGN_APP_NAME": "<INDESIGN_APP_NAME>",
                "INDESIGN_ALLOWED_DIRS": "<INDESIGN_ALLOWED_DIRS>",
                "INDESIGN_BACKEND": "<INDESIGN_BACKEND>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e INDESIGN_APP_NAME=<INDESIGN_APP_NAME> -e INDESIGN_ALLOWED_DIRS=<INDESIGN_ALLOWED_DIRS> -e INDESIGN_BACKEND=<INDESIGN_BACKEND> indesign npx -y adobe-mcp-indesign
```
Replace <…> with your own values

## When to use it
- create a document at a set size with a title already placed
- apply brand paragraph and character styles to copy
- export a finished layout to PDF without touching dialogs
- build a book from several documents and sync it
- produce an EPUB or PNG straight from the layout

## Example prompts
- Create an A4 document and add a centered title
- Make a paragraph style `Heading` at 24 pt with center alignment
- Show me the parameters for the `create_text_frame` tool

## Similar
- [Next AI Draw.io](https://affpapa.org/en/nevibecode/mcp/next-ai-drawio.md) — MCP server · ★ 36398
- [tldraw](https://affpapa.org/en/nevibecode/mcp/tldraw.md) — MCP server · ★ 51091
- [Figma-Context-MCP](https://affpapa.org/en/nevibecode/mcp/figma-context-mcp.md) — MCP server · ★ 16062
- [Agent-Native Assets](https://affpapa.org/en/nevibecode/mcp/agent-native-assets.md) — MCP server · ★ 7506
- [Remove AI Watermarks](https://affpapa.org/en/nevibecode/mcp/remove-ai-watermarks.md) — MCP server · ★ 6114
- [Dembrandt](https://affpapa.org/en/nevibecode/mcp/dembrandt.md) — MCP server · ★ 3821

From the same set: [zachshallbetter/adobe-mcp](https://affpapa.org/en/nevibecode/by/zachshallbetter/adobe-mcp.md) — 2 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
