Skip to main content
Glama
Tlechanteur

InDesign MCP Server

by Tlechanteur
README.md
# InDesign MCP Server β€” Cross-Platform (macOS & Windows)

A comprehensive **Model Context Protocol (MCP) server** for **Adobe InDesign automation** with **35+ professional tools**. This server enables AI assistants like Claude to directly control Adobe InDesign, automating complex publishing workflows, document creation, and professional layout tasks.

> **Cross-platform fork** of [lucdesign/indesign-mcp-server](https://github.com/lucdesign/indesign-mcp-server) (macOS-only, AppleScript). This fork adds a **native Windows transport** via COM/VBScript (`CreateObject("InDesign.Application")` + `DoScript`) and picks the right transport automatically from `process.platform`. All 36 tools are unchanged β€” the ExtendScript layer is identical on both platforms. See [WINDOWS.md](WINDOWS.md) for details of the port.

## πŸš€ Features

### πŸ“„ **Document Management**
- Create, open, save, and close documents with advanced options
- Support for all standard formats (A4, A5, Letter, Legal, Custom)
- Facing pages, bleeds, slugs, and margin configuration
- Multi-page document handling

### ✍️ **Text & Typography**
- Advanced text frame creation and editing
- Character and paragraph style management
- Find/replace with GREP support
- Professional typography controls (leading, tracking, optical margin alignment)

### 🎨 **Graphics & Layout**
- Image placement with multiple fit options
- Shape creation (rectangles, ellipses with styling)
- Layer management and organization
- Color swatch creation and management (CMYK, RGB, Spot colors)

### πŸ“Š **Tables & Data**
- Table creation and data population
- Support for headers and footers
- CSV data integration capabilities

### πŸ“€ **Export & Production**
- Professional PDF export with presets
- Multi-format image export (PNG, JPEG, TIFF)
- EPUB export for digital publishing
- Package for print production
- Preflight checking

### πŸ”§ **Automation & Scripting**
- Data merge operations
- Custom ExtendScript execution
- Batch processing capabilities
- Professional publishing workflows

## πŸ“‹ Prerequisites

- **Adobe InDesign** (tested on 2024–2026 releases)
- **macOS** (AppleScript transport) **or Windows** (COM/VBScript transport β€” this fork)
- **Node.js 18+**
- **MCP-compatible client** (Claude Desktop, Claude Code, Cursor…)

### Optional environment variables
- `INDESIGN_APP_NAME` (macOS) β€” application name for AppleScript, default `Adobe InDesign 2025`
- `INDESIGN_PROGID` (Windows) β€” COM ProgID, default `InDesign.Application` (version-independent; falls back through `InDesign.Application.2026/2025/2024`)

## πŸ› οΈ Installation

### 1. Clone the Repository
```bash
git clone https://github.com/Tlechanteur/indesign-mcp-server-windows.git
cd indesign-mcp-server-windows
```

### 2. Install Dependencies
```bash
npm install
```

### 3. Configure MCP Client

Add the server to your MCP client configuration (e.g., Claude Desktop):

**claude_desktop_config.json:**
```json
{
  "mcpServers": {
    "indesign": {
      "command": "node",
      "args": ["/path/to/indesign-mcp-server/index.js"],
      "env": {}
    }
  }
}
```

### 4. Start Adobe InDesign

Ensure Adobe InDesign is running before using the MCP server.

## 🎯 Quick Start

### Create a Professional Document
```javascript
// Create an A4 document with facing pages
create_document({
  preset: "A4",
  orientation: "Portrait", 
  pages: 4,
  facingPages: true,
  marginTop: 20,
  marginBottom: 20,
  marginLeft: 20,
  marginRight: 20
})
```

### Add Formatted Text
```javascript
// Create a text frame with professional typography
create_text_frame({
  content: "Professional Publishing with InDesign MCP",
  x: 20,
  y: 20,
  width: 170,
  height: 50,
  fontSize: 18,
  fontFamily: "Helvetica Neue",
  fontStyle: "Bold",
  alignment: "LEFT_ALIGN"
})
```

### Create and Apply Styles
```javascript
// Create a character style
create_character_style({
  name: "Emphasis",
  fontFamily: "Helvetica Neue",
  fontStyle: "Italic",
  textColor: "Red"
})

// Apply to specific text
find_replace_text({
  findText: "important",
  replaceText: "important",
  applyCharacterStyle: "Emphasis"
})
```

### Export Professional PDF
```javascript
export_pdf({
  filePath: "/path/to/output.pdf",
  preset: "HighQualityPrint",
  includeBleed: true,
  colorProfile: "ISO Coated v2"
})
```

## πŸ› οΈ Available Tools

### **Document Management (5 tools)**
- `get_document_info` - Document information and statistics
- `create_document` - Advanced document creation
- `open_document` - Open existing documents
- `save_document` - Save with optional new path
- `close_document` - Close with save options

### **Page Management (4 tools)**
- `add_page` - Add pages with position control
- `delete_page` - Remove pages safely
- `duplicate_page` - Copy pages with content
- `navigate_to_page` - Page navigation

### **Text Management (3 tools)**
- `create_text_frame` - Advanced text frame creation
- `edit_text_frame` - Modify existing frames
- `find_replace_text` - Search and replace with GREP

### **Graphics Management (3 tools)**
- `place_image` - Image placement with fit options
- `create_rectangle` - Rectangle creation with styling
- `create_ellipse` - Ellipse creation with styling

### **Style Management (4 tools)**
- `create_paragraph_style` - Paragraph style creation
- `create_character_style` - Character style creation
- `apply_paragraph_style` - Apply styles to text
- `list_styles` - List all available styles

### **Color Management (3 tools)**
- `create_color_swatch` - Create CMYK/RGB/Spot colors
- `list_color_swatches` - List available colors
- `apply_color` - Apply colors to objects

### **Table Management (2 tools)**
- `create_table` - Table creation with headers/footers
- `populate_table` - Fill tables with data

### **Layer Management (3 tools)**
- `create_layer` - Create new layers
- `set_active_layer` - Switch active layer
- `list_layers` - List all layers

### **Export & Production (4 tools)**
- `export_pdf` - Professional PDF export
- `export_images` - Multi-format image export
- `export_epub` - Digital publishing export
- `package_document` - Print production packaging

### **Automation & Utilities (4 tools)**
- `execute_indesign_code` - Custom ExtendScript execution
- `preflight_document` - Quality checking
- `view_document` - Document visualization
- `data_merge` - Automated data integration

## πŸ’‘ Use Cases

### **Automated Publishing**
- Generate newsletters, brochures, and reports from data
- Batch process multiple documents
- Consistent styling across document series

### **Data-Driven Documents**
- Mail merge for personalized materials
- Catalog generation from databases
- Financial reports with dynamic content

### **Professional Workflows**
- Template-based document creation
- Brand compliance automation
- Print production preparation

### **Educational Materials**
- Automated textbook layout
- Exercise sheet generation
- Multi-language document variants

## πŸ”§ Advanced Configuration

### Custom ExtendScript Integration
```javascript
execute_indesign_code({
  code: `
    // Custom InDesign scripting
    var doc = app.activeDocument;
    // Your custom automation logic here
  `
})
```

### Batch Processing Example
```javascript
// Process multiple files
const files = ["doc1.indd", "doc2.indd", "doc3.indd"];
for (const file of files) {
  await open_document({ filePath: file });
  await export_pdf({ 
    filePath: file.replace('.indd', '.pdf'),
    preset: 'HighQualityPrint' 
  });
  await close_document({ save: false });
}
```

## πŸ› Troubleshooting

### Common Issues

**"Adobe InDesign not found"**
- Ensure InDesign is installed and running
- macOS: check AppleScript permissions in System Preferences
- Windows: the COM bridge starts InDesign if needed, but launching it first is faster and more reliable. If you run several InDesign versions side by side, set `INDESIGN_PROGID` (e.g. `InDesign.Application.2026`)

**"Script execution failed"**
- Verify Adobe InDesign is the active application
- Check for document-specific errors in console

**"Tool not found"**
- Restart MCP client after configuration changes
- Verify server is running with `node index.js`

### Debug Mode
```bash
node --inspect index.js
```

## 🀝 Contributing

1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/AmazingFeature`)
3. **Commit** your changes (`git commit -m 'Add some AmazingFeature'`)
4. **Push** to the branch (`git push origin feature/AmazingFeature`)
5. **Open** a Pull Request

## πŸ“ License

This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgments

- **Anthropic** for the Model Context Protocol
- **Adobe** for InDesign ExtendScript API
- **MCP Community** for tools and inspiration

## πŸ“ž Support

- **Issues**: [GitHub Issues](https://github.com/Tlechanteur/indesign-mcp-server-windows/issues)
- **Original macOS project**: [lucdesign/indesign-mcp-server](https://github.com/lucdesign/indesign-mcp-server)

---

**Made with ❀️ for the publishing community**

*Transform your InDesign workflows with AI automation*

TDQS

C2.8/5.0

Scored across 36 tools

Disambiguation4/5

Most tools have distinct purposes, but 'get_document_info' and 'view_document' overlap significantly as both provide document information, causing potential confusion.

Naming Consistency4/5

Tools predominantly follow a verb_noun snake_case pattern, though 'data_merge' deviates (noun_verb) and 'find_replace_text' uses compound verbs, introducing minor inconsistency.

Tool Count5/5

With 36 tools covering a wide range of InDesign operations, the count is well-suited to the complexity of the domain without being excessive or insufficient.

Completeness4/5

The tool set covers most core workflows (document, pages, objects, styles, export), but lacks dedicated object editing tools beyond text frames; however, 'execute_indesign_code' can bridge gaps.

Maintenance

ActivityStale
ResponsivenessNo issues