
InDesign MCP Server
io.github.zachshallbetterPublished by GitHub account zachshallbetterv2.3.0Updated Nov 5, 2026
Drive Adobe InDesign from any MCP client: 135+ tools for layout, styles, books and PDF export.
Overview
Local MCP server that drives Adobe InDesign through ExtendScript, giving an assistant tools for documents, pages, text, styles, tables, books and PDF/EPUB…
- What you can do
- Create and edit InDesign documents and pages, including text frames and content
- Apply and manage paragraph, character and object styles, plus tables
- Work with books and export layouts to PDF and EPUB
- Inspect application status and run layout or work calls against the open app
- Optionally place Illustrator artwork and copy swatches when used with the suite server
- When to use it
- Use it when you want an assistant to automate InDesign layout work on your own machine — building or editing documents, applying styles, assembling books, or producing PDF and EPUB exports — rather than doing it by hand in the app.
- Requirements
- Runs as a local stdio process started by your MCP client; no hosted endpoint and no API key for the package itself. Needs Node.js 18+ (npx) and Adobe InDesign 2023 or later installed on the same machine, with the app open or launchable. macOS and Windows are supported. Optional environment variables include INDESIGN_ALLOWED_DIRS, INDESIGN_APP_NAME and INDESIGN_BACKEND.
Installation
In SourceWeft
- Open InDesign MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
adobe-mcp
MCP servers for Adobe applications. Install one application's server on its own, or the suite: one server for every application, with tools that work across them.
The InDesign server was published as indesign-mcp-server up to 2.3.0. It is
now adobe-mcp-indesign, with the same tools; replace the package name in your
client configuration.
Each server runs on the machine where the Adobe application is installed and talks to it through ExtendScript, the scripting interface the applications ship with. Premiere Pro has no outside scripting route, so its server talks to a UXP plugin inside Premiere Pro instead. macOS and Windows are supported.
The servers also support corresponding ArtCraft applications:
- PhotoCraft for Photoshop (
PHOTOCRAFT_CONTROL_PORT, default7878) - VectorCraft for Illustrator (
VECTORCRAFT_CONTROL_PORT, default7979) - DesignCraft for InDesign (
DESIGNCRAFT_CONTROL_PORT, default7979) - EffectCraft for After Effects (
EFFECTCRAFT_CONTROL_PORT, default9877) - FilmCraft for Premiere Pro (
FILMCRAFT_CONTROL_PORT, default9876)
When an ArtCraft application is running or explicitly configured via TARGET=craft or <APP>_TARGET=craft (e.g. PHOTOSHOP_TARGET=craft, DESIGNCRAFT_TARGET=craft), compatible tools route transparently to ArtCraft over its loopback JSON-lines control channel.
Requirements
- Node.js 18+ (LTS recommended).
npxcomes with it. - The Adobe application(s) you want to drive, installed on the same machine: InDesign, Illustrator, Photoshop, and/or After Effects 2023 or later, or Premiere Pro 25.6+ with its UXP plugin loaded (see packages/premiere).
- An MCP client (Claude Code, Warp, Cursor, Claude Desktop, or any client that
reads an
mcpServersblock).
Servers speak MCP over stdio. Your client starts the process; there is no hosted endpoint and no API key for the package itself. Tool calls that touch the application need that app open (or launchable) on the machine.
Install from npm
One application
Claude Code:
Any client that reads an mcpServers block:
Full suite
One process with every application's tools (prefixed indesign_…,
illustrator_…, and so on) plus cross-application tools when both sides are
loaded:
Optional global install (puts adobe-mcp-suite on your PATH):
Everything at once (macOS)
The creative-mcp installer finds the Adobe apps
and MCP clients on your Mac, installs these servers with Homebrew, registers the ones that match
your apps with each client and checks they answer. It shows the plan first and is safe to rerun:
Later, creative-mcp doctor checks the servers, the running apps and each client's registrations.
Homebrew or curl
On macOS or Linux, install with Homebrew from the Creative MCP tap. It installs the
suite and links every app server (adobe-mcp-indesign, adobe-mcp-illustrator,
adobe-mcp-photoshop, adobe-mcp-premiere, adobe-mcp-aftereffects) onto your PATH:
Formula/adobe-mcp-suite.rb in this repository is deprecated. If you installed it, switch with
brew uninstall adobe-mcp-suite && brew install zachshallbetter/tap/adobe-mcp.
Or use the installer script, which installs the latest npm release globally:
Both methods require Node.js 18 or later. The curl installer supports macOS and
Linux shells; Windows users can use npm install -g adobe-mcp-suite.
Then point the client at the binary instead of npx:
Marketplace listing: mcprush.com/zachshallbetter/adobe-mcp-suite.
Each package's README covers its tools, conventions and per-app configuration.
Usage
Choosing applications (suite only)
By default the suite loads every app. Restrict it with --apps or
ADOBE_MCP_APPS (comma-separated ids: indesign, illustrator, photoshop,
aftereffects, premiere):
Client config:
On Windows, separate allowed directories with ; instead of :.
What the model sees
- Single-app servers expose that app's tools under their original names
(for example
create_text_frame,export_pdf). - The suite prefixes every tool with the app (
indesign_create_text_frame,illustrator_create_rectangle). Names that already include the app keep it once (indesign_status). - Cross-application tools (suite, when both apps are loaded):
place_illustrator_artwork_in_indesign— place an artboard of the active Illustrator document on an InDesign page, linked to the.aifile.copy_swatches_illustrator_to_indesign— copy colour swatches with exact process/spot values.
Reconnect or start a new client session after changing MCP config so the tool list refreshes.
Environment variables
Common knobs (see each package README for the full set):
Smoke-check without an MCP client
The process waits on stdin for MCP JSON-RPC; it is not a conventional CLI with
--help output. To confirm a binary starts and lists tools, send an
initialize request then tools/list over stdio, or run the package tests
(they stub the Adobe apps and do not need them installed):
Real layout/work calls need the target Adobe application running on this machine.
Install and run from this repository
Use this when developing the servers or when you want the monorepo versions before they are published.
Run a server from source (stdio; suitable as a client command):
Point a client at the monorepo entry instead of npx:
How the repository is organised
The servers share their infrastructure through adobe-mcp-core, so a fix to
escaping, path checks, result handling or the script runner reaches every
server. What differs between applications stays in each package: its tools,
its instructions, and how the application is told to run a script. Each
application package exports a module (its tools, handlers, instructions and
script runner); its own server and the suite are both built from it, so a tool
is written once.
Development
Run one package's tests with npm test -w packages/illustrator. The static
audits run every tool against a stubbed application and check each generated
script against the application's scripting object model; they do not need
the applications installed.
See CONTRIBUTING.md for releasing and for each package's guide, and docs/handbook/ for the full handbook: architecture, per-application rules for writing tools, how work is planned from the capability atlas and landed, current status, and lessons learned.
Licence
MIT. See each package's LICENSE.
Source: README.md at commit c485a5b
Tools
0Version history
1- v2.3.0LatestOct 15, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts