illustrator-mcp-server 1.2.4 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.ja.md +527 -107
  2. package/README.md +512 -89
  3. package/dist/executor/jsx-runner.d.ts +1 -0
  4. package/dist/executor/jsx-runner.d.ts.map +1 -1
  5. package/dist/executor/jsx-runner.js +33 -19
  6. package/dist/executor/jsx-runner.js.map +1 -1
  7. package/dist/jsx/helpers/common.jsx +192 -7
  8. package/dist/prompts/print-preflight-workflow.d.ts +3 -0
  9. package/dist/prompts/print-preflight-workflow.d.ts.map +1 -0
  10. package/dist/prompts/print-preflight-workflow.js +45 -0
  11. package/dist/prompts/print-preflight-workflow.js.map +1 -0
  12. package/dist/prompts/quick-layout.d.ts +3 -0
  13. package/dist/prompts/quick-layout.d.ts.map +1 -0
  14. package/dist/prompts/quick-layout.js +42 -0
  15. package/dist/prompts/quick-layout.js.map +1 -0
  16. package/dist/prompts/registry.d.ts +3 -0
  17. package/dist/prompts/registry.d.ts.map +1 -0
  18. package/dist/prompts/registry.js +7 -0
  19. package/dist/prompts/registry.js.map +1 -0
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +3 -1
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/export/export-pdf.d.ts.map +1 -1
  24. package/dist/tools/export/export-pdf.js +48 -18
  25. package/dist/tools/export/export-pdf.js.map +1 -1
  26. package/dist/tools/export/export.d.ts.map +1 -1
  27. package/dist/tools/export/export.js +41 -49
  28. package/dist/tools/export/export.js.map +1 -1
  29. package/dist/tools/modify/align-objects.d.ts +3 -0
  30. package/dist/tools/modify/align-objects.d.ts.map +1 -0
  31. package/dist/tools/modify/align-objects.js +202 -0
  32. package/dist/tools/modify/align-objects.js.map +1 -0
  33. package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
  34. package/dist/tools/modify/apply-color-profile.js +16 -11
  35. package/dist/tools/modify/apply-color-profile.js.map +1 -1
  36. package/dist/tools/modify/apply-graphic-style.d.ts +3 -0
  37. package/dist/tools/modify/apply-graphic-style.d.ts.map +1 -0
  38. package/dist/tools/modify/apply-graphic-style.js +106 -0
  39. package/dist/tools/modify/apply-graphic-style.js.map +1 -0
  40. package/dist/tools/modify/apply-text-style.d.ts +3 -0
  41. package/dist/tools/modify/apply-text-style.d.ts.map +1 -0
  42. package/dist/tools/modify/apply-text-style.js +118 -0
  43. package/dist/tools/modify/apply-text-style.js.map +1 -0
  44. package/dist/tools/modify/close-document.d.ts.map +1 -1
  45. package/dist/tools/modify/close-document.js +9 -9
  46. package/dist/tools/modify/close-document.js.map +1 -1
  47. package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
  48. package/dist/tools/modify/convert-to-outlines.js +8 -30
  49. package/dist/tools/modify/convert-to-outlines.js.map +1 -1
  50. package/dist/tools/modify/create-document.d.ts.map +1 -1
  51. package/dist/tools/modify/create-document.js +8 -6
  52. package/dist/tools/modify/create-document.js.map +1 -1
  53. package/dist/tools/modify/create-ellipse.d.ts.map +1 -1
  54. package/dist/tools/modify/create-ellipse.js +16 -33
  55. package/dist/tools/modify/create-ellipse.js.map +1 -1
  56. package/dist/tools/modify/create-gradient.d.ts +3 -0
  57. package/dist/tools/modify/create-gradient.d.ts.map +1 -0
  58. package/dist/tools/modify/create-gradient.js +119 -0
  59. package/dist/tools/modify/create-gradient.js.map +1 -0
  60. package/dist/tools/modify/create-line.d.ts.map +1 -1
  61. package/dist/tools/modify/create-line.js +17 -37
  62. package/dist/tools/modify/create-line.js.map +1 -1
  63. package/dist/tools/modify/create-path-text.d.ts +3 -0
  64. package/dist/tools/modify/create-path-text.d.ts.map +1 -0
  65. package/dist/tools/modify/create-path-text.js +85 -0
  66. package/dist/tools/modify/create-path-text.js.map +1 -0
  67. package/dist/tools/modify/create-path.d.ts.map +1 -1
  68. package/dist/tools/modify/create-path.js +19 -39
  69. package/dist/tools/modify/create-path.js.map +1 -1
  70. package/dist/tools/modify/create-rectangle.d.ts.map +1 -1
  71. package/dist/tools/modify/create-rectangle.js +17 -33
  72. package/dist/tools/modify/create-rectangle.js.map +1 -1
  73. package/dist/tools/modify/create-text-frame.d.ts.map +1 -1
  74. package/dist/tools/modify/create-text-frame.js +28 -41
  75. package/dist/tools/modify/create-text-frame.js.map +1 -1
  76. package/dist/tools/modify/duplicate-objects.d.ts +3 -0
  77. package/dist/tools/modify/duplicate-objects.d.ts.map +1 -0
  78. package/dist/tools/modify/duplicate-objects.js +97 -0
  79. package/dist/tools/modify/duplicate-objects.js.map +1 -0
  80. package/dist/tools/modify/group-objects.d.ts +3 -0
  81. package/dist/tools/modify/group-objects.d.ts.map +1 -0
  82. package/dist/tools/modify/group-objects.js +80 -0
  83. package/dist/tools/modify/group-objects.js.map +1 -0
  84. package/dist/tools/modify/manage-artboards.d.ts +3 -0
  85. package/dist/tools/modify/manage-artboards.d.ts.map +1 -0
  86. package/dist/tools/modify/manage-artboards.js +152 -0
  87. package/dist/tools/modify/manage-artboards.js.map +1 -0
  88. package/dist/tools/modify/manage-datasets.d.ts +3 -0
  89. package/dist/tools/modify/manage-datasets.d.ts.map +1 -0
  90. package/dist/tools/modify/manage-datasets.js +345 -0
  91. package/dist/tools/modify/manage-datasets.js.map +1 -0
  92. package/dist/tools/modify/manage-layers.d.ts +3 -0
  93. package/dist/tools/modify/manage-layers.d.ts.map +1 -0
  94. package/dist/tools/modify/manage-layers.js +147 -0
  95. package/dist/tools/modify/manage-layers.js.map +1 -0
  96. package/dist/tools/modify/manage-linked-images.d.ts +3 -0
  97. package/dist/tools/modify/manage-linked-images.d.ts.map +1 -0
  98. package/dist/tools/modify/manage-linked-images.js +105 -0
  99. package/dist/tools/modify/manage-linked-images.js.map +1 -0
  100. package/dist/tools/modify/manage-swatches.d.ts +3 -0
  101. package/dist/tools/modify/manage-swatches.d.ts.map +1 -0
  102. package/dist/tools/modify/manage-swatches.js +78 -0
  103. package/dist/tools/modify/manage-swatches.js.map +1 -0
  104. package/dist/tools/modify/modify-object.d.ts.map +1 -1
  105. package/dist/tools/modify/modify-object.js +34 -49
  106. package/dist/tools/modify/modify-object.js.map +1 -1
  107. package/dist/tools/modify/move-to-layer.d.ts +3 -0
  108. package/dist/tools/modify/move-to-layer.d.ts.map +1 -0
  109. package/dist/tools/modify/move-to-layer.js +79 -0
  110. package/dist/tools/modify/move-to-layer.js.map +1 -0
  111. package/dist/tools/modify/open-document.d.ts +3 -0
  112. package/dist/tools/modify/open-document.d.ts.map +1 -0
  113. package/dist/tools/modify/open-document.js +74 -0
  114. package/dist/tools/modify/open-document.js.map +1 -0
  115. package/dist/tools/modify/place-color-chips.d.ts +3 -0
  116. package/dist/tools/modify/place-color-chips.d.ts.map +1 -0
  117. package/dist/tools/modify/place-color-chips.js +224 -0
  118. package/dist/tools/modify/place-color-chips.js.map +1 -0
  119. package/dist/tools/modify/place-image.d.ts.map +1 -1
  120. package/dist/tools/modify/place-image.js +28 -36
  121. package/dist/tools/modify/place-image.js.map +1 -1
  122. package/dist/tools/modify/place-style-guide.d.ts +3 -0
  123. package/dist/tools/modify/place-style-guide.d.ts.map +1 -0
  124. package/dist/tools/modify/place-style-guide.js +822 -0
  125. package/dist/tools/modify/place-style-guide.js.map +1 -0
  126. package/dist/tools/modify/place-symbol.d.ts +3 -0
  127. package/dist/tools/modify/place-symbol.d.ts.map +1 -0
  128. package/dist/tools/modify/place-symbol.js +96 -0
  129. package/dist/tools/modify/place-symbol.js.map +1 -0
  130. package/dist/tools/modify/replace-color.d.ts +3 -0
  131. package/dist/tools/modify/replace-color.d.ts.map +1 -0
  132. package/dist/tools/modify/replace-color.js +137 -0
  133. package/dist/tools/modify/replace-color.js.map +1 -0
  134. package/dist/tools/modify/resize-for-variation.d.ts +3 -0
  135. package/dist/tools/modify/resize-for-variation.d.ts.map +1 -0
  136. package/dist/tools/modify/resize-for-variation.js +177 -0
  137. package/dist/tools/modify/resize-for-variation.js.map +1 -0
  138. package/dist/tools/modify/save-document.d.ts +3 -0
  139. package/dist/tools/modify/save-document.d.ts.map +1 -0
  140. package/dist/tools/modify/save-document.js +63 -0
  141. package/dist/tools/modify/save-document.js.map +1 -0
  142. package/dist/tools/modify/select-objects.d.ts +3 -0
  143. package/dist/tools/modify/select-objects.d.ts.map +1 -0
  144. package/dist/tools/modify/select-objects.js +78 -0
  145. package/dist/tools/modify/select-objects.js.map +1 -0
  146. package/dist/tools/modify/set-z-order.d.ts +3 -0
  147. package/dist/tools/modify/set-z-order.d.ts.map +1 -0
  148. package/dist/tools/modify/set-z-order.js +61 -0
  149. package/dist/tools/modify/set-z-order.js.map +1 -0
  150. package/dist/tools/modify/shared.d.ts +49 -1
  151. package/dist/tools/modify/shared.d.ts.map +1 -1
  152. package/dist/tools/modify/shared.js +48 -4
  153. package/dist/tools/modify/shared.js.map +1 -1
  154. package/dist/tools/modify/undo.d.ts +3 -0
  155. package/dist/tools/modify/undo.d.ts.map +1 -0
  156. package/dist/tools/modify/undo.js +64 -0
  157. package/dist/tools/modify/undo.js.map +1 -0
  158. package/dist/tools/modify/ungroup-objects.d.ts +3 -0
  159. package/dist/tools/modify/ungroup-objects.d.ts.map +1 -0
  160. package/dist/tools/modify/ungroup-objects.js +72 -0
  161. package/dist/tools/modify/ungroup-objects.js.map +1 -0
  162. package/dist/tools/read/check-contrast.d.ts +3 -0
  163. package/dist/tools/read/check-contrast.d.ts.map +1 -0
  164. package/dist/tools/read/check-contrast.js +239 -0
  165. package/dist/tools/read/check-contrast.js.map +1 -0
  166. package/dist/tools/read/convert-coordinate.d.ts +3 -0
  167. package/dist/tools/read/convert-coordinate.d.ts.map +1 -0
  168. package/dist/tools/read/convert-coordinate.js +74 -0
  169. package/dist/tools/read/convert-coordinate.js.map +1 -0
  170. package/dist/tools/read/extract-design-tokens.d.ts +3 -0
  171. package/dist/tools/read/extract-design-tokens.d.ts.map +1 -0
  172. package/dist/tools/read/extract-design-tokens.js +280 -0
  173. package/dist/tools/read/extract-design-tokens.js.map +1 -0
  174. package/dist/tools/read/find-objects.d.ts.map +1 -1
  175. package/dist/tools/read/find-objects.js +16 -37
  176. package/dist/tools/read/find-objects.js.map +1 -1
  177. package/dist/tools/read/get-artboards.d.ts.map +1 -1
  178. package/dist/tools/read/get-artboards.js +15 -13
  179. package/dist/tools/read/get-artboards.js.map +1 -1
  180. package/dist/tools/read/get-colors.d.ts.map +1 -1
  181. package/dist/tools/read/get-colors.js +93 -15
  182. package/dist/tools/read/get-colors.js.map +1 -1
  183. package/dist/tools/read/get-document-info.d.ts.map +1 -1
  184. package/dist/tools/read/get-document-info.js +47 -19
  185. package/dist/tools/read/get-document-info.js.map +1 -1
  186. package/dist/tools/read/get-document-structure.d.ts.map +1 -1
  187. package/dist/tools/read/get-document-structure.js +16 -24
  188. package/dist/tools/read/get-document-structure.js.map +1 -1
  189. package/dist/tools/read/get-effects.d.ts.map +1 -1
  190. package/dist/tools/read/get-effects.js +32 -43
  191. package/dist/tools/read/get-effects.js.map +1 -1
  192. package/dist/tools/read/get-groups.d.ts.map +1 -1
  193. package/dist/tools/read/get-groups.js +22 -26
  194. package/dist/tools/read/get-groups.js.map +1 -1
  195. package/dist/tools/read/get-guidelines.d.ts.map +1 -1
  196. package/dist/tools/read/get-guidelines.js +13 -16
  197. package/dist/tools/read/get-guidelines.js.map +1 -1
  198. package/dist/tools/read/get-images.d.ts.map +1 -1
  199. package/dist/tools/read/get-images.js +43 -25
  200. package/dist/tools/read/get-images.js.map +1 -1
  201. package/dist/tools/read/get-layers.d.ts.map +1 -1
  202. package/dist/tools/read/get-layers.js +14 -15
  203. package/dist/tools/read/get-layers.js.map +1 -1
  204. package/dist/tools/read/get-overprint-info.d.ts.map +1 -1
  205. package/dist/tools/read/get-overprint-info.js +72 -63
  206. package/dist/tools/read/get-overprint-info.js.map +1 -1
  207. package/dist/tools/read/get-path-items.d.ts.map +1 -1
  208. package/dist/tools/read/get-path-items.js +26 -20
  209. package/dist/tools/read/get-path-items.js.map +1 -1
  210. package/dist/tools/read/get-selection.d.ts.map +1 -1
  211. package/dist/tools/read/get-selection.js +19 -33
  212. package/dist/tools/read/get-selection.js.map +1 -1
  213. package/dist/tools/read/get-separation-info.d.ts +3 -0
  214. package/dist/tools/read/get-separation-info.d.ts.map +1 -0
  215. package/dist/tools/read/get-separation-info.js +94 -0
  216. package/dist/tools/read/get-separation-info.js.map +1 -0
  217. package/dist/tools/read/get-symbols.d.ts.map +1 -1
  218. package/dist/tools/read/get-symbols.js +19 -23
  219. package/dist/tools/read/get-symbols.js.map +1 -1
  220. package/dist/tools/read/get-text-frame-detail.d.ts.map +1 -1
  221. package/dist/tools/read/get-text-frame-detail.js +270 -67
  222. package/dist/tools/read/get-text-frame-detail.js.map +1 -1
  223. package/dist/tools/read/list-fonts.d.ts +3 -0
  224. package/dist/tools/read/list-fonts.d.ts.map +1 -0
  225. package/dist/tools/read/list-fonts.js +78 -0
  226. package/dist/tools/read/list-fonts.js.map +1 -0
  227. package/dist/tools/read/list-text-frames.d.ts.map +1 -1
  228. package/dist/tools/read/list-text-frames.js +99 -36
  229. package/dist/tools/read/list-text-frames.js.map +1 -1
  230. package/dist/tools/registry.d.ts.map +1 -1
  231. package/dist/tools/registry.js +64 -0
  232. package/dist/tools/registry.js.map +1 -1
  233. package/dist/tools/session.d.ts +36 -0
  234. package/dist/tools/session.d.ts.map +1 -0
  235. package/dist/tools/session.js +246 -0
  236. package/dist/tools/session.js.map +1 -0
  237. package/dist/tools/utility/check-text-consistency.d.ts +3 -0
  238. package/dist/tools/utility/check-text-consistency.d.ts.map +1 -0
  239. package/dist/tools/utility/check-text-consistency.js +303 -0
  240. package/dist/tools/utility/check-text-consistency.js.map +1 -0
  241. package/dist/tools/utility/preflight-check.d.ts.map +1 -1
  242. package/dist/tools/utility/preflight-check.js +141 -43
  243. package/dist/tools/utility/preflight-check.js.map +1 -1
  244. package/dist/tools/utility/set-workflow.d.ts +3 -0
  245. package/dist/tools/utility/set-workflow.d.ts.map +1 -0
  246. package/dist/tools/utility/set-workflow.js +95 -0
  247. package/dist/tools/utility/set-workflow.js.map +1 -0
  248. package/dist/utils/image-header.d.ts.map +1 -1
  249. package/dist/utils/image-header.js +5 -1
  250. package/dist/utils/image-header.js.map +1 -1
  251. package/package.json +1 -1
package/README.md CHANGED
@@ -7,6 +7,7 @@
7
7
  [![Platform](https://img.shields.io/badge/Platform-macOS%20%7C%20Windows-lightgrey.svg)]()
8
8
  [![Illustrator](https://img.shields.io/badge/Illustrator-CC%202024%2B-orange.svg)](https://www.adobe.com/products/illustrator.html)
9
9
  [![MCP](https://img.shields.io/badge/MCP-Compatible-purple.svg)](https://modelcontextprotocol.io/)
10
+ [![Ko-fi](https://img.shields.io/badge/Ko--fi-FF5E5B?style=flat&logo=ko-fi&logoColor=white)](https://ko-fi.com/cyocun)
10
11
 
11
12
  An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for reading, manipulating, and exporting Adobe Illustrator design data.
12
13
 
@@ -16,9 +17,97 @@ Control Illustrator directly from AI assistants like Claude — extract design i
16
17
 
17
18
  ---
18
19
 
19
- ## Usage Examples
20
+ ## Quick Start
21
+
22
+ **Requirements:** macOS or Windows / Adobe Illustrator CC 2024+ / [Node.js 20+](https://nodejs.org/)
23
+
24
+ <details>
25
+ <summary><strong>How to install Node.js (first-time setup)</strong></summary>
26
+
27
+ Node.js is a runtime required to run this tool.
28
+ Skip this section if you already have it installed.
29
+
30
+ 1. Go to [nodejs.org](https://nodejs.org/)
31
+ 2. Click the **green "LTS" button** to download
32
+ 3. Open the downloaded file and follow the installer instructions
33
+
34
+ To verify the installation, open Terminal (macOS) or Command Prompt (Windows) and type:
35
+
36
+ ```bash
37
+ node -v
38
+ ```
39
+
40
+ If you see a version number like `v20.x.x`, you're all set.
41
+
42
+ </details>
43
+
44
+ ### Claude Code
45
+
46
+ ```bash
47
+ claude mcp add illustrator-mcp -- npx illustrator-mcp-server
48
+ ```
49
+
50
+ ### Claude Desktop
51
+
52
+ Open the config file and add the connection settings.
53
+
54
+ <details>
55
+ <summary><strong>Show step-by-step instructions</strong></summary>
56
+
57
+ #### 1. Open the config file
58
+
59
+ From the Claude Desktop menu bar:
60
+
61
+ **Claude** → **Settings...** → **Developer** (in the left sidebar) → Click the **Edit Config** button
62
+
63
+ The `claude_desktop_config.json` file will appear in Finder (macOS) or Explorer (Windows).
64
+ Open it with a text editor.
65
+
66
+ #### 2. Add the settings
67
+
68
+ If the file is empty or contains only `{}`, **replace everything** with the following (copy & paste):
69
+
70
+ ```json
71
+ {
72
+ "mcpServers": {
73
+ "illustrator": {
74
+ "command": "npx",
75
+ "args": ["illustrator-mcp-server"]
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ > If you already have other MCP servers configured, add the `"illustrator": { ... }` block inside the existing `"mcpServers": {` section. Don't forget the comma between entries.
82
+
83
+ ```json
84
+ "mcpServers": {
85
+ "other-server": {
86
+ ...other server settings...
87
+ },
88
+ "illustrator": {
89
+ "command": "npx",
90
+ "args": ["illustrator-mcp-server"]
91
+ }
92
+ }
93
+ ```
94
+
95
+ #### 3. Save and restart
96
+
97
+ 1. Save the file (⌘S / Ctrl+S) and close the text editor
98
+ 2. **Fully quit** Claude Desktop (⌘Q / Ctrl+Q) and reopen it
99
+ 3. Open **Claude** → **Settings...** → **Developer** — if the illustrator server appears, the connection is working
100
+
101
+ </details>
102
+
103
+ > **macOS:** On first run, allow automation access in System Settings > Privacy & Security > Automation.
104
+
105
+ > **Note:** Modify and export tools will bring Illustrator to the foreground during execution.
106
+
107
+ ---
108
+
109
+ ## What You Can Do
20
110
 
21
- **Extracting design data:**
22
111
  ```
23
112
  You: Show me all the text information in this document
24
113
  Claude: → list_text_frames → get_text_frame_detail
@@ -26,14 +115,6 @@ Claude: → list_text_frames → get_text_frame_detail
26
115
  The heading "My Design" uses Noto Sans JP Bold 48px, color #333333 ...
27
116
  ```
28
117
 
29
- **SVG export:**
30
- ```
31
- You: Export the "pc" artboard as SVG with outlined text
32
- Claude: → get_artboards → export
33
- Exported to /path/to/output.svg (text converted to outlines)
34
- ```
35
-
36
- **Pre-press preflight:**
37
118
  ```
38
119
  You: Run a pre-press preflight check
39
120
  Claude: → preflight_check
@@ -42,82 +123,391 @@ Claude: → preflight_check
42
123
  - Non-outlined fonts: 3 text frames
43
124
  ```
44
125
 
45
- **Object manipulation:**
46
126
  ```
47
- You: Create a red rectangle and place it in the top-left corner
48
- Claude: → create_rectangle
49
- Created a 200×100 red rectangle at (0, 0) (uuid: abc-123...)
127
+ You: Check text for inconsistencies
128
+ Claude: → check_text_consistency
129
+ 📝 Consistency Report:
130
+ ⚠ "Contact Us" vs "Contact us" — capitalization mismatch
131
+ ❌ "Lorem ipsum" (2 places) — placeholder text remaining
132
+ ```
133
+
134
+ ```
135
+ You: Create banner size variations from this A4 flyer
136
+ Claude: → get_document_info → resize_for_variation
137
+ Created 3 size variations:
138
+ - 728×90 / 300×250 / 160×600
50
139
  ```
51
140
 
52
141
  ---
53
142
 
54
- ## Features
143
+ ## Recipes
55
144
 
56
- - **26 tools** — 15 read / 8 modify / 2 export / 1 utility
57
- - **Web coordinate system** — Y-axis down, artboard-relative (same as CSS/SVG)
58
- - **UUID tracking** — Stable object identification across tool calls
145
+ ### Web Implementation
59
146
 
60
- ---
147
+ <details>
148
+ <summary><b>Extract colors and fonts for CSS</b></summary>
61
149
 
62
- ## Prerequisites
150
+ ```
151
+ You: Summarize the colors and typography in this design
63
152
 
64
- - **macOS** (osascript) or **Windows** (PowerShell COM automation — not yet tested on real hardware)
65
- - **Adobe Illustrator CC 2024+**
153
+ Claude: → get_colors list_text_frames get_text_frame_detail
66
154
 
67
- > **macOS:** On first run, allow automation access in System Settings > Privacy & Security > Automation.
155
+ Color Palette
156
+ - Primary: #1A73E8 (CMYK: 85,50,0,0)
157
+ - Secondary: #34A853
158
+ - Text: #202124
159
+ - Background: #FFFFFF
68
160
 
69
- > **Note:** Modify and export tools will bring Illustrator to the foreground during execution. Illustrator requires being the active application to process these operations.
161
+ Typography
162
+ - Headings: Noto Sans JP Bold / 32px
163
+ - Body: Noto Sans JP Regular / 16px / line-height: 1.75
164
+ - Captions: Noto Sans JP Medium / 12px
165
+ ```
70
166
 
71
- ---
167
+ </details>
72
168
 
73
- ## Setup
169
+ <details>
170
+ <summary><b>Export artboards as SVG / PNG</b></summary>
74
171
 
75
- ### Claude Code
172
+ ```
173
+ You: Export all artboards as SVG with outlined text
76
174
 
77
- ```bash
78
- claude mcp add illustrator-mcp -- npx illustrator-mcp-server
175
+ Claude: → get_artboards → convert_to_outlines → export (repeated)
176
+
177
+ Exported 4 artboards:
178
+ - /output/header.svg
179
+ - /output/hero.svg
180
+ - /output/feature.svg
181
+ - /output/footer.svg
79
182
  ```
80
183
 
81
- ### Claude Desktop
184
+ </details>
82
185
 
83
- Add to `claude_desktop_config.json`:
84
- - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
85
- - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
186
+ <details>
187
+ <summary><b>Inspect a specific object's styling</b></summary>
86
188
 
87
- ```json
88
- {
89
- "mcpServers": {
90
- "illustrator": {
91
- "command": "npx",
92
- "args": ["illustrator-mcp-server"]
93
- }
94
- }
95
- }
96
189
  ```
190
+ You: Tell me about the "CTA Button" object
97
191
 
98
- After saving, restart Claude Desktop. The MCP server indicator (hammer icon) should appear in the input area.
192
+ Claude: → find_objects (name: "CTA Button") get_path_items get_effects
99
193
 
100
- ### From source
194
+ CTA Button (uuid: abc-123)
195
+ - Size: 200×48px
196
+ - Corner radius: 24px
197
+ - Fill: #1A73E8
198
+ - Stroke: none
199
+ - Opacity: 100%
200
+ - Drop shadow: present (parameters not readable due to API limitation)
201
+ ```
202
+
203
+ </details>
204
+
205
+ ### Print & Pre-press
206
+
207
+ <details>
208
+ <summary><b>Check PDF/X-1a compliance before submission</b></summary>
101
209
 
102
- ```bash
103
- git clone https://github.com/ie3jp/illustrator-mcp-server.git
104
- cd illustrator-mcp-server
105
- npm install
106
- npm run build
107
- claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
108
210
  ```
211
+ You: Check if this document is PDF/X-1a compliant
109
212
 
110
- ### Verify
213
+ Claude: → preflight_check (target_pdf_profile: "x1a")
214
+
215
+ ❌ PDF/X-1a compliance errors:
216
+ - Transparency on 3 objects (X-1a prohibits transparency)
217
+ - RGB colors found in 2 places (X-1a requires CMYK/spot only)
218
+
219
+ ⚠ Warnings:
220
+ - 5 non-outlined fonts (embedding recommended)
221
+ - Image "photo_02.jpg" at 150dpi (300dpi recommended)
222
+ ```
223
+
224
+ </details>
225
+
226
+ <details>
227
+ <summary><b>Audit overprint settings to prevent print accidents</b></summary>
228
+
229
+ ```
230
+ You: Check overprint settings
231
+
232
+ Claude: → get_overprint_info
233
+
234
+ ■ 4 objects with overprint
235
+
236
+ ✅ Safe (K100 overprint — intentional):
237
+ - "Headline" text (K100, ink coverage 100%)
238
+ - "Rule line" path (K100, ink coverage 100%)
239
+
240
+ ⚠ Review needed (possibly accidental):
241
+ - "Background decoration" (C30 M80 Y0 K0, coverage 110%)
242
+ - "Rich black frame" (C40 M40 Y40 K100, coverage 320%)
243
+ → Rich black + overprint can cause unexpected color bleed
244
+ ```
245
+
246
+ </details>
247
+
248
+ <details>
249
+ <summary><b>Check color separations</b></summary>
250
+
251
+ ```
252
+ You: Show me the color separation info
253
+
254
+ Claude: → get_separation_info
255
+
256
+ ■ Separations (CMYK document)
257
+ - Cyan: 342 uses
258
+ - Magenta: 287 uses
259
+ - Yellow: 301 uses
260
+ - Black: 456 uses
261
+ - DIC 2585 (spot): 12 uses
262
+ → This will output as 5 plates.
263
+ ```
264
+
265
+ </details>
266
+
267
+ <details>
268
+ <summary><b>Export PDF with crop marks and bleed</b></summary>
269
+
270
+ ```
271
+ You: Export PDF with Japanese crop marks and 3mm bleed
272
+
273
+ Claude: → export_pdf (trim_marks: true, marks_style: "japanese", bleed: true)
274
+
275
+ Exported to /output/print_ready.pdf
276
+ - Japanese crop marks (0.125pt)
277
+ - 3mm bleed
278
+ - Registration marks auto-applied
279
+ ```
280
+
281
+ </details>
282
+
283
+ <details>
284
+ <summary><b>Check image quality for print</b></summary>
285
+
286
+ ```
287
+ You: Check placed image quality for print
288
+
289
+ Claude: → get_images (include_print_info: true)
290
+
291
+ ■ Image Quality Report:
292
+ ✅ hero.psd — CMYK, 350dpi, scale 98%
293
+ ⚠ icon_set.png — RGB (mismatch with CMYK document), 300dpi, scale 100%
294
+ ❌ photo_bg.jpg — CMYK, 72dpi, scale 400% (over-enlarged)
295
+ → Replace with a 300dpi+ image at actual size
296
+ ```
297
+
298
+ </details>
299
+
300
+ ### Text Proofing
301
+
302
+ <details>
303
+ <summary><b>Find placeholder text and notation inconsistencies</b></summary>
304
+
305
+ ```
306
+ You: Check text for inconsistencies
307
+
308
+ Claude: → check_text_consistency
309
+
310
+ 📝 Consistency Report:
311
+
312
+ ■ Notation variations
313
+ ⚠ "Contact Us" (2 places) vs "Contact us" (1 place)
314
+ ⚠ "e-mail" (1 place) vs "email" (3 places) vs "E-mail" (1 place)
315
+
316
+ ■ Possible outdated content
317
+ ❌ Header still says "2024" (all other instances are "2025")
318
+ ❌ Footer phone number differs from other pages
319
+
320
+ ■ Placeholder text
321
+ ❌ "Lorem ipsum" (2 places) — forgotten placeholder?
322
+ ❌ "Sample text" (1 place)
323
+ ```
324
+
325
+ </details>
326
+
327
+ ### Design Variations
328
+
329
+ <details>
330
+ <summary><b>Create multiple banner sizes from a single design</b></summary>
331
+
332
+ ```
333
+ You: Create 3 web banner sizes from this A4 flyer
334
+
335
+ Claude: → get_document_info → resize_for_variation (3 targets)
336
+
337
+ Created 3 variations:
338
+ - "Leaderboard" artboard (728×90pt, scaled to 11%)
339
+ - "Medium Rectangle" artboard (300×250pt, scaled to 30%)
340
+ - "Wide Skyscraper" artboard (160×600pt, scaled to 71%)
341
+
342
+ ⚠ Text reflow is not applied.
343
+ You may need to adjust text sizing and overflow manually.
344
+ ```
345
+
346
+ </details>
347
+
348
+ <details>
349
+ <summary><b>Build a layout with shapes and text</b></summary>
350
+
351
+ ```
352
+ You: Create a business card layout with company name, name, email, and phone
353
+
354
+ Claude: → create_document (91×55mm, CMYK)
355
+ → create_text_frame × 4
356
+ → create_rectangle (background)
357
+ → create_line (divider)
358
+
359
+ Business card layout created:
360
+ - Company: top center / Noto Sans JP Bold 9pt
361
+ - Name: center / Noto Sans JP Bold 14pt
362
+ - Email: bottom / Noto Sans JP Regular 7pt
363
+ - Phone: bottom / Noto Sans JP Regular 7pt
364
+ ```
365
+
366
+ </details>
367
+
368
+ ### Color Management
369
+
370
+ <details>
371
+ <summary><b>Diagnose color issues in a CMYK document</b></summary>
372
+
373
+ ```
374
+ You: Run a color diagnostic
375
+
376
+ Claude: → get_colors (include_diagnostics: true)
377
+
378
+ ■ Color Diagnostics (CMYK document)
379
+ ❌ RGB colors found: 3 fills / 1 stroke
380
+ ⚠ Gradient warning:
381
+ - "Rainbow gradient": stop #2 is RGB
382
+ ■ High ink coverage:
383
+ - C80 M70 Y70 K90 (total 310%) — may cause ink pooling
384
+ ```
385
+
386
+ </details>
387
+
388
+ ### Object Operations
389
+
390
+ <details>
391
+ <summary><b>Align and distribute multiple objects</b></summary>
392
+
393
+ ```
394
+ You: Align these 3 buttons to the left and distribute vertically
395
+
396
+ Claude: → find_objects → align_objects (alignment: "left", distribute: "vertical")
397
+
398
+ Aligned 3 objects: left-aligned + vertically distributed.
399
+ ```
400
+
401
+ </details>
402
+
403
+ <details>
404
+ <summary><b>Replace brand colors across the document</b></summary>
405
+
406
+ ```
407
+ You: Replace all red (C0 M100 Y100 K0) with the new brand blue (C80 M10 Y0 K0)
408
+
409
+ Claude: → replace_color (from → to)
410
+
411
+ Replaced 24 fills and 3 strokes.
412
+ ```
413
+
414
+ </details>
415
+
416
+ <details>
417
+ <summary><b>Place color chips outside the artboard</b></summary>
418
+
419
+ ```
420
+ You: Show all used colors as chips to the right of the artboard
421
+
422
+ Claude: → place_color_chips (position: "right")
423
+
424
+ Placed 12 color chips on "Color Chips" layer with CMYK labels.
425
+ ```
426
+
427
+ </details>
428
+
429
+ ### Accessibility
430
+
431
+ <details>
432
+ <summary><b>Check WCAG color contrast ratios</b></summary>
433
+
434
+ ```
435
+ You: Check text contrast ratios
436
+
437
+ Claude: → check_contrast (auto_detect: true)
438
+
439
+ ■ WCAG Contrast Report:
440
+ ❌ "Caption" on "light gray" — 2.8:1 (AA fail)
441
+ ⚠ "Subheading" on "white" — 4.2:1 (AA Large OK, AA Normal fail)
442
+ ✅ "Body text" on "white" — 12.1:1 (AAA pass)
443
+ ```
444
+
445
+ </details>
446
+
447
+ ### Design System
448
+
449
+ <details>
450
+ <summary><b>Extract design tokens from a comp</b></summary>
451
+
452
+ ```
453
+ You: Extract design tokens as CSS custom properties
454
+
455
+ Claude: → extract_design_tokens (format: "css")
456
+
457
+ :root {
458
+ --color-primary: #1A73E8;
459
+ --color-secondary: #34A853;
460
+ --font-heading-family: "NotoSansJP-Bold";
461
+ --font-heading-size: 32pt;
462
+ --spacing-8: 8pt;
463
+ --spacing-16: 16pt;
464
+ }
465
+ ```
466
+
467
+ </details>
468
+
469
+ ## MCP Prompts
470
+
471
+ Workflow templates that guide Claude through multi-step tasks. Available in the Claude Desktop prompt picker.
472
+
473
+ | Prompt | Description |
474
+ |--------|-------------|
475
+ | `quick-layout` | Paste text content and Claude arranges it on the artboard as headings, body, and captions |
476
+ | `print-preflight-workflow` | Comprehensive 7-step pre-press check (document → preflight → overprint → separations → images → colors → text) |
477
+
478
+ ---
479
+
480
+ ## Claude Code Skills
481
+
482
+ Add pre-built workflows as slash commands in Claude Code, combining multiple MCP tools into guided processes.
483
+
484
+ ### Pre-press Preflight Check (`/illustrator-preflight`)
485
+
486
+ Runs `preflight_check` + `get_overprint_info` + `check_text_consistency` in parallel, then merges results into a unified report grouped by severity (Critical / Warning / Info). Catches print-critical issues that are easy to miss manually.
487
+
488
+ **Install:**
111
489
 
112
490
  ```bash
113
- npx @modelcontextprotocol/inspector npx illustrator-mcp-server
491
+ /plugin install illustrator-preflight
114
492
  ```
115
493
 
494
+ **Usage:**
495
+
496
+ Type `/illustrator-preflight:illustrator-preflight` in Claude Code, or just ask "run a preflight check".
497
+
498
+ ---
499
+
500
+ ## Features
501
+
502
+ - **63 tools + 2 prompts** — 21 read / 37 modify / 2 export / 3 utility
503
+ - **Web coordinate system** — Y-axis down, artboard-relative (same as CSS/SVG)
504
+ - **UUID tracking** — Stable object identification across tool calls
505
+
116
506
  ---
117
507
 
118
508
  ## Tool Reference
119
509
 
120
- ### Read Tools (15)
510
+ ### Read Tools (21)
121
511
 
122
512
  <details>
123
513
  <summary>Click to expand</summary>
@@ -130,19 +520,25 @@ npx @modelcontextprotocol/inspector npx illustrator-mcp-server
130
520
  | `get_document_structure` | Full tree: layers → groups → objects in one call |
131
521
  | `list_text_frames` | List of text frames (font, size, style name) |
132
522
  | `get_text_frame_detail` | All attributes of a specific text frame (kerning, paragraph settings, etc.) |
133
- | `get_colors` | Color information in use (swatches, gradients, spot colors, etc.) |
523
+ | `get_colors` | Color information in use (swatches, gradients, spot colors). `include_diagnostics` for print analysis |
134
524
  | `get_path_items` | Path/shape data (fill, stroke, anchor points) |
135
525
  | `get_groups` | Groups, clipping masks, and compound path structure |
136
526
  | `get_effects` | Effects and appearance info (opacity, blend mode) |
137
- | `get_images` | Embedded/linked image info (resolution, broken link detection) |
527
+ | `get_images` | Embedded/linked image info (resolution, broken link detection). `include_print_info` for color space mismatch & scale factor |
138
528
  | `get_symbols` | Symbol definitions and instances |
139
529
  | `get_guidelines` | Guide information |
530
+ | `get_overprint_info` | Overprint settings + K100/rich black detection & intent classification |
531
+ | `get_separation_info` | Color separation info (CMYK process plates + spot color plates with usage counts) |
140
532
  | `get_selection` | Details of currently selected objects |
141
533
  | `find_objects` | Search by criteria (name, type, color, font, etc.) |
534
+ | `check_contrast` | WCAG color contrast ratio check (manual or auto-detect overlapping pairs) |
535
+ | `extract_design_tokens` | Extract design tokens as CSS custom properties, JSON, or Tailwind config |
536
+ | `list_fonts` | List fonts available in Illustrator (no document required) |
537
+ | `convert_coordinate` | Convert points between artboard and document coordinate systems |
142
538
 
143
539
  </details>
144
540
 
145
- ### Modify Tools (8)
541
+ ### Modify Tools (37)
146
542
 
147
543
  <details>
148
544
  <summary>Click to expand</summary>
@@ -154,9 +550,38 @@ npx @modelcontextprotocol/inspector npx illustrator-mcp-server
154
550
  | `create_line` | Create a line |
155
551
  | `create_text_frame` | Create a text frame (point or area type) |
156
552
  | `create_path` | Create a custom path (with Bezier handles) |
553
+ | `place_image` | Place an image file as linked or embedded |
157
554
  | `modify_object` | Modify properties of an existing object |
158
555
  | `convert_to_outlines` | Convert text to outlines |
159
- | `apply_color_profile` | Apply a color profile |
556
+ | `assign_color_profile` | Assign (tag) a color profile (does not convert color values) |
557
+ | `create_document` | Create a new document (size, color mode) |
558
+ | `close_document` | Close the active document |
559
+ | `resize_for_variation` | Create size variations from a source artboard (proportional scaling) |
560
+ | `align_objects` | Align and distribute multiple objects |
561
+ | `replace_color` | Find and replace colors across document (with tolerance) |
562
+ | `manage_layers` | Add, rename, show/hide, lock/unlock, reorder, or delete layers |
563
+ | `place_color_chips` | Extract unique colors and place color chip swatches outside artboard |
564
+ | `save_document` | Save or save-as the active document |
565
+ | `open_document` | Open a document from file path |
566
+ | `group_objects` | Group objects (supports clipping masks) |
567
+ | `ungroup_objects` | Ungroup a group, releasing children |
568
+ | `duplicate_objects` | Duplicate objects with optional offset |
569
+ | `set_z_order` | Change stacking order (front/back) |
570
+ | `move_to_layer` | Move objects to a different layer |
571
+ | `manage_artboards` | Add, remove, resize, rename, rearrange artboards |
572
+ | `manage_swatches` | Add, update, or delete swatches |
573
+ | `manage_linked_images` | Relink or embed placed images |
574
+ | `manage_datasets` | List/apply/create datasets, import/export variables |
575
+ | `apply_graphic_style` | Apply a graphic style to objects |
576
+ | `list_graphic_styles` | List all graphic styles in the document |
577
+ | `apply_text_style` | Apply character or paragraph style to text |
578
+ | `list_text_styles` | List all character and paragraph styles |
579
+ | `create_gradient` | Create gradients and apply to objects |
580
+ | `create_path_text` | Create text along a path |
581
+ | `place_symbol` | Place or replace symbol instances |
582
+ | `select_objects` | Select objects by UUID (multi-select supported) |
583
+ | `place_style_guide` | Place a visual style guide outside the artboard (colors, fonts, spacing, margins, guide gaps) |
584
+ | `undo` | Undo/redo operations (multi-step) |
160
585
 
161
586
  </details>
162
587
 
@@ -165,13 +590,15 @@ npx @modelcontextprotocol/inspector npx illustrator-mcp-server
165
590
  | Tool | Description |
166
591
  |---|---|
167
592
  | `export` | SVG / PNG / JPG export (by artboard, selection, or UUID) |
168
- | `export_pdf` | Print-ready PDF export (crop marks, bleed, downsampling) |
593
+ | `export_pdf` | Print-ready PDF export (crop marks, bleed, selective downsampling, output intent) |
169
594
 
170
- ### Utility (1)
595
+ ### Utility (3)
171
596
 
172
597
  | Tool | Description |
173
598
  |---|---|
174
- | `preflight_check` | Pre-press check (RGB mixing, broken links, low resolution, white overprint, etc.) |
599
+ | `preflight_check` | Pre-press check (RGB mixing, broken links, low resolution, white overprint, transparency+overprint interaction, PDF/X compliance, etc.) |
600
+ | `check_text_consistency` | Text consistency check (placeholder detection, notation variation patterns, full text listing for LLM analysis) |
601
+ | `set_workflow` | Set workflow mode (web/print) to configure default coordinate system |
175
602
 
176
603
  ---
177
604
 
@@ -195,7 +622,7 @@ flowchart LR
195
622
 
196
623
  ### Coordinate System
197
624
 
198
- Geometry-aware read and modify tools accept a `coordinate_system` parameter. Export and document-wide utility tools do not, because their behavior does not depend on coordinate conversion.
625
+ Geometry-aware read and modify tools accept a `coordinate_system` parameter. Export and document-wide utility tools do not.
199
626
 
200
627
  | Value | Origin | Y-axis | Use case |
201
628
  |---|---|---|---|
@@ -204,17 +631,33 @@ Geometry-aware read and modify tools accept a `coordinate_system` parameter. Exp
204
631
 
205
632
  ---
206
633
 
207
- ## Testing
634
+ ## Building from Source
635
+
636
+ ```bash
637
+ git clone https://github.com/ie3jp/illustrator-mcp-server.git
638
+ cd illustrator-mcp-server
639
+ npm install
640
+ npm run build
641
+ claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
642
+ ```
643
+
644
+ ### Verify
645
+
646
+ ```bash
647
+ npx @modelcontextprotocol/inspector npx illustrator-mcp-server
648
+ ```
649
+
650
+ ### Testing
208
651
 
209
652
  ```bash
210
653
  # Unit tests
211
654
  npm test
212
655
 
213
- # E2E smoke test (requires Illustrator running with a file open)
656
+ # E2E smoke test (requires Illustrator running)
214
657
  npx tsx test/e2e/smoke-test.ts
215
658
  ```
216
659
 
217
- The E2E test suite runs all 30 cases automatically (16 read + 4 export + 2 utility + 8 modify).
660
+ The E2E test creates a fresh document, places test objects, runs 106 test cases across 6 phases covering all registered tools, and cleans up automatically.
218
661
 
219
662
  ---
220
663
 
@@ -228,34 +671,14 @@ The E2E test suite runs all 30 cases automatically (16 read + 4 export + 2 utili
228
671
  | Bleed settings | Not accessible via the ExtendScript API (undocumented) |
229
672
  | WebP export | Not supported — ExportType does not include WebP in ExtendScript |
230
673
  | Japanese crop marks | `PageMarksTypes.Japanese` may not be applied correctly in PDF export |
674
+ | Font embedding control | PDF font embedding mode (full/subset) is not exposed in the API. Use PDF presets instead |
675
+ | Size variations | No text reflow. Proportional placement only (not smart layout) |
231
676
 
232
677
  ---
233
678
 
234
- ## Project Structure
235
-
236
- ```
237
- illustrator-mcp-server/
238
- ├── src/
239
- │ ├── index.ts # Entry point
240
- │ ├── server.ts # MCP server
241
- │ ├── executor/
242
- │ │ ├── jsx-runner.ts # Transport selection + concurrency control
243
- │ │ └── file-transport.ts # Temp file management (macOS/Windows)
244
- │ ├── tools/
245
- │ │ ├── registry.ts # Tool registration
246
- │ │ ├── read/ # 15 read tools
247
- │ │ ├── modify/ # 8 modify tools
248
- │ │ ├── export/ # 2 export tools
249
- │ │ └── utility/ # 1 utility tool
250
- │ └── jsx/
251
- │ └── helpers/
252
- │ └── common.jsx # ExtendScript common helpers
253
- ├── test/
254
- │ ├── unit/ # Unit tests
255
- │ └── e2e/
256
- │ └── smoke-test.ts # E2E smoke test
257
- └── docs/ # Design documents
258
- ```
679
+ ## Support
680
+
681
+ Developing and maintaining this tool takes time and resources. If it helps your workflow, your support means a lot — [buy me a coffee ☕](https://ko-fi.com/cyocun)
259
682
 
260
683
  ---
261
684