illustrator-mcp-server 1.3.2 → 1.5.0

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 (194) hide show
  1. package/README.de.md +539 -0
  2. package/README.es.md +539 -0
  3. package/README.fr.md +539 -0
  4. package/README.ja.md +120 -10
  5. package/README.ko.md +539 -0
  6. package/README.md +119 -10
  7. package/README.pt-BR.md +539 -0
  8. package/README.zh-CN.md +539 -0
  9. package/dist/bundle.cjs +621 -328
  10. package/dist/executor/file-transport.d.ts.map +1 -1
  11. package/dist/executor/file-transport.js +11 -1
  12. package/dist/executor/file-transport.js.map +1 -1
  13. package/dist/jsx/helpers/common.jsx +63 -6
  14. package/dist/tools/export/export-pdf.d.ts.map +1 -1
  15. package/dist/tools/export/export-pdf.js +2 -1
  16. package/dist/tools/export/export-pdf.js.map +1 -1
  17. package/dist/tools/export/export.d.ts.map +1 -1
  18. package/dist/tools/export/export.js +54 -3
  19. package/dist/tools/export/export.js.map +1 -1
  20. package/dist/tools/modify/align-objects.d.ts.map +1 -1
  21. package/dist/tools/modify/align-objects.js +4 -5
  22. package/dist/tools/modify/align-objects.js.map +1 -1
  23. package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
  24. package/dist/tools/modify/apply-color-profile.js +2 -1
  25. package/dist/tools/modify/apply-color-profile.js.map +1 -1
  26. package/dist/tools/modify/apply-graphic-style.d.ts.map +1 -1
  27. package/dist/tools/modify/apply-graphic-style.js +3 -2
  28. package/dist/tools/modify/apply-graphic-style.js.map +1 -1
  29. package/dist/tools/modify/apply-text-style.d.ts.map +1 -1
  30. package/dist/tools/modify/apply-text-style.js +3 -2
  31. package/dist/tools/modify/apply-text-style.js.map +1 -1
  32. package/dist/tools/modify/close-document.d.ts.map +1 -1
  33. package/dist/tools/modify/close-document.js +2 -1
  34. package/dist/tools/modify/close-document.js.map +1 -1
  35. package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
  36. package/dist/tools/modify/convert-to-outlines.js +2 -1
  37. package/dist/tools/modify/convert-to-outlines.js.map +1 -1
  38. package/dist/tools/modify/create-crop-marks.d.ts.map +1 -1
  39. package/dist/tools/modify/create-crop-marks.js +34 -3
  40. package/dist/tools/modify/create-crop-marks.js.map +1 -1
  41. package/dist/tools/modify/create-document.d.ts.map +1 -1
  42. package/dist/tools/modify/create-document.js +2 -1
  43. package/dist/tools/modify/create-document.js.map +1 -1
  44. package/dist/tools/modify/create-ellipse.js +1 -1
  45. package/dist/tools/modify/create-gradient.d.ts.map +1 -1
  46. package/dist/tools/modify/create-gradient.js +2 -1
  47. package/dist/tools/modify/create-gradient.js.map +1 -1
  48. package/dist/tools/modify/create-line.js +1 -1
  49. package/dist/tools/modify/create-path-text.d.ts.map +1 -1
  50. package/dist/tools/modify/create-path-text.js +2 -1
  51. package/dist/tools/modify/create-path-text.js.map +1 -1
  52. package/dist/tools/modify/create-path.js +1 -1
  53. package/dist/tools/modify/create-rectangle.js +1 -1
  54. package/dist/tools/modify/create-text-frame.d.ts.map +1 -1
  55. package/dist/tools/modify/create-text-frame.js +4 -6
  56. package/dist/tools/modify/create-text-frame.js.map +1 -1
  57. package/dist/tools/modify/duplicate-objects.d.ts.map +1 -1
  58. package/dist/tools/modify/duplicate-objects.js +17 -3
  59. package/dist/tools/modify/duplicate-objects.js.map +1 -1
  60. package/dist/tools/modify/group-objects.d.ts.map +1 -1
  61. package/dist/tools/modify/group-objects.js +2 -1
  62. package/dist/tools/modify/group-objects.js.map +1 -1
  63. package/dist/tools/modify/import-svg-as-editable.d.ts +3 -0
  64. package/dist/tools/modify/import-svg-as-editable.d.ts.map +1 -0
  65. package/dist/tools/modify/import-svg-as-editable.js +247 -0
  66. package/dist/tools/modify/import-svg-as-editable.js.map +1 -0
  67. package/dist/tools/modify/manage-artboards.d.ts.map +1 -1
  68. package/dist/tools/modify/manage-artboards.js +9 -2
  69. package/dist/tools/modify/manage-artboards.js.map +1 -1
  70. package/dist/tools/modify/manage-datasets.d.ts.map +1 -1
  71. package/dist/tools/modify/manage-datasets.js +2 -1
  72. package/dist/tools/modify/manage-datasets.js.map +1 -1
  73. package/dist/tools/modify/manage-layers.d.ts.map +1 -1
  74. package/dist/tools/modify/manage-layers.js +2 -1
  75. package/dist/tools/modify/manage-layers.js.map +1 -1
  76. package/dist/tools/modify/manage-linked-images.d.ts.map +1 -1
  77. package/dist/tools/modify/manage-linked-images.js +2 -1
  78. package/dist/tools/modify/manage-linked-images.js.map +1 -1
  79. package/dist/tools/modify/manage-swatches.d.ts.map +1 -1
  80. package/dist/tools/modify/manage-swatches.js +2 -1
  81. package/dist/tools/modify/manage-swatches.js.map +1 -1
  82. package/dist/tools/modify/modify-object.d.ts.map +1 -1
  83. package/dist/tools/modify/modify-object.js +22 -17
  84. package/dist/tools/modify/modify-object.js.map +1 -1
  85. package/dist/tools/modify/move-to-layer.d.ts.map +1 -1
  86. package/dist/tools/modify/move-to-layer.js +2 -1
  87. package/dist/tools/modify/move-to-layer.js.map +1 -1
  88. package/dist/tools/modify/open-document.d.ts.map +1 -1
  89. package/dist/tools/modify/open-document.js +2 -1
  90. package/dist/tools/modify/open-document.js.map +1 -1
  91. package/dist/tools/modify/place-color-chips.d.ts.map +1 -1
  92. package/dist/tools/modify/place-color-chips.js +4 -5
  93. package/dist/tools/modify/place-color-chips.js.map +1 -1
  94. package/dist/tools/modify/place-image.d.ts.map +1 -1
  95. package/dist/tools/modify/place-image.js +22 -8
  96. package/dist/tools/modify/place-image.js.map +1 -1
  97. package/dist/tools/modify/place-style-guide.d.ts.map +1 -1
  98. package/dist/tools/modify/place-style-guide.js +4 -5
  99. package/dist/tools/modify/place-style-guide.js.map +1 -1
  100. package/dist/tools/modify/place-symbol.d.ts.map +1 -1
  101. package/dist/tools/modify/place-symbol.js +2 -1
  102. package/dist/tools/modify/place-symbol.js.map +1 -1
  103. package/dist/tools/modify/replace-color.d.ts.map +1 -1
  104. package/dist/tools/modify/replace-color.js +2 -1
  105. package/dist/tools/modify/replace-color.js.map +1 -1
  106. package/dist/tools/modify/resize-for-variation.d.ts.map +1 -1
  107. package/dist/tools/modify/resize-for-variation.js +4 -5
  108. package/dist/tools/modify/resize-for-variation.js.map +1 -1
  109. package/dist/tools/modify/save-document.d.ts.map +1 -1
  110. package/dist/tools/modify/save-document.js +2 -1
  111. package/dist/tools/modify/save-document.js.map +1 -1
  112. package/dist/tools/modify/select-objects.d.ts.map +1 -1
  113. package/dist/tools/modify/select-objects.js +2 -1
  114. package/dist/tools/modify/select-objects.js.map +1 -1
  115. package/dist/tools/modify/set-z-order.d.ts.map +1 -1
  116. package/dist/tools/modify/set-z-order.js +2 -1
  117. package/dist/tools/modify/set-z-order.js.map +1 -1
  118. package/dist/tools/modify/undo.d.ts.map +1 -1
  119. package/dist/tools/modify/undo.js +2 -1
  120. package/dist/tools/modify/undo.js.map +1 -1
  121. package/dist/tools/modify/ungroup-objects.d.ts.map +1 -1
  122. package/dist/tools/modify/ungroup-objects.js +2 -1
  123. package/dist/tools/modify/ungroup-objects.js.map +1 -1
  124. package/dist/tools/read/check-contrast.d.ts.map +1 -1
  125. package/dist/tools/read/check-contrast.js +14 -27
  126. package/dist/tools/read/check-contrast.js.map +1 -1
  127. package/dist/tools/read/convert-coordinate.d.ts.map +1 -1
  128. package/dist/tools/read/convert-coordinate.js +2 -1
  129. package/dist/tools/read/convert-coordinate.js.map +1 -1
  130. package/dist/tools/read/extract-design-tokens.d.ts.map +1 -1
  131. package/dist/tools/read/extract-design-tokens.js +2 -1
  132. package/dist/tools/read/extract-design-tokens.js.map +1 -1
  133. package/dist/tools/read/find-objects.d.ts.map +1 -1
  134. package/dist/tools/read/find-objects.js +3 -7
  135. package/dist/tools/read/find-objects.js.map +1 -1
  136. package/dist/tools/read/get-artboards.js +1 -1
  137. package/dist/tools/read/get-colors.d.ts.map +1 -1
  138. package/dist/tools/read/get-colors.js +2 -1
  139. package/dist/tools/read/get-colors.js.map +1 -1
  140. package/dist/tools/read/get-document-info.d.ts.map +1 -1
  141. package/dist/tools/read/get-document-info.js +2 -3
  142. package/dist/tools/read/get-document-info.js.map +1 -1
  143. package/dist/tools/read/get-document-structure.d.ts.map +1 -1
  144. package/dist/tools/read/get-document-structure.js +3 -7
  145. package/dist/tools/read/get-document-structure.js.map +1 -1
  146. package/dist/tools/read/get-effects.d.ts.map +1 -1
  147. package/dist/tools/read/get-effects.js +3 -7
  148. package/dist/tools/read/get-effects.js.map +1 -1
  149. package/dist/tools/read/get-groups.d.ts.map +1 -1
  150. package/dist/tools/read/get-groups.js +3 -7
  151. package/dist/tools/read/get-groups.js.map +1 -1
  152. package/dist/tools/read/get-guidelines.d.ts.map +1 -1
  153. package/dist/tools/read/get-guidelines.js +3 -7
  154. package/dist/tools/read/get-guidelines.js.map +1 -1
  155. package/dist/tools/read/get-images.d.ts.map +1 -1
  156. package/dist/tools/read/get-images.js +40 -13
  157. package/dist/tools/read/get-images.js.map +1 -1
  158. package/dist/tools/read/get-layers.js +1 -1
  159. package/dist/tools/read/get-overprint-info.d.ts.map +1 -1
  160. package/dist/tools/read/get-overprint-info.js +2 -3
  161. package/dist/tools/read/get-overprint-info.js.map +1 -1
  162. package/dist/tools/read/get-path-items.d.ts.map +1 -1
  163. package/dist/tools/read/get-path-items.js +11 -9
  164. package/dist/tools/read/get-path-items.js.map +1 -1
  165. package/dist/tools/read/get-separation-info.d.ts.map +1 -1
  166. package/dist/tools/read/get-separation-info.js +2 -3
  167. package/dist/tools/read/get-separation-info.js.map +1 -1
  168. package/dist/tools/read/get-symbols.d.ts.map +1 -1
  169. package/dist/tools/read/get-symbols.js +3 -7
  170. package/dist/tools/read/get-symbols.js.map +1 -1
  171. package/dist/tools/read/get-text-frame-detail.d.ts.map +1 -1
  172. package/dist/tools/read/get-text-frame-detail.js +2 -1
  173. package/dist/tools/read/get-text-frame-detail.js.map +1 -1
  174. package/dist/tools/read/list-fonts.d.ts.map +1 -1
  175. package/dist/tools/read/list-fonts.js +2 -1
  176. package/dist/tools/read/list-fonts.js.map +1 -1
  177. package/dist/tools/read/list-text-frames.d.ts.map +1 -1
  178. package/dist/tools/read/list-text-frames.js +3 -5
  179. package/dist/tools/read/list-text-frames.js.map +1 -1
  180. package/dist/tools/registry.d.ts.map +1 -1
  181. package/dist/tools/registry.js +2 -0
  182. package/dist/tools/registry.js.map +1 -1
  183. package/dist/tools/session.d.ts.map +1 -1
  184. package/dist/tools/session.js +5 -1
  185. package/dist/tools/session.js.map +1 -1
  186. package/dist/tools/utility/check-text-consistency.d.ts.map +1 -1
  187. package/dist/tools/utility/check-text-consistency.js +14 -20
  188. package/dist/tools/utility/check-text-consistency.js.map +1 -1
  189. package/dist/tools/utility/preflight-check.d.ts.map +1 -1
  190. package/dist/tools/utility/preflight-check.js +48 -20
  191. package/dist/tools/utility/preflight-check.js.map +1 -1
  192. package/dist/tools/utility/set-workflow.js +1 -1
  193. package/dist/tools/utility/set-workflow.js.map +1 -1
  194. package/package.json +1 -1
@@ -0,0 +1,539 @@
1
+ [🇺🇸 English](README.md) | [🇯🇵 日本語](README.ja.md) | **🇨🇳 简体中文** | [🇰🇷 한국어](README.ko.md) | [🇪🇸 Español](README.es.md) | [🇩🇪 Deutsch](README.de.md) | [🇫🇷 Français](README.fr.md) | [🇵🇹 Português (BR)](README.pt-BR.md)
2
+
3
+ # Illustrator MCP Server
4
+
5
+ [![npm](https://img.shields.io/npm/v/illustrator-mcp-server.svg?style=flat-square&colorA=18181B&colorB=18181B)](https://www.npmjs.com/package/illustrator-mcp-server)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-18181B.svg?style=flat-square&colorA=18181B)](LICENSE)
7
+ [![Platform](https://img.shields.io/badge/Platform-macOS%20%7C%20Windows-18181B.svg?style=flat-square&colorA=18181B)]()
8
+ [![Illustrator](https://img.shields.io/badge/Illustrator-CC%202024%2B-18181B.svg?style=flat-square&colorA=18181B)](https://www.adobe.com/products/illustrator.html)
9
+ [![MCP](https://img.shields.io/badge/MCP-Compatible-18181B.svg?style=flat-square&colorA=18181B)](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)
11
+
12
+ 一个用于读取、操作和导出 Adobe Illustrator 设计数据的 [MCP(Model Context Protocol)](https://modelcontextprotocol.io/) 服务器 —— 内置 63 个工具。
13
+
14
+ 通过 Claude 等 AI 助手直接控制 Illustrator —— 提取设计信息用于 Web 实现、验证印前数据、导出素材资源。
15
+
16
+ [![illustrator mcp server MCP server](https://glama.ai/mcp/servers/ie3jp/illustrator-mcp-server/badges/card.svg)](https://glama.ai/mcp/servers/ie3jp/illustrator-mcp-server)
17
+
18
+ ---
19
+
20
+ ## 🎨 作品展示
21
+
22
+ 以下所有作品均由 Claude 通过自然语言对话完整创建 —— 完全没有手动操作 Illustrator。
23
+
24
+ <table>
25
+ <tr>
26
+ <td align="center"><img src="docs/images/example-event-poster.png" width="300" alt="活动海报 — SYNC TOKYO 2026" /><br><b>活动海报</b></td>
27
+ <td align="center"><img src="docs/images/example-logo-concepts.png" width="300" alt="Logo 方案 — Slow Drip Coffee Co." /><br><b>Logo 方案</b></td>
28
+ </tr>
29
+ <tr>
30
+ <td align="center"><img src="docs/images/example-business-card.png" width="300" alt="名片 — KUMO Studio" /><br><b>名片</b></td>
31
+ <td align="center"><img src="docs/images/example-twilight-geometry.png" width="300" alt="Twilight Geometry — 抽象几何风景" /><br><b>Twilight Geometry</b></td>
32
+ </tr>
33
+ </table>
34
+
35
+ > 关于提示词、工具调用和画板结构的说明,请查看下方的[详细解析](#示例smpte-测试图案)。
36
+
37
+ ---
38
+
39
+ > [!TIP]
40
+ > 开发和维护此工具需要投入大量时间与精力。
41
+ > 如果它对你的工作有帮助,你的支持将意义重大 —— [☕ 请我喝杯咖啡!](https://ko-fi.com/cyocun)
42
+
43
+ ---
44
+
45
+ ## 🚀 快速开始
46
+
47
+ ### 🛠️ Claude Code
48
+
49
+ 需要 [Node.js 20+](https://nodejs.org/)。
50
+
51
+ ```bash
52
+ claude mcp add illustrator-mcp -- npx illustrator-mcp-server
53
+ ```
54
+
55
+ ### 🖥️ Claude Desktop
56
+
57
+ 1. 从 [GitHub Releases](https://github.com/ie3jp/illustrator-mcp-server/releases/latest) 下载 **`illustrator-mcp-server.mcpb`**
58
+ 2. 打开 Claude Desktop → **Settings** → **Extensions**
59
+ 3. 将 `.mcpb` 文件拖放到扩展面板中
60
+ 4. 点击 **Install** 按钮
61
+
62
+ <details>
63
+ <summary><strong>替代方案:手动配置(通过 npx 保持最新)</strong></summary>
64
+
65
+ > [!NOTE]
66
+ > `.mcpb` 扩展不会自动更新。若要升级,请下载新版本并重新安装。如果你希望自动更新,请改用下面的 npx 方式。
67
+
68
+ 需要 [Node.js 20+](https://nodejs.org/)。打开配置文件并添加连接设置。
69
+
70
+ #### 1. 打开配置文件
71
+
72
+ 从 Claude Desktop 菜单栏:
73
+
74
+ **Claude** → **Settings...** → **Developer**(左侧栏)→ 点击 **Edit Config** 按钮
75
+
76
+ #### 2. 添加设置
77
+
78
+ ```json
79
+ {
80
+ "mcpServers": {
81
+ "illustrator": {
82
+ "command": "npx",
83
+ "args": ["illustrator-mcp-server"]
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ > [!NOTE]
90
+ > 如果你通过版本管理工具(nvm、mise、fnm 等)安装了 Node.js,Claude Desktop 可能无法找到 `npx`。这种情况下请使用完整路径:
91
+ > ```json
92
+ > "command": "/full/path/to/npx"
93
+ > ```
94
+ > 在终端中运行 `which npx` 可获得路径。
95
+
96
+ #### 3. 保存并重启
97
+
98
+ 1. 保存文件并关闭文本编辑器
99
+ 2. **完全退出** Claude Desktop(⌘Q / Ctrl+Q)后重新打开
100
+
101
+ </details>
102
+
103
+ > [!CAUTION]
104
+ > AI 可能会出错。不要过度依赖其输出 —— **送印数据必须始终由人工进行最终检查**。使用者需自行为结果负责。
105
+
106
+ > [!NOTE]
107
+ > **macOS:** 首次运行时,请在「系统设置 > 隐私与安全性 > 自动化」中授权自动化访问权限。
108
+
109
+ > [!NOTE]
110
+ > 修改和导出类工具在执行时会将 Illustrator 切换到前台。
111
+
112
+ ### 多版本 Illustrator
113
+
114
+ 如果你安装了多个版本的 Illustrator,可以在对话中告诉 Claude 使用哪个版本。只需说「使用 Illustrator 2024」之类的话,`set_illustrator_version` 工具就会指向相应版本。
115
+
116
+ > [!NOTE]
117
+ > 如果 Illustrator 已经在运行,服务器会连接到当前运行的实例,与版本设置无关。版本设置仅在 Illustrator 尚未启动时用于启动指定版本。
118
+
119
+ ---
120
+
121
+ ## 🎬 能做什么
122
+
123
+ ```
124
+ 你: 告诉我这个文档中所有的文本信息
125
+ Claude: → list_text_frames → get_text_frame_detail
126
+ 文档中共有 12 个文本框。
127
+ 标题 "My Design" 使用 Noto Sans JP Bold 48px,颜色 #333333 ...
128
+ ```
129
+
130
+ ```
131
+ 你: 运行一次印前预检
132
+ Claude: → preflight_check
133
+ ⚠ 2 条警告:
134
+ - 低分辨率图像:image_01.jpg (150dpi) —— 建议使用 300dpi 或更高
135
+ - 未轮廓化的字体:3 个文本框
136
+ ```
137
+
138
+ ```
139
+ 你: 检查文本是否存在不一致
140
+ Claude: → check_text_consistency
141
+ 📝 一致性报告:
142
+ ⚠ "Contact Us" 与 "Contact us" —— 大小写不一致
143
+ ❌ "Lorem ipsum"(2 处)—— 存在占位符文本
144
+ ```
145
+
146
+ ```
147
+ 你: 基于这份 A4 传单创建横幅尺寸的变体
148
+ Claude: → get_document_info → resize_for_variation
149
+ 已创建 3 种尺寸变体:
150
+ - 728×90 / 300×250 / 160×600
151
+ ```
152
+
153
+ ---
154
+
155
+ ## 📖 使用示例
156
+
157
+ <details>
158
+ <summary><b>提取颜色和字体用于 CSS</b></summary>
159
+
160
+ ```
161
+ 你: 总结这份设计中的颜色和字体排版
162
+
163
+ Claude: → get_colors → list_text_frames → get_text_frame_detail
164
+
165
+ ■ 色彩方案
166
+ - 主色:#1A73E8 (CMYK: 85,50,0,0)
167
+ - 辅助色:#34A853
168
+ - 文字:#202124
169
+ - 背景:#FFFFFF
170
+
171
+ ■ 字体排版
172
+ - 标题:Noto Sans JP Bold / 32px
173
+ - 正文:Noto Sans JP Regular / 16px / line-height: 1.75
174
+ - 说明文字:Noto Sans JP Medium / 12px
175
+ ```
176
+
177
+ </details>
178
+
179
+ <details>
180
+ <summary><b>将画板导出为 SVG / PNG</b></summary>
181
+
182
+ ```
183
+ 你: 将所有画板以 SVG 格式导出,文本轮廓化
184
+
185
+ Claude: → get_artboards → convert_to_outlines → export(多次)
186
+
187
+ 已导出 4 个画板:
188
+ - /output/header.svg
189
+ - /output/hero.svg
190
+ - /output/feature.svg
191
+ - /output/footer.svg
192
+ ```
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary><b>送印前检查 PDF/X-1a 合规性</b></summary>
198
+
199
+ ```
200
+ 你: 检查这份文档是否符合 PDF/X-1a 规范
201
+
202
+ Claude: → preflight_check (target_pdf_profile: "x1a")
203
+
204
+ ❌ PDF/X-1a 合规性错误:
205
+ - 3 个对象存在透明效果(X-1a 禁止透明)
206
+ - 发现 2 处 RGB 颜色(X-1a 仅允许 CMYK/专色)
207
+
208
+ ⚠ 警告:
209
+ - 5 个未轮廓化的字体(建议嵌入)
210
+ - 图像 "photo_02.jpg" 仅 150dpi(建议 300dpi)
211
+ ```
212
+
213
+ </details>
214
+
215
+ <details>
216
+ <summary><b>检查印刷用图像质量</b></summary>
217
+
218
+ ```
219
+ 你: 检查印刷用置入图像的质量
220
+
221
+ Claude: → get_images (include_print_info: true)
222
+
223
+ ■ 图像质量报告:
224
+ ✅ hero.psd —— CMYK, 350dpi, 缩放 98%
225
+ ⚠ icon_set.png —— RGB(与 CMYK 文档不一致),300dpi,缩放 100%
226
+ ❌ photo_bg.jpg —— CMYK, 72dpi, 缩放 400%(过度放大)
227
+ → 请替换为实际尺寸下 300dpi 以上的图像
228
+ ```
229
+
230
+ </details>
231
+
232
+ <details>
233
+ <summary><b>检查 WCAG 色彩对比度</b></summary>
234
+
235
+ ```
236
+ 你: 检查文本的对比度
237
+
238
+ Claude: → check_contrast (auto_detect: true)
239
+
240
+ ■ WCAG 对比度报告:
241
+ ❌ "Caption" 位于「浅灰色」之上 —— 2.8:1(AA 不通过)
242
+ ⚠ "Subheading" 位于「白色」之上 —— 4.2:1(AA Large 通过,AA Normal 不通过)
243
+ ✅ "Body text" 位于「白色」之上 —— 12.1:1(AAA 通过)
244
+ ```
245
+
246
+ </details>
247
+
248
+ ---
249
+
250
+ ## 工作流模板
251
+
252
+ 预置的工作流模板可在 Claude Desktop 的提示词选择器中调用。
253
+
254
+ | 模板 | 说明 |
255
+ |----------|-------------|
256
+ | `quick-layout` | 粘贴文本内容,Claude 会将其作为标题、正文和说明文字排布到画板上 |
257
+ | `print-preflight-workflow` | 全面的 7 步印前检查(文档 → 预检 → 叠印 → 分色 → 图像 → 颜色 → 文本) |
258
+
259
+ ---
260
+
261
+ ## 工具参考
262
+
263
+ ### 读取类工具 (21)
264
+
265
+ <details>
266
+ <summary>点击展开</summary>
267
+
268
+ | 工具 | 说明 |
269
+ |---|---|
270
+ | `get_document_info` | 文档元数据(尺寸、色彩模式、配置文件等) |
271
+ | `get_artboards` | 画板信息(位置、尺寸、方向) |
272
+ | `get_layers` | 以树形结构返回图层 |
273
+ | `get_document_structure` | 完整树形:一次调用返回图层 → 组 → 对象 |
274
+ | `list_text_frames` | 文本框列表(字体、字号、样式名) |
275
+ | `get_text_frame_detail` | 指定文本框的全部属性(字距、段落设置等) |
276
+ | `get_colors` | 使用中的颜色信息(色板、渐变、专色)。`include_diagnostics` 可用于印刷分析 |
277
+ | `get_path_items` | 路径/形状数据(填充、描边、锚点) |
278
+ | `get_groups` | 群组、剪切蒙版和复合路径结构 |
279
+ | `get_effects` | 效果和外观信息(不透明度、混合模式) |
280
+ | `get_images` | 嵌入/链接图像信息(分辨率、链接断开检测)。`include_print_info` 可检测色彩空间不匹配和缩放系数 |
281
+ | `get_symbols` | 符号定义与实例 |
282
+ | `get_guidelines` | 参考线信息 |
283
+ | `get_overprint_info` | 叠印设置 + K100/富黑检测与意图分类 |
284
+ | `get_separation_info` | 分色信息(CMYK 印刷版 + 专色版及其使用次数) |
285
+ | `get_selection` | 当前选中对象的详细信息 |
286
+ | `find_objects` | 按条件搜索(名称、类型、颜色、字体等) |
287
+ | `check_contrast` | WCAG 色彩对比度检查(手动或自动检测重叠对) |
288
+ | `extract_design_tokens` | 将设计令牌导出为 CSS 自定义属性、JSON 或 Tailwind 配置 |
289
+ | `list_fonts` | 列出 Illustrator 中可用的字体(无需文档) |
290
+ | `convert_coordinate` | 在画板与文档坐标系之间转换点坐标 |
291
+
292
+ </details>
293
+
294
+ ### 修改类工具 (38)
295
+
296
+ <details>
297
+ <summary>点击展开</summary>
298
+
299
+ | 工具 | 说明 |
300
+ |---|---|
301
+ | `create_rectangle` | 创建矩形(支持圆角) |
302
+ | `create_ellipse` | 创建椭圆 |
303
+ | `create_line` | 创建直线 |
304
+ | `create_text_frame` | 创建文本框(点文字或区域文字) |
305
+ | `create_path` | 创建自定义路径(支持贝塞尔控制柄) |
306
+ | `place_image` | 以链接或嵌入方式置入图像文件 |
307
+ | `modify_object` | 修改现有对象的属性 |
308
+ | `convert_to_outlines` | 将文本轮廓化 |
309
+ | `assign_color_profile` | 指定(标记)色彩配置文件(不会转换颜色值) |
310
+ | `create_document` | 新建文档(尺寸、色彩模式) |
311
+ | `close_document` | 关闭当前文档 |
312
+ | `resize_for_variation` | 基于源画板创建尺寸变体(等比缩放) |
313
+ | `align_objects` | 对齐与分布多个对象 |
314
+ | `replace_color` | 在文档中查找并替换颜色(支持容差) |
315
+ | `manage_layers` | 添加、重命名、显示/隐藏、锁定/解锁、重新排序或删除图层 |
316
+ | `place_color_chips` | 提取唯一颜色并将色卡摆放在画板外 |
317
+ | `save_document` | 保存或另存为当前文档 |
318
+ | `open_document` | 根据文件路径打开文档 |
319
+ | `group_objects` | 将对象编组(支持剪切蒙版) |
320
+ | `ungroup_objects` | 解组,释放子对象 |
321
+ | `duplicate_objects` | 复制对象(可选偏移量) |
322
+ | `set_z_order` | 更改层叠顺序(前/后) |
323
+ | `move_to_layer` | 将对象移动到其他图层 |
324
+ | `manage_artboards` | 添加、删除、调整大小、重命名、重新排列画板 |
325
+ | `manage_swatches` | 添加、更新或删除色板 |
326
+ | `manage_linked_images` | 重新链接或嵌入置入的图像 |
327
+ | `manage_datasets` | 列出/应用/创建数据集,导入/导出变量 |
328
+ | `apply_graphic_style` | 将图形样式应用于对象 |
329
+ | `list_graphic_styles` | 列出文档中所有的图形样式 |
330
+ | `apply_text_style` | 对文本应用字符样式或段落样式 |
331
+ | `list_text_styles` | 列出所有字符样式和段落样式 |
332
+ | `create_gradient` | 创建渐变并应用到对象 |
333
+ | `create_path_text` | 创建沿路径排列的文本 |
334
+ | `place_symbol` | 置入或替换符号实例 |
335
+ | `select_objects` | 按 UUID 选中对象(支持多选) |
336
+ | `create_crop_marks` | 创建裁切标记(根据区域自动检测样式:日式双线 / 西式单线) |
337
+ | `place_style_guide` | 在画板外放置可视化样式指南(颜色、字体、间距、边距、参考线间距) |
338
+ | `undo` | 撤销/重做操作(支持多步) |
339
+
340
+ </details>
341
+
342
+ ### 导出类工具 (2)
343
+
344
+ <details>
345
+ <summary>点击展开</summary>
346
+
347
+ | 工具 | 说明 |
348
+ |---|---|
349
+ | `export` | SVG / PNG / JPG 导出(按画板、选区或 UUID) |
350
+ | `export_pdf` | 印刷就绪的 PDF 导出(裁切标记、出血、选择性降采样、输出意图) |
351
+
352
+ </details>
353
+
354
+ ### 实用工具 (3)
355
+
356
+ <details>
357
+ <summary>点击展开</summary>
358
+
359
+ | 工具 | 说明 |
360
+ |---|---|
361
+ | `preflight_check` | 印前预检(RGB 混用、链接断开、低分辨率、白色叠印、透明与叠印的相互影响、PDF/X 合规性等) |
362
+ | `check_text_consistency` | 文本一致性检查(占位符检测、写法不一致模式识别、提供完整文本列表供 LLM 分析) |
363
+ | `set_workflow` | 设置工作流模式(web/print),覆盖自动检测的坐标系 |
364
+
365
+ </details>
366
+
367
+ ---
368
+
369
+ ## 坐标系
370
+
371
+ 服务器会根据文档自动检测坐标系:
372
+
373
+ | 文档类型 | 坐标系 | 原点 | Y 轴方向 |
374
+ |---|---|---|---|
375
+ | CMYK / 印刷 | `document` | 左下 | 向上 |
376
+ | RGB / Web | `artboard-web` | 画板左上 | 向下 |
377
+
378
+ - **CMYK 文档**使用 Illustrator 原生坐标系,与印刷设计师的习惯一致
379
+ - **RGB 文档**使用 Web 风格坐标系,更便于 AI 操作
380
+ - 如果需要,可用 `set_workflow` 覆盖自动检测的坐标系
381
+ - 所有工具响应都会包含 `coordinateSystem` 字段,指示当前生效的坐标系
382
+
383
+ ---
384
+
385
+ ## 示例:SMPTE 测试图案
386
+
387
+ 一张 1920×1080 的 SMPTE 彩条测试图案,完全通过自然语言指令交由 Claude 创建。
388
+
389
+ **提示词:**
390
+
391
+ > Make a 1920x1080 video test pattern
392
+
393
+ **结果:**
394
+
395
+ <img src="docs/images/example-smpte-test-pattern.png" width="720" alt="由 Claude 通过 illustrator-mcp-server 生成的 SMPTE 彩条测试图案" />
396
+
397
+ **画板结构**(通过 `get_document_structure` 获取):
398
+
399
+ <details>
400
+ <summary>点击展开</summary>
401
+
402
+ ```
403
+ Labels
404
+ ├── title-safe-label (text) — "TITLE SAFE (10%)"
405
+ ├── action-safe-label (text) — "ACTION SAFE (5%)"
406
+ ├── credit-label (text) — "Generated by illustrator-mcp-server"
407
+ ├── test-label (text) — "SMPTE COLOR BARS — TEST PATTERN"
408
+ ├── format-label (text) — "Full HD — 16:9"
409
+ └── resolution-label (text) — "1920 x 1080"
410
+
411
+ Center Cross
412
+ ├── title-safe (path) — 1536×864 stroke rectangle
413
+ ├── action-safe (path) — 1728×972 stroke rectangle
414
+ ├── cross-circle (path) — 150×150 center circle
415
+ ├── cross-v (path) — vertical crosshair
416
+ └── cross-h (path) — horizontal crosshair
417
+
418
+ Color Bars
419
+ ├── pluge-black … pluge-navy (path ×9) — PLUGE / grayscale bottom strip
420
+ ├── rev-white … rev-blue (path ×7) — reverse color middle strip
421
+ └── bar-white … bar-blue (path ×7) — 75% SMPTE color bars
422
+ ```
423
+
424
+ </details>
425
+
426
+ > 使用的工具:`create_document`、`manage_layers`、`create_rectangle` ×23、`create_line` ×2、`create_ellipse`、`create_text_frame` ×6、`modify_object` ×4、`save_document`、`export`
427
+
428
+ ---
429
+
430
+ ## 示例:Twilight Geometry
431
+
432
+ 一幅抽象的几何风景作品 —— 除了一句「随便创作你喜欢的作品」之外,没有任何人类的设计指导,完全由 Claude 独立创作。
433
+
434
+ **提示词:**
435
+
436
+ > Make an art piece of your own imagination in Illustrator. Take your time. Create whatever you like.
437
+
438
+ **Claude 的创作过程:**
439
+
440
+ > 我来创作「Twilight Geometry」—— 一幅带有几何天体元素的抽象风景。深邃的渐变暮色天空、层叠的山脉剪影、带有装饰光环的弯月,以及散布在画布上的星星。
441
+
442
+ > 不同颜色的菱形星星 —— 暖白、冷蓝、淡紫 —— 每一颗都略有差异,以暗示不同类型的恒星。用星座连线将它们相连。天空中漂浮着线框三角形和六边形,营造出神秘氛围。
443
+
444
+ > 画面底部是水面,月光化作闪烁的波纹线条倒映其上,向下渐渐淡出。
445
+
446
+ **Claude 的感悟:**
447
+
448
+ > 成品比我预期的要好。我认为几何与自然相融的混合世界得到了很好的呈现。
449
+
450
+ **结果:**
451
+
452
+ <img src="docs/images/example-twilight-geometry.png" width="720" alt="Twilight Geometry —— 由 Claude 通过 illustrator-mcp-server 生成的抽象几何风景艺术作品" />
453
+
454
+ > 使用的工具:`create_document`、`manage_layers` ×4、`create_rectangle` ×2、`create_gradient` ×2、`create_path` ×11、`create_ellipse` ×14、`create_line` ×4、`create_text_frame` ×2、`modify_object`、`set_z_order`、`export`
455
+
456
+ ---
457
+
458
+ ## 已知限制
459
+
460
+ | 限制 | 详情 |
461
+ |---|---|
462
+ | Windows 支持 | Windows 使用 PowerShell COM 自动化(尚未在真实硬件上测试) |
463
+ | 实时效果 | 投影等效果参数可被检测,但无法读取具体值 |
464
+ | 色彩配置文件 | 仅支持色彩配置文件的指定 —— 不支持完整转换 |
465
+ | 出血设置 | 无法读取出血设置(Illustrator API 限制) |
466
+ | WebP 导出 | 不支持 —— 请改用 PNG 或 SVG |
467
+ | 日式裁切标记 | PDF 导出会自动采用 TrimMark 命令方案:作为文档路径生成标记、导出后通过撤销移除 |
468
+ | 字体嵌入 | 无法直接控制嵌入模式(完整/子集)—— 请使用 PDF 预设 |
469
+ | 尺寸变体 | 仅支持等比缩放 —— 文本可能需要事后手动调整 |
470
+
471
+ ---
472
+
473
+ <br>
474
+
475
+ # 开发者指南
476
+
477
+ ## 架构
478
+
479
+ ```mermaid
480
+ flowchart LR
481
+ Claude <-->|MCP Protocol| Server["MCP Server\n(TypeScript/Node.js)"]
482
+
483
+ Server -.->|generate| Runner["run-{uuid}.scpt / .ps1"]
484
+ Server -.->|generate| JSX["script-{uuid}.jsx\n(BOM UTF-8)"]
485
+ Server -.->|write| PF["params-{uuid}.json"]
486
+
487
+ Runner -->|execFile| osascript
488
+ Runner -->|execFile| PS["powershell.exe"]
489
+
490
+ osascript -->|do javascript| AI["Adobe Illustrator\n(ExtendScript/JSX)"]
491
+ PS -->|DoJavaScript| AI
492
+
493
+ JSX -.->|execute| AI
494
+ PF -.->|read| AI
495
+ AI -.->|write| RF["result-{uuid}.json"]
496
+ RF -.->|read| Server
497
+ ```
498
+
499
+ ---
500
+
501
+ ## 从源码构建
502
+
503
+ ```bash
504
+ git clone https://github.com/ie3jp/illustrator-mcp-server.git
505
+ cd illustrator-mcp-server
506
+ npm install
507
+ npm run build
508
+ claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
509
+ ```
510
+
511
+ ### 验证
512
+
513
+ ```bash
514
+ npx @modelcontextprotocol/inspector npx illustrator-mcp-server
515
+ ```
516
+
517
+ ### 测试
518
+
519
+ ```bash
520
+ # 单元测试
521
+ npm test
522
+
523
+ # 端到端冒烟测试(需要 Illustrator 正在运行)
524
+ npx tsx test/e2e/smoke-test.ts
525
+ ```
526
+
527
+ E2E 测试会创建全新文档(RGB + CMYK),置入测试对象,运行跨 10 个阶段的 182 个测试用例,覆盖所有已注册的工具和坐标系自动检测,并在结束后自动清理。
528
+
529
+ ---
530
+
531
+ ## 免责声明
532
+
533
+ 本工具自动化了大量 Illustrator 操作,但 AI 可能会出错。提取的数据、预检结果和文档修改应始终由人工复核。**请勿将本工具作为唯一的质量检查手段。** 请将其作为辅助工具,与你自己的手动验证配合使用,尤其是在印刷交付和客户交付物方面。作者不对因使用本软件或其输出所产生的任何损害或损失承担责任。
534
+
535
+ ---
536
+
537
+ ## 许可证
538
+
539
+ [MIT](LICENSE)