@alisaitteke/photoshop-mcp 1.3.13 → 1.6.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 (166) hide show
  1. package/README.de.md +787 -0
  2. package/README.es.md +737 -0
  3. package/README.ja.md +732 -0
  4. package/README.md +204 -41
  5. package/README.tr.md +842 -0
  6. package/README.zh-CN.md +727 -0
  7. package/dist/api/extendscript.d.ts +17 -1
  8. package/dist/api/extendscript.d.ts.map +1 -1
  9. package/dist/api/extendscript.js +301 -3
  10. package/dist/api/extendscript.js.map +1 -1
  11. package/dist/api/photoshop-api.d.ts +1 -1
  12. package/dist/api/photoshop-api.d.ts.map +1 -1
  13. package/dist/api/photoshop-api.js +4 -4
  14. package/dist/api/photoshop-api.js.map +1 -1
  15. package/dist/core/server.d.ts.map +1 -1
  16. package/dist/core/server.js +8 -0
  17. package/dist/core/server.js.map +1 -1
  18. package/dist/errors/envelope.d.ts +1 -1
  19. package/dist/errors/envelope.d.ts.map +1 -1
  20. package/dist/errors/envelope.js +4 -0
  21. package/dist/errors/envelope.js.map +1 -1
  22. package/dist/platform/capabilities.d.ts +7 -0
  23. package/dist/platform/capabilities.d.ts.map +1 -1
  24. package/dist/platform/capabilities.js +23 -1
  25. package/dist/platform/capabilities.js.map +1 -1
  26. package/dist/platform/macos-detector.d.ts.map +1 -1
  27. package/dist/platform/macos-detector.js +7 -4
  28. package/dist/platform/macos-detector.js.map +1 -1
  29. package/dist/platform/macos-executor.d.ts +11 -0
  30. package/dist/platform/macos-executor.d.ts.map +1 -1
  31. package/dist/platform/macos-executor.js +103 -32
  32. package/dist/platform/macos-executor.js.map +1 -1
  33. package/dist/platform/uxp-bridge-client.d.ts +13 -0
  34. package/dist/platform/uxp-bridge-client.d.ts.map +1 -0
  35. package/dist/platform/uxp-bridge-client.js +31 -0
  36. package/dist/platform/uxp-bridge-client.js.map +1 -0
  37. package/dist/platform/uxp-bridge-server.d.ts +16 -0
  38. package/dist/platform/uxp-bridge-server.d.ts.map +1 -0
  39. package/dist/platform/uxp-bridge-server.js +105 -0
  40. package/dist/platform/uxp-bridge-server.js.map +1 -0
  41. package/dist/prompts/instructions.d.ts.map +1 -1
  42. package/dist/prompts/instructions.js +21 -12
  43. package/dist/prompts/instructions.js.map +1 -1
  44. package/dist/prompts/registry.d.ts +2 -2
  45. package/dist/prompts/registry.d.ts.map +1 -1
  46. package/dist/prompts/registry.js +15 -0
  47. package/dist/prompts/registry.js.map +1 -1
  48. package/dist/prompts/templates/batch-watermark.d.ts +3 -0
  49. package/dist/prompts/templates/batch-watermark.d.ts.map +1 -0
  50. package/dist/prompts/templates/batch-watermark.js +67 -0
  51. package/dist/prompts/templates/batch-watermark.js.map +1 -0
  52. package/dist/prompts/templates/generative-expand.d.ts +3 -0
  53. package/dist/prompts/templates/generative-expand.d.ts.map +1 -0
  54. package/dist/prompts/templates/generative-expand.js +34 -0
  55. package/dist/prompts/templates/generative-expand.js.map +1 -0
  56. package/dist/prompts/templates/generative-fill.d.ts +3 -0
  57. package/dist/prompts/templates/generative-fill.d.ts.map +1 -0
  58. package/dist/prompts/templates/generative-fill.js +29 -0
  59. package/dist/prompts/templates/generative-fill.js.map +1 -0
  60. package/dist/prompts/templates/generative-remove.d.ts +3 -0
  61. package/dist/prompts/templates/generative-remove.d.ts.map +1 -0
  62. package/dist/prompts/templates/generative-remove.js +36 -0
  63. package/dist/prompts/templates/generative-remove.js.map +1 -0
  64. package/dist/prompts/templates/passport-photo.d.ts +3 -0
  65. package/dist/prompts/templates/passport-photo.d.ts.map +1 -0
  66. package/dist/prompts/templates/passport-photo.js +36 -0
  67. package/dist/prompts/templates/passport-photo.js.map +1 -0
  68. package/dist/prompts/templates/remove-distraction.d.ts.map +1 -1
  69. package/dist/prompts/templates/remove-distraction.js +4 -5
  70. package/dist/prompts/templates/remove-distraction.js.map +1 -1
  71. package/dist/prompts/templates/split-carousel.d.ts +3 -0
  72. package/dist/prompts/templates/split-carousel.d.ts.map +1 -0
  73. package/dist/prompts/templates/split-carousel.js +49 -0
  74. package/dist/prompts/templates/split-carousel.js.map +1 -0
  75. package/dist/tools/generative/_shared.d.ts +14 -0
  76. package/dist/tools/generative/_shared.d.ts.map +1 -0
  77. package/dist/tools/generative/_shared.js +79 -0
  78. package/dist/tools/generative/_shared.js.map +1 -0
  79. package/dist/tools/generative-tools.d.ts +8 -0
  80. package/dist/tools/generative-tools.d.ts.map +1 -0
  81. package/dist/tools/generative-tools.js +221 -0
  82. package/dist/tools/generative-tools.js.map +1 -0
  83. package/dist/tools/layer-properties-tools.d.ts.map +1 -1
  84. package/dist/tools/layer-properties-tools.js +2 -1
  85. package/dist/tools/layer-properties-tools.js.map +1 -1
  86. package/dist/tools/neural-tools.d.ts +8 -0
  87. package/dist/tools/neural-tools.d.ts.map +1 -0
  88. package/dist/tools/neural-tools.js +99 -0
  89. package/dist/tools/neural-tools.js.map +1 -0
  90. package/dist/tools/recipes/_shared.d.ts +8 -0
  91. package/dist/tools/recipes/_shared.d.ts.map +1 -1
  92. package/dist/tools/recipes/_shared.js +45 -0
  93. package/dist/tools/recipes/_shared.js.map +1 -1
  94. package/dist/tools/recipes/batch-watermark.d.ts +4 -0
  95. package/dist/tools/recipes/batch-watermark.d.ts.map +1 -0
  96. package/dist/tools/recipes/batch-watermark.js +283 -0
  97. package/dist/tools/recipes/batch-watermark.js.map +1 -0
  98. package/dist/tools/recipes/enhance-portrait.d.ts.map +1 -1
  99. package/dist/tools/recipes/enhance-portrait.js +47 -0
  100. package/dist/tools/recipes/enhance-portrait.js.map +1 -1
  101. package/dist/tools/recipes/index.d.ts +1 -1
  102. package/dist/tools/recipes/index.d.ts.map +1 -1
  103. package/dist/tools/recipes/index.js +9 -0
  104. package/dist/tools/recipes/index.js.map +1 -1
  105. package/dist/tools/recipes/passport-photo.d.ts +4 -0
  106. package/dist/tools/recipes/passport-photo.d.ts.map +1 -0
  107. package/dist/tools/recipes/passport-photo.js +202 -0
  108. package/dist/tools/recipes/passport-photo.js.map +1 -0
  109. package/dist/tools/recipes/remove-background.d.ts.map +1 -1
  110. package/dist/tools/recipes/remove-background.js +5 -0
  111. package/dist/tools/recipes/remove-background.js.map +1 -1
  112. package/dist/tools/recipes/remove-distraction.d.ts.map +1 -1
  113. package/dist/tools/recipes/remove-distraction.js +48 -8
  114. package/dist/tools/recipes/remove-distraction.js.map +1 -1
  115. package/dist/tools/recipes/sky-blend.d.ts.map +1 -1
  116. package/dist/tools/recipes/sky-blend.js +43 -1
  117. package/dist/tools/recipes/sky-blend.js.map +1 -1
  118. package/dist/tools/recipes/split-carousel.d.ts +4 -0
  119. package/dist/tools/recipes/split-carousel.d.ts.map +1 -0
  120. package/dist/tools/recipes/split-carousel.js +163 -0
  121. package/dist/tools/recipes/split-carousel.js.map +1 -0
  122. package/dist/tools/state-tools.js +2 -2
  123. package/dist/tools/state-tools.js.map +1 -1
  124. package/dist/ui/cli.js +7 -1
  125. package/dist/ui/cli.js.map +1 -1
  126. package/dist/ui/providers/anthropic.d.ts.map +1 -1
  127. package/dist/ui/providers/anthropic.js +11 -1
  128. package/dist/ui/providers/anthropic.js.map +1 -1
  129. package/dist/ui/providers/types.d.ts +1 -0
  130. package/dist/ui/providers/types.d.ts.map +1 -1
  131. package/dist/ui/security/session-token.d.ts +24 -0
  132. package/dist/ui/security/session-token.d.ts.map +1 -0
  133. package/dist/ui/security/session-token.js +72 -0
  134. package/dist/ui/security/session-token.js.map +1 -0
  135. package/dist/ui/server.d.ts +4 -0
  136. package/dist/ui/server.d.ts.map +1 -1
  137. package/dist/ui/server.js +79 -11
  138. package/dist/ui/server.js.map +1 -1
  139. package/dist/utils/js-string.d.ts.map +1 -1
  140. package/dist/utils/js-string.js +6 -1
  141. package/dist/utils/js-string.js.map +1 -1
  142. package/package.json +8 -4
  143. package/uxp-plugin/index.html +20 -0
  144. package/uxp-plugin/main.js +139 -0
  145. package/uxp-plugin/manifest.json +26 -0
  146. package/web/dist/assets/index-SNfxhJjr.js +350 -0
  147. package/web/dist/assets/index-vi5C3hqd.css +1 -0
  148. package/web/dist/index.html +2 -2
  149. package/dist/analytics/client-ip.d.ts +0 -5
  150. package/dist/analytics/client-ip.d.ts.map +0 -1
  151. package/dist/analytics/client-ip.js +0 -39
  152. package/dist/analytics/client-ip.js.map +0 -1
  153. package/dist/analytics/debug-log.d.ts +0 -3
  154. package/dist/analytics/debug-log.d.ts.map +0 -1
  155. package/dist/analytics/debug-log.js +0 -21
  156. package/dist/analytics/debug-log.js.map +0 -1
  157. package/dist/prompts/templates.d.ts +0 -8
  158. package/dist/prompts/templates.d.ts.map +0 -1
  159. package/dist/prompts/templates.js +0 -162
  160. package/dist/prompts/templates.js.map +0 -1
  161. package/dist/tools/recipe-tools.d.ts +0 -4
  162. package/dist/tools/recipe-tools.d.ts.map +0 -1
  163. package/dist/tools/recipe-tools.js +0 -265
  164. package/dist/tools/recipe-tools.js.map +0 -1
  165. package/web/dist/assets/index-BgiXf1Jy.css +0 -1
  166. package/web/dist/assets/index-DvGX0LLy.js +0 -346
package/README.ja.md ADDED
@@ -0,0 +1,732 @@
1
+ # Photoshop MCP Server
2
+
3
+ <p align="center">
4
+ <a href="https://github.com/alisaitteke/photoshop-mcp">
5
+ <img src="./images/readme-hero.png" alt="Photoshop MCP — AIによるPhotoshop自動化" width="100%" />
6
+ </a>
7
+ </p>
8
+
9
+ **言語:** [English](README.md) · [简体中文](README.zh-CN.md) · [Español](README.es.md) · [Deutsch](README.de.md) · [日本語](README.ja.md) · [Türkçe](README.tr.md)
10
+
11
+ *v1.1+ — レシピワークフロー、ラウンドトリップ削減、軽快なセッション。スタンドアロンUIには計画→実行を担う **Action Plan(ベータ)** が付属しています。*
12
+
13
+ > **注意:** これは非公式のコミュニティ管理プロジェクトであり、Adobe Inc.との提携・承認関係はありません。
14
+
15
+ [![npm version](https://img.shields.io/npm/v/@alisaitteke/photoshop-mcp.svg)](https://www.npmjs.com/package/@alisaitteke/photoshop-mcp)
16
+ [![GitHub release](https://img.shields.io/github/v/release/alisaitteke/photoshop-mcp?include_prereleases)](https://github.com/alisaitteke/photoshop-mcp/releases)
17
+ [![Action Plan](https://img.shields.io/badge/Action%20Plan-beta-amber.svg)](#action-plan-beta)
18
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
19
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
20
+ [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS-lightgrey.svg)]()
21
+
22
+ モデルコンテキストプロトコル(MCP)サーバーで、ClaudeやCursorなどのAIアシスタントがAdobe Photoshopをプログラム的に操作できます。IDEから自然言語でデザイン作成・画像編集・ワークフロー自動化が可能です。同梱の**スタンドアロンWebUI**ではAPIキーとCLIサブスクリプションアカウント(Claude Code / Gemini CLI)の両方に対応しています。UIにはオプトインの**Action Plan(ベータ)**モードもあり、すべてのPhotoshopステップを1回のLLM呼び出しで計画し、一括実行できます。
23
+
24
+ ## このプロジェクトが存在する理由
25
+
26
+ デザイナーや開発者はAIアシスタントからPhotoshopを操作したいと考えています。しかし生のExtendScript呼び出しは脆弱で、エージェントが試行錯誤でトークンを浪費し、レイヤータイプがフィルターを壊し、コマンドが1つ失敗するとドキュメントが不明な状態になります。
27
+
28
+ Photoshop MCPは**状態認識**(`get_state`・`get_preview`・`get_capabilities`)、**レシピツール**(複数ステップの結果を1つのUndo単位にまとめる)、そして**構造化エラーエンベロープ**(エージェントが次の手順を把握できる)を追加します。オプションのスタンドアロンUIとAction Planモードにより、長いワークフローでのラウンドトリップを削減し、自然言語で実際にピクセルを生み出せます。
29
+
30
+ 技術的詳細:[`docs/architecture.md`](docs/architecture.md)
31
+
32
+ ## 🖥️ スタンドアロンUI(IDEは不要)
33
+
34
+ Claude DesktopやCursorに組み込みたくない場合でも大丈夫です。同じパッケージにフルローカルのWebUIが同梱されており、AIモデルとチャットしてこのMCPサーバー経由でPhotoshopを操作できます。プロバイダーのAPIキーで接続するか、AnthropicとGoogleの場合は**Claude Code**または**Gemini CLI**のOAuthセッションを再利用できます(別途APIキー不要)。
35
+
36
+ ![スタンドアロンUIスクリーンショット](./images/frame_generic_light.png)
37
+
38
+ ```bash
39
+ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
40
+ ```
41
+
42
+ これだけです。`127.0.0.1`(ランダムな空きポート)でローカルサーバーが起動し、デフォルトブラウザにチャットUIが自動で開きます。
43
+
44
+ ### 対応プロバイダー
45
+
46
+ 初回起動時に以下のいずれかを選択します。APIキーまたは既存のCLIサブスクリプションアカウント(AnthropicとGoogle)を使用できます:
47
+
48
+ | プロバイダー | モデル | APIキー | CLIアカウント |
49
+ |---|---|---|---|
50
+ | **Anthropic** | Claude Sonnet / Opus / Haiku | [console.anthropic.com](https://console.anthropic.com/settings/keys) | `npm i -g @anthropic-ai/claude-code` → `claude auth login` |
51
+ | **OpenAI** | GPT-5, GPT-4.1, o-series | [platform.openai.com](https://platform.openai.com/api-keys) | — |
52
+ | **Google** | Gemini 2.5 Pro / Flash / Flash-Lite | [aistudio.google.com](https://aistudio.google.com/apikey) | `npm i -g @google/gemini-cli` → `gemini auth login` |
53
+ | **OpenRouter** | 100以上のモデル(各プロバイダー) | [openrouter.ai](https://openrouter.ai/keys) | — |
54
+
55
+ ### 認証モード
56
+
57
+ - **`api_key`(デフォルト)** — Vercel AI SDK+プロバイダーAPIキー。使用量はAPIレートでトークン単位で請求され、UIにはチャットごとの推定コストが表示されます。
58
+ - **`cli_account`** — Claude CodeまたはGemini CLIのローカルOAuthセッションを使用します。APIキーは保存されず、UIが`claude auth status` / `gemini`をヘッドレスで確認してログインを検証します。使用量はAPI課金ではなく**サブスクリプション枠**に計上されます。ステータスバーには「Included in subscription」と表示されます。
59
+
60
+ 設定でプロバイダーごとに認証方法を切り替えても、もう一方のクレデンシャルは失われません(例:CLIアカウントを試しながらAPIキーを保持し、後で切り替えるなど)。
61
+
62
+ ### Action Plan (beta)
63
+
64
+ スタンドアロンWebUIのオプション実行モードで、**APIキー認証専用**です(`cli_account`は常にデフォルトのエージェントフローを使用します)。composerのモデルセレクター横にある**Action Plan**トグルで有効にします。
65
+
66
+ ステップごとのReActループ(モデル → ツール → モデル → ツール …)の代わりに、Action Planは以下を行います:
67
+
68
+ 1. **1回**の計画LLM呼び出しで、Photoshop MCPツール呼び出しとパラメーターの順序付きToDoリストを出力します。
69
+ 2. それらのツールを**直接**順番に実行します(ステップ間の追加モデルラウンドトリップなし)。
70
+ 3. ステップが失敗した場合や依存関係が未解決の場合、限定的な**修復**ループを実行します(残りのステップを最大3回再計画)。
71
+
72
+ 計画はツール呼び出しカードの上にライブToDoリストとして表示され、ステップごとのステータス(`pending` → `running` → `done` / `error`)が確認できます。計画はチャット履歴に保存され、リロードしても残ります。トグルはデフォルトで無効で、Action Planを無効にしている間は既存のエージェントフローに影響しません。
73
+
74
+ *「背景を削除してWeb用にエクスポートして」*のようなモデル呼び出しを減らしてエンドツーエンドの実行を高速化したいマルチステッププロンプトに最適です。
75
+
76
+ ### 初回起動時の動作
77
+
78
+ 1. プロバイダーを選択し、**API key**または**Uses your account**を選択します。
79
+ 2. キーを検証するかCLI接続を確認します。設定は`~/.photoshop-mcp/data.db`(SQLite、`chmod 600`)にローカル保存されます。APIキーは端末外に出ません。CLIモードはOAuthを`~/.claude/`または`~/.gemini/`から継承します。
80
+ 3. 自然言語でプロンプトを入力します。UIはモデルの返答をストリーミングし、Photoshopツール呼び出しをリアルタイムで実行し、各ツール呼び出しを確認可能なカード(入力+結果)としてレンダリングします。
81
+ 4. プロバイダー、認証方法、モデルはいつでも設定/モデルセレクターから変更できます。チャット、コスト、ツール履歴はセッションをまたいで保持されます。
82
+
83
+ ### 認証方法の後からの変更
84
+
85
+ サイドバーからいつでも**設定**を開いてください:
86
+
87
+ | 操作 | APIキーモード | CLIアカウントモード |
88
+ |---|---|---|
89
+ | 設定 | キーを貼り付け → **Save** | CLIをインストール → `auth login` → **Check connection** |
90
+ | 切り替え | **API key**を選択(保存済みキーは保持) | **Uses your account**を選択(キーは削除されない) |
91
+ | カスタムバイナリ | — | `claude` / `gemini`が`PATH`にない場合はオプションの**CLI path** |
92
+ | コスト表示 | ステータスバーにトークン単位の見積もり | **Included in subscription**バッジ |
93
+
94
+ 認証方法は`~/.photoshop-mcp/data.db`にプロバイダーごとに保存されます(`authMethod`:`api_key`または`cli_account`)。`authMethod`のない既存の設定は`api_key`がデフォルトとなり、変更なく動作し続けます。
95
+
96
+ ### CLIオプション
97
+
98
+ ```
99
+ photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
100
+ ```
101
+
102
+ ### ローカル API のセキュリティ
103
+
104
+ UI サーバーはプロバイダーの API キーを保存し、Photoshop を操作できます。その
105
+ ため `/api/*` はマシン上で動作するすべてのプロセスに開かれてはいません。各
106
+ リクエストは次の 3 つのチェックを通過する必要があります。
107
+
108
+ 1. **Host** — サーバーのポート上のループバックアドレス(または `--host` で
109
+ バインドしたホスト)である必要があります。DNS リバインディングを防ぎます。
110
+ 2. **Origin** — 存在する場合は UI 自身のオリジンと一致する必要があります。
111
+ ブラウザからのクロスオリジン呼び出しを防ぎます。
112
+ 3. **セッショントークン** — 起動ごとに生成されるランダムな秘密値です。ヘッダー
113
+ は偽装できてもトークンは読み取れない、他のローカルプロセスを防ぎます。
114
+
115
+ ブラウザ側でトークンを扱う必要はありません。サーバーが配信する `index.html`
116
+ に注入します。スクリプトから使う場合は
117
+ `~/.photoshop-mcp/ui-session.json`(chmod 600)から読み取り、`x-psmcp-token`
118
+ または `Authorization: Bearer` ヘッダーで送信するか、サーバー起動前に
119
+ `PSMCP_UI_TOKEN` で任意のトークンを固定してください。有効なトークンがない
120
+ リクエストは `401 unauthorized` を返します。
121
+
122
+ ### 注意事項
123
+
124
+ - エージェントはPhotoshop MCPツールのみに制限されています。組み込みのシェル・ファイル・Webツールは無効化されています。
125
+ - 技術スタック:フロントエンドはVue 3 + Tailwind v4 + [shadcn-vue](https://www.shadcn-vue.com/)、バックエンドは[Hono](https://hono.dev/)。APIキーモードは[Vercel AI SDK](https://sdk.vercel.ai/)を、CLIアカウントモードは[Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/mcp)(Anthropic)またはGemini CLIヘッドレスの`stream-json`(Google)を使用します。すべてのパスはSTDIO経由でこのPhotoshop MCPサーバーと通信します。
126
+ - **CLIアカウントの制限:** Geminiヘッドレスはターンごとに新しいセッションを開始する場合があります(履歴はプロンプトに追記されます)。AnthropicのCLIアカウントはサブスクリプション枠を消費します。OAuthログインはmacOS優先です(ターミナルで`claude auth login` / `gemini auth login`)。
127
+
128
+ ---
129
+
130
+ ## Photoshop向けAI/プロンプトレイヤー
131
+
132
+ アトミックな`photoshop_*`ツールに加え、サーバーにはホストLLM(Cursor、Claude Desktopなど)があいまいなユーザーリクエストを確実なPhotoshopアクションに変換するためのAI/プロンプトレイヤーが付属しています:
133
+
134
+ - **サーバー`instructions`** — MCPの`initialize`時にアドバタイズされるワークフロー規約(1回ping、アクション前に状態確認、レシピを優先、エラー回復)。[`src/prompts/instructions.ts`](src/prompts/instructions.ts)を参照。
135
+ - **MCPの`prompts`プリミティブ** — 19個の事前設計済みテンプレート(12レシピ+7ガイド:`ps.enhance_portrait`・`ps.remove_background`・`ps.generative_fill`など)を`prompts/list`と`prompts/get`で利用可能。
136
+ - **レシピツール** — 12個の成果指向`photoshop_recipe_*`ツール(背景削除、ポートレート強調、Web向け準備、ソーシャル用バリアントエクスポート、カラーグレーディング、周波数分離、バッチモックアップ、レイヤー整理、グラデーションフェード、空の合成、ドッジ&バーン、邪魔なもの削除)。各ステップは1つのPhotoshop履歴状態にまとめられます(Undoで全ステップを一括取り消し)。**合計86ツール**(アトミック74+レシピ12)。
137
+ - **生成AI** — `photoshop_generative_fill`・`photoshop_generative_remove`・`photoshop_generative_expand`・`photoshop_generative_upscale`・`photoshop_sky_replacement`・`photoshop_generate_image`(ExtendScript経由のFirefly;Adobeアカウント+クレジットが必要)。
138
+ - **ニューラルフィルター** — オプションのUXPブリッジプラグイン(`uxp-plugin/`)経由の`photoshop_neural_filter`。
139
+ - **状態とプレビュー** — `photoshop_get_state`(軽量スナップショット)・`photoshop_get_preview`(ビジョン確認用のBase64 JPEG)・`photoshop_get_capabilities`(バージョン対応の機能フラグ)。
140
+ - **構造化エラー** — 失敗時に`code`と`suggested_next_tool`を含むJSONエンベロープを返し、自己修正を支援します。
141
+
142
+ 完全なリファレンス:[`docs/prompt-layer.md`](docs/prompt-layer.md)
143
+
144
+ パリティ確認:`npm run verify:photoshop-prompts`。最新の結果:[`docs/development.md#integration-test-results`](docs/development.md#integration-test-results)
145
+
146
+ ## プロンプト例
147
+
148
+ 以下はこのMCPサーバーを設定したAIアシスタント(Claude、Cursorなど)で使用できるプロンプト例です。複数ステップの作業には**レシピツール**(`photoshop_recipe_*`)を優先してください。各レシピは1つのUndoステップです。レシピでカバーできない細かい編集にのみアトミックな`photoshop_*`ツールを使用してください。
149
+
150
+ <details>
151
+ <summary>🧠 状態認識セッション(最初の推奨ステップ)</summary>
152
+
153
+ ```
154
+ Photoshopにpingして、インストール済みバージョンの機能を読み取ってください。
155
+ 変更を加える前に現在のドキュメント状態を取得してください。
156
+ portrait.jpgを開き、縮小プレビューを取得して被写体を確認してください。
157
+ 主要なレシピを実行するたびに、結果確認のためプレビューをもう一度取得してください。
158
+ ```
159
+
160
+ </details>
161
+
162
+ <details>
163
+ <summary>👤 ポートレートリタッチ(レシピ)</summary>
164
+
165
+ ```
166
+ アクティブなレイヤーのポートレートを中程度の強度と肌のスムージングで強調してください。
167
+ enhance-portrait recipeを使用してください — 周波数分離+自動トーンを1つのUndoステップにまとめてください。
168
+ アクティブなレイヤーがテキストまたはSmart Objectの場合は、先にラスタライズするかラスターレイヤーを選んでください。
169
+ 完了したらプレビューを表示してください。
170
+ ```
171
+
172
+ 対応するMCPプロンプトテンプレート:`ps.enhance_portrait`(`{ intensity: "medium", skin_smoothing: "true" }`)
173
+
174
+ </details>
175
+
176
+ <details>
177
+ <summary>✂️ 背景削除(レシピ)</summary>
178
+
179
+ ```
180
+ アクティブなポートレートレイヤーから背景を削除してください。
181
+ Select Subjectとフェザー2pxのレイヤーマスクを使用してください。マスクの後ろにオリジナルのピクセルを保持してください。
182
+ briefでRGB(255,255,255)の白背景が必要な場合は、被写体をセンタリングして画像面積の70%以上を占めるようにしてください。
183
+ 被写体はアクティブなレイヤーにある必要があります — べた塗りフィルレイヤーは不可です。
184
+ ```
185
+
186
+ 対応するMCPプロンプトテンプレート:`ps.remove_background`(`{ feather_px: "2", keep_shadow: "false" }`)
187
+
188
+ </details>
189
+
190
+ <details>
191
+ <summary>🎨 カラーグレーディング(レシピ)</summary>
192
+
193
+ ```
194
+ 開いているドキュメントにウォームフィルムのカラーグレードを非破壊調整レイヤーとして適用してください。
195
+ apply-color-grade recipeをプリセットwarm_filmで使用してください。
196
+ 完了したら結果をプレビューしてください。
197
+ ```
198
+
199
+ </details>
200
+
201
+ <details>
202
+ <summary>🔬 周波数分離のセットアップ(レシピ)</summary>
203
+
204
+ ```
205
+ アクティブなラスターレイヤーにブラー半径6pxで周波数分離をセットアップしてください。
206
+ LowレイヤーとHighレイヤーへの描き込みは自分で行います — 追加のスムージングは適用しないでください。
207
+ レイヤースタックの準備ができたら、どのレイヤーを編集すべきか教えてください。
208
+ ```
209
+
210
+ 対応するMCPプロンプトテンプレート:`ps.frequency_separation`(`{ radius_px: "6" }`)
211
+
212
+ </details>
213
+
214
+ <details>
215
+ <summary>🌐 Web向け準備+ソーシャルエクスポート(レシピ)</summary>
216
+
217
+ ```
218
+ アクティブなドキュメントをWeb向けに準備してください:sRGB変換、縮小、シャープネス処理を行い、最適化したJPEGを~/.photoshop-mcp/exportsにエクスポートしてください。
219
+ 続いて以下の形式で別々のJPEGをエクスポートしてください:
220
+ Instagramフィード(1080×1350)、Stories/Reels(1080×1920)、LinkedIn(1200×628)、X投稿(1200×675)。
221
+ 出力パスを表にして一覧表示してください。
222
+ ```
223
+
224
+ 対応するテンプレート:`ps.prepare_for_web`・`ps.export_social_variants`
225
+
226
+ </details>
227
+
228
+ <details>
229
+ <summary>📦 バッチモックアップ置換(レシピ)</summary>
230
+
231
+ ```
232
+ 「Screen」という名前のSmart ObjectレイヤーがあるモックアップPSDを開いています。
233
+ ~/assets/mockups/内のすべてのPNG/JPGで置換し、アセットごとに1枚JPEGをエクスポートしてください。
234
+ フラットなレイヤーは配置せず、パースを維持するためにSmart Objectを差し替えてください。
235
+ ```
236
+
237
+ 対応するMCPプロンプトテンプレート:`ps.batch_mockup_replace`
238
+
239
+ </details>
240
+
241
+ <details>
242
+ <summary>🗂️ レイヤーの整理(レシピ)</summary>
243
+
244
+ ```
245
+ レイヤースタックを整理してください:種類ごとにリネームし、関連するレイヤーを自動グループ化し、オリジナルを保持してください。
246
+ organize-layers recipeを実行して、新しい構造を確認できるようにレイヤーをリストアップしてください。
247
+ ```
248
+
249
+ </details>
250
+
251
+ <details>
252
+ <summary>🎨 基本的なデザイン作成</summary>
253
+
254
+ ```
255
+ RGBカラーモードで1920×1080のPhotoshopドキュメントを作成してください。
256
+ 薄い青の背景レイヤーを追加し、RGB(240, 248, 255)で塗りつぶしてください。
257
+ 中央に「Welcome」という64ptフォントのテキストを追加してください。
258
+ デスクトップにwelcome.psdとして保存してください。
259
+ ```
260
+
261
+ </details>
262
+
263
+ <details>
264
+ <summary>🖼️ ストック画像デザイン(Pexels MCPと連携)</summary>
265
+
266
+ ```
267
+ Pexelsで「mountain sunset」の画像を検索してください。
268
+ 1920×1080のPhotoshopドキュメントを作成してください。
269
+ ダウンロードした画像を配置し、キャンバス全体に収まるようにフィットさせてください。
270
+ 3pxのガウスぼかしを適用してください。
271
+ 明るさを15、コントラストを10上げてください。
272
+ 72ptの白いテキスト「Adventure Awaits」を上部中央に追加してください。
273
+ テキストの不透明度を90%、ブレンドモードをOVERLAYに設定してください。
274
+ 品質10でadventure.jpgとして保存してください。
275
+ ```
276
+
277
+ </details>
278
+
279
+ <details>
280
+ <summary>✨ 写真補正</summary>
281
+
282
+ ```
283
+ デスクトップからphoto.jpgをPhotoshopで開いてください。
284
+ 状態を取得してから、enhance-portrait recipeを低い強度で実行してください。
285
+ 簡単なトーン調整だけが必要な場合は、代わりにアクティブなレイヤーにオートレベル、オートコントラスト、アンシャープマスク(120%、1.5、0)を適用してください。
286
+ 色相を+15、彩度を+15調整するか、エクスポートの準備ができたらprepare-for-webを使用してください。
287
+ 品質12でenhanced-photo.jpgとして保存してください。
288
+ ```
289
+
290
+ </details>
291
+
292
+ <details>
293
+ <summary>🎭 レイヤーエフェクト&ブレンディング</summary>
294
+
295
+ ```
296
+ 1200×800のドキュメントを作成してください。
297
+ 「Background」という名前の新しいレイヤーを追加し、RGB(50, 50, 50)で塗りつぶしてください。
298
+ logo.pngを位置(100, 100)に配置してください。
299
+ ロゴレイヤーを現在のサイズの50%にスケールしてください。
300
+ ブレンドモードをSCREEN、不透明度を85%に設定してください。
301
+ 別のレイヤーを追加してRGB(255, 100, 50)で塗りつぶしてください。
302
+ このレイヤーのブレンドモードをMULTIPLY、不透明度を60%に設定してください。
303
+ 表示中のレイヤーをすべて結合してください。
304
+ composite.psdとして保存してください。
305
+ ```
306
+
307
+ </details>
308
+
309
+ <details>
310
+ <summary>📝 テキストポスターデザイン</summary>
311
+
312
+ ```
313
+ 1080×1350の縦長ドキュメントを作成してください(Instagramストーリーサイズ)。
314
+ レイヤーを追加してグラデーション風の色RGB(120, 40, 200)で塗りつぶしてください。
315
+ 位置(540, 300)に96ptで「SUMMER」テキストを追加してください。
316
+ テキストカラーをホワイトRGB(255, 255, 255)に変更してください。
317
+ テキストの配置をCENTERに設定してください。
318
+ 位置(540, 450)に128pt、ホワイトで「2026」テキストをもう一つ追加してください。
319
+ 背景レイヤーに2pxのガウスぼかしを適用してください。
320
+ summer-poster.pngとして保存してください。
321
+ ```
322
+
323
+ </details>
324
+
325
+ <details>
326
+ <summary>🎬 バッチ処理</summary>
327
+
328
+ ```
329
+ image1.jpgを開いてください。
330
+ 1920×1080にリサイズしてください。
331
+ オートコントラストを適用してください。
332
+ 控えめなシャープネスを適用してください(量80%、半径1.0)。
333
+ 品質10でprocessed-1.jpgとして保存してください。
334
+ オリジナルへの変更を保存せずに閉じてください。
335
+
336
+ image2.jpgとimage3.jpgでも同じ手順を繰り返してください。
337
+ ```
338
+
339
+ </details>
340
+
341
+ <details>
342
+ <summary>🖌️ クリエイティブ加工</summary>
343
+
344
+ ```
345
+ 2000×2000の正方形ドキュメントを作成してください。
346
+ abstract-pattern.jpgを配置してドキュメント全体に収まるようにフィットさせてください。
347
+ レイヤーを複製してください。
348
+ 複製レイヤーに45度、半径50pxのモーションブラーを適用してください。
349
+ ブレンドモードをOVERLAY、不透明度を70%に設定してください。
350
+ 120ptの白で「MOTION」テキストを中央に追加してください。
351
+ (200, 200)から(1800, 1800)への矩形選択を作成してください。
352
+ 選択範囲を反転して削除してください(ボーダーエフェクト作成)。
353
+ 画像をフラット化してください。
354
+ motion-art.jpgとして保存してください。
355
+ ```
356
+
357
+ </details>
358
+
359
+ <details>
360
+ <summary>🎯 高度なワークフロー</summary>
361
+
362
+ ```
363
+ 印刷用に300DPIで3000×2000のドキュメントを作成してください。
364
+ hero-image.jpgを配置してキャンバスに合わせてフィットさせてください。
365
+ 画像レイヤーを複製してください。
366
+ 複製レイヤーを完全にグレースケール化してください。
367
+ ブレンドモードをLUMINOSITY、不透明度を50%に設定してください。
368
+ 「Overlay」という名前の新しいレイヤーを作成してください。
369
+ RGB(255, 150, 0)で塗りつぶし、ブレンドモードをSOFTLIGHT、不透明度30%に設定してください。
370
+ 上部中央(1500, 200)に96ptで「PORTFOLIO」テキストを追加してください。
371
+ テキストカラーをホワイトに設定してください。
372
+ (1500, 320)に36ptで「2026 Collection」サブテキストを追加してください。
373
+ テキストエリアを囲む矩形選択を作成してください。
374
+ オーバーレイレイヤーにレイヤーマスクを作成してください。
375
+ 表示中のレイヤーを結合してください。
376
+ portfolio-cover.psdとして保存してください。
377
+ 品質12でportfolio-cover.jpgとしてエクスポートしてください。
378
+ ```
379
+
380
+ </details>
381
+
382
+ <details>
383
+ <summary>🔄 アクションの使用</summary>
384
+
385
+ ```
386
+ my-photo.jpgを開いてください。
387
+ 「My Actions」セットから「Vintage Look」アクションを再生してください。
388
+ 明るさを-10に調整して少し暗くしてください。
389
+ vintage-photo.jpgとして保存してください。
390
+ ```
391
+
392
+ </details>
393
+
394
+ <details>
395
+ <summary>⚡ カスタムスクリプトの実行</summary>
396
+
397
+ ```
398
+ 以下のカスタムExtendScriptコードを実行してください:
399
+ app.beep();
400
+ alert('Processing started!');
401
+ ```
402
+
403
+ </details>
404
+
405
+ <details>
406
+ <summary>⏮️ 元に戻す/やり直し操作</summary>
407
+
408
+ ```
409
+ アクティブなレイヤーに15pxのガウスぼかしを適用してください。
410
+ [結果を待つ]
411
+ やはりぼかしが強すぎます。元に戻してください。
412
+ 代わりに5pxのガウスぼかしを適用してください。
413
+ ```
414
+
415
+ または:
416
+
417
+ ```
418
+ どの操作が実行されたかを確認するために履歴状態を取得してください。
419
+ 最後の3つの操作を元に戻してください。
420
+ 1ステップやり直して1つの操作を戻してください。
421
+ ```
422
+
423
+ </details>
424
+
425
+ <details>
426
+ <summary>🔁 エラー回復(構造化エンベロープ)</summary>
427
+
428
+ ```
429
+ レシピがversion_unsupportedまたはgenerative_unavailableを返した場合は、get_capabilitiesを呼び出してどのPhotoshop機能が不足しているか教えてください。
430
+ ツールがsuggested_next_toolで失敗した場合は、そのヒントに従ってください(例:ラスターのみのレシピの前にrasterize_layerを実行するなど)。
431
+ 推測は禁止です — 失敗後にget_stateを読み取り、次の単一ステップを提案してください。
432
+ ```
433
+
434
+ </details>
435
+
436
+ <details>
437
+ <summary>📱 ソーシャルメディア用フォーマットキット</summary>
438
+
439
+ ```
440
+ 1:1のキービジュアルマスター(2000×2000 px)が開いています。
441
+ prepare-for-web recipeでアクティブなドキュメントをsRGBに変換し、最適化したJPEGを~/.photoshop-mcp/exportsにエクスポートしてください。
442
+ さらにInstagramフィード(1080×1350)、Stories/Reels(1080×1920、上下のセーフゾーン)、LinkedIn(1200×628)、横長バナー(1200×628)のバリアントをエクスポートしてください。
443
+ 9:16フォーマットで被写体が切れる場合のみphotoshop_generative_expandを使用してください。
444
+ 被写体は画像面積の最低60%、ロゴは右上に20pxのマージンを設けてください。
445
+ すべての出力パスを表にして一覧表示してください。
446
+ ```
447
+
448
+ 対応するテンプレート:`ps.prepare_for_web`・`ps.export_social_variants`
449
+
450
+ </details>
451
+
452
+ <details>
453
+ <summary>🖨️ 印刷入稿データ(CMYK / 塗り足し)</summary>
454
+
455
+ ```
456
+ アクティブなドキュメントをオフセット印刷向けに準備してください:
457
+ RGBをCMYKに変換し、プロファイルはISO Coated v2を使用してください。
458
+ 全辺に3mmの塗り足しを設定し、最終サイズでの解像度が300dpi以上であることを確認してください。
459
+ 印刷プロファイルでソフトプルーフを設定して色ずれの可能性を指摘してください。
460
+ ベタ黒の大きな面積はC50 M20 Y20 K100のリッチブラックに、テキストはK100のみにしてください。
461
+ 埋め込みプロファイル付きのPDF/X-4としてエクスポートし、プレビューを表示してください。
462
+ ```
463
+
464
+ </details>
465
+
466
+ <details>
467
+ <summary>🛍️ 生成塗りつぶしによる商品シーン</summary>
468
+
469
+ ```
470
+ 背景除去済みの商品PNGがアクティブなレイヤーにあります。
471
+ photoshop_generative_fillで3つの異なるシーンを作成してください:暖かい光の室内、夕暮れの屋外、水滴のある反射面。
472
+ 各バリアントはphotoshop_generative_expandで1080×1350(4:5)に拡張し、商品を中央に保ってください。
473
+ 各シーンの後にプレビューを取得し、影とパースを確認してください。
474
+ generative_unavailableの場合はget_capabilitiesを呼び出し、不足している機能を教えてください。
475
+ ```
476
+
477
+ </details>
478
+
479
+ <details>
480
+ <summary>🎨 統一カラーグレーディング</summary>
481
+
482
+ ```
483
+ 同じプロジェクトの30枚の写真があり、照明がそれぞれ異なります。
484
+ apply-color-grade recipeとwarm_filmプリセットを、非破壊的な調整レイヤーとして適用してください。
485
+ 必要に応じてカーブと色相・彩度を調整し、温かみのあるシネマティックなルックにしてください:冷たい影、金色のハイライト。
486
+ 各画像を幅1080px、sRGB、JPEG品質85で~/.photoshop-mcp/exports/grade/にエクスポートするアクションを準備してください。
487
+ 代表的な3枚でビフォー・アフターのプレビューを表示してください。
488
+ ```
489
+
490
+ 対応するMCPテンプレート:`ps.apply_color_grade`(`{ preset: "warm_film" }`)
491
+
492
+ </details>
493
+
494
+ <details>
495
+ <summary>🏢 ブランドモックアップ一括</summary>
496
+
497
+ ```
498
+ 名刺、A4文書、パッケージ、ソーシャルプロフィール用のSmart ObjectがあるモックアップPSDを開いています。
499
+ ~/assets/brand/のアセットで各Smart Objectを置換してください — レイヤーを統合せず、パースと影を保持してください。
500
+ batch_mockup_replace recipeを実行し、バリアントごとに1枚JPEGを~/.photoshop-mcp/exports/mockups/にエクスポートしてください。
501
+ すべての出力パスを表にして一覧表示してください。
502
+ ```
503
+
504
+ 対応するテンプレート:`ps.batch_mockup_replace`
505
+
506
+ </details>
507
+
508
+ <details>
509
+ <summary>🏷️ マスターからのマルチバリアント書き出し</summary>
510
+
511
+ ```
512
+ 1:1のマスタークリエイティブと~/assets/logos/内の複数のロゴがあります。
513
+ 各バリアントについて、同一PSDからStory 9:16、Feed 4:5、バナー1200×628をエクスポートしてください — ロゴとテキストにはSmart Objectを使用してください。
514
+ ファイル名はバリアント_フォーマット.jpgとし、すべて~/.photoshop-mcp/exports/variants/に保存してください。
515
+ ステップが失敗した場合はget_stateを読み取り、次の単一ステップのみを提案してください。
516
+ 完了後、すべてのパスを表にして一覧表示してください。
517
+ ```
518
+
519
+ </details>
520
+
521
+ ## 機能
522
+
523
+ - **スタンドアロンWebUI** — ローカルチャットインターフェイス(`photoshop-mcp-ui`);プロバイダーごとにAPIキーまたはCLIサブスクリプション認証(Anthropic、Google)
524
+ - **Action Plan(ベータ)** — WebUIのオプトイン計画→実行モード(APIキーのみ):1回の計画呼び出し、直接ツール実行、失敗時の限定的修復
525
+ - **WindowsとmacOSの両方で動作**
526
+ - **Photoshop 2012〜2025+をサポート**
527
+ - **ExtendScript API**:AppleScript/COM自動化による汎用互換性
528
+ - **自動検出**:システム上のPhotoshopインストールを自動で検出
529
+ - **86ツール**:アトミック`photoshop_*` 74個+レシピ`photoshop_recipe_*` 12個
530
+ - **AI/プロンプトレイヤー**:MCPプロンプトテンプレート19個(レシピ12+ガイド7)、サーバーInstructions、状態・プレビュー・機能ツール
531
+ - **ドキュメント管理**:作成、開く、保存、閉じる、トリミング
532
+ - **レイヤー操作**:作成、削除、複製、結合、変形
533
+ - **レイヤープロパティ**:不透明度、ブレンドモード、表示/非表示、ロック
534
+ - **テキスト書式設定**:フォント、サイズ、カラー、配置
535
+ - **画像配置**:画像の配置、ファイルを開く、ドキュメントに合わせる
536
+ - **フィルター**:ガウスぼかし、シャープネス、ノイズ、モーションブラー
537
+ - **カラー調整**:明るさ/コントラスト、色相/彩度、曲線、オートレベル/コントラスト
538
+ - **選択範囲とマスク**:矩形選択、被写体を選択、コンテンツに応じた塗りつぶし、グラデーションマスク、レイヤーマスク
539
+ - **履歴管理**:元に戻す/やり直し操作、履歴状態の表示
540
+ - **アクション**:記録済みアクションの再生、カスタムスクリプトの実行
541
+ - **自動ラスタライズ**:フィルター適用時に必要に応じてレイヤーを自動変換
542
+ - **コンテキストトラッキング**:各操作後にドキュメント/レイヤー状態を返し、AIアシスタントのコンテキスト認識を支援
543
+
544
+ ## インストール
545
+
546
+ ### NPXを使用(推奨)
547
+
548
+ インストールは不要です!MCPクライアントを設定するだけです:
549
+
550
+ ```bash
551
+ npx @alisaitteke/photoshop-mcp
552
+ ```
553
+
554
+ ローカルでリポジトリを開発する場合は、開発ガイドの[ソースから](docs/development.md#from-source)を参照してください。
555
+
556
+ ## 設定
557
+
558
+ ### Cursor向け
559
+
560
+ Cursorの設定に追加してください(`.cursor/config.json`またはワークスペース設定):
561
+
562
+ ```json
563
+ {
564
+ "mcpServers": {
565
+ "photoshop": {
566
+ "command": "npx",
567
+ "args": ["-y", "@alisaitteke/photoshop-mcp"],
568
+ "env": {
569
+ "LOG_LEVEL": "1"
570
+ }
571
+ }
572
+ }
573
+ }
574
+ ```
575
+
576
+ ### Claude Desktop向け
577
+
578
+ Claude Desktopの設定に追加してください(macOSは`~/Library/Application Support/Claude/claude_desktop_config.json`、Windowsは`%APPDATA%\Claude\claude_desktop_config.json`):
579
+
580
+ ```json
581
+ {
582
+ "mcpServers": {
583
+ "photoshop": {
584
+ "command": "npx",
585
+ "args": ["-y", "@alisaitteke/photoshop-mcp"],
586
+ "env": {
587
+ "LOG_LEVEL": "1"
588
+ }
589
+ }
590
+ }
591
+ }
592
+ ```
593
+
594
+ ### 環境変数
595
+
596
+ - `PHOTOSHOP_PATH`:(オプション)Photoshopのカスタムインストールパスを指定
597
+ - `LOG_LEVEL`:ログレベル(0=DEBUG、1=INFO、2=WARN、3=ERROR)
598
+ - `ANALYTICS_DISABLED`:`1`または`true`に設定して匿名使用状況の解析を完全に無効化
599
+ - `POSTHOG_DISABLED`:`ANALYTICS_DISABLED`の旧エイリアス
600
+ - `ANALYTICS_PROVIDER`:解析バックエンド — `mixpanel`(デフォルト)または`posthog`(ロールバック)
601
+ - `MIXPANEL_TOKEN`:(オプション)Mixpanelプロジェクトトークンを上書き
602
+ - `MIXPANEL_API_HOST`:(オプション)Mixpanelインジェストホスト(デフォルト:`https://api-eu.mixpanel.com`)
603
+ - `POSTHOG_KEY`:(オプション、旧仕様)PostHogプロジェクトキー — `ANALYTICS_PROVIDER=posthog`の場合のみ使用
604
+ - `POSTHOG_API_HOST`:(オプション、旧仕様)PostHogインジェストホスト(デフォルト:`https://a.alisait.com`)
605
+ - `POSTHOG_UI_HOST`:(オプション、旧仕様)PostHog UIホスト(デフォルト:`https://eu.posthog.com`)
606
+
607
+ ## 利用可能なツール
608
+
609
+ すべてのアトミック`photoshop_*`ツールの完全なリファレンス(パラメーター、例、使用方法):[`docs/available-tools.md`](docs/available-tools.md)
610
+
611
+ ## コンテキストトラッキング
612
+
613
+ 各ツールはPhotoshopの現在の状態に関する包括的なコンテキスト情報を返します:
614
+
615
+ - **ドキュメント情報**:名前、サイズ、解像度、カラーモード、レイヤー数
616
+ - **アクティブレイヤー情報**:名前、タイプ、不透明度、ブレンドモード、表示状態、ロック状態
617
+ - **選択範囲の状態**:選択範囲がアクティブかどうか
618
+ - **操作結果**:変更内容の詳細
619
+
620
+ これにより、AIアシスタントは以下を把握し続けられます:
621
+ - どのドキュメントがアクティブか
622
+ - どのレイヤーで作業しているか
623
+ - 現在のレイヤープロパティ(不透明度、ブレンドモードなど)
624
+ - ドキュメントのサイズと設定
625
+
626
+ **レスポンス例:**
627
+ ```javascript
628
+ {
629
+ "applied": true,
630
+ "filter": "Gaussian Blur",
631
+ "radius": 10,
632
+ "wasRasterized": true,
633
+ "context": {
634
+ "hasDocument": true,
635
+ "document": {
636
+ "name": "design.psd",
637
+ "width": 1920,
638
+ "height": 1080,
639
+ "resolution": 72,
640
+ "colorMode": "RGBColorMode",
641
+ "layerCount": 3,
642
+ "hasSelection": false
643
+ },
644
+ "activeLayer": {
645
+ "name": "Background",
646
+ "kind": "NORMAL",
647
+ "opacity": 100,
648
+ "blendMode": "NORMAL",
649
+ "visible": true,
650
+ "locked": false,
651
+ "isBackground": false
652
+ }
653
+ }
654
+ }
655
+ ```
656
+
657
+ このコンテキストにより、AIアシスタントは複数のコマンドにわたって作業中のドキュメントとレイヤーを記憶します。
658
+
659
+ ---
660
+
661
+ ## プラットフォーム固有の注意事項
662
+
663
+ ### Windows
664
+
665
+ - COM自動化を使用してPhotoshopと通信します
666
+ - レジストリベースのインストールパス自動検出
667
+ - 32ビットと64ビットの両バージョンをサポート
668
+
669
+ ### macOS
670
+
671
+ - Photoshopの通信にAppleScript/OSAを使用します
672
+ - Spotlightベースの自動検出
673
+ - 複数のPhotoshopバージョンの同時インストールをサポート
674
+ - **CLIアカウント認証**(スタンドアロンUI)はmacOS優先:ターミナルで`claude auth login` / `gemini auth login`を実行し、クレデンシャルは`~/.claude/`と`~/.gemini/`に保存されます
675
+
676
+ ## サポートされているPhotoshopバージョン
677
+
678
+ - **すべてのPhotoshopバージョン**(2012〜2025+):macOSはAppleScript、WindowsはCOM経由のExtendScript APIを使用
679
+
680
+ **重要:** Photoshop 2022以降はプラグイン向けにUXPをサポートしていますが、AppleScript/COM経由の外部自動化ではExtendScriptのみ使用できます。UXPは内部プラグイン向けに設計されており、外部スクリプトから呼び出すことはできません。そのため、このMCPサーバーはすべてのPhotoshopバージョンとの最大互換性のためにExtendScriptを使用しています。
681
+
682
+ ## トラブルシューティング
683
+
684
+ 接続、スクリプト、ログに関するよくある問題:[`docs/troubleshooting.md`](docs/troubleshooting.md)
685
+
686
+ ### スタンドアロンUI — CLIアカウント認証
687
+
688
+ | 症状 | 原因 | 対処法 |
689
+ |---|---|---|
690
+ | `cli_not_found` | Claude Code / Gemini CLIがインストールされていない | `npm i -g @anthropic-ai/claude-code`または`npm i -g @google/gemini-cli` |
691
+ | `not_authenticated` | OAuthセッションがない | ターミナルで`claude auth login`または`gemini auth login`を実行 |
692
+ | `claude` / `gemini`が`PATH`にない | カスタムインストール場所 | 設定 → **CLI path** → **Check connection** |
693
+ | IDEではチャットできるがUIでできない(CLIモード) | OAuthトークンはCLI専用 | UIで**CLIアカウント**を使用;APIキーとCLIセッションは別々 |
694
+ | Geminiのマルチターンが忘れっぽい | ヘッドレスCLIがターンごとに新しいセッションを開始する場合がある | 既知の制限;履歴はプロンプトに追記(MVP) |
695
+
696
+ ## 開発
697
+
698
+ ソースからのセットアップ、ビルド、リント、統合テスト(最新結果付き)、使用例:[`docs/development.md`](docs/development.md)
699
+
700
+ ## アーキテクチャ
701
+
702
+ システム設計、データフロー、プラットフォーム抽象化、UIエージェントモード:[`docs/architecture.md`](docs/architecture.md)
703
+
704
+ LinkedInやソーシャルメディアでシェアする際は、[`images/og-social.png`](images/og-social.png)と[`docs/social-preview.md`](docs/social-preview.md)をOGセットアップとポスト用テキストとしてご活用ください。
705
+
706
+ ## コントリビューション
707
+
708
+ コントリビューションを歓迎します!PRを開く前に[CONTRIBUTING.md](CONTRIBUTING.md)をお読みください。
709
+
710
+ ## メンテナーについて
711
+
712
+ **[Ali Sait Teke](https://alisait.com)** — フルスタックエンジニア&AI時代のソフトウェアアーキテクト
713
+ (Python、Go、Node.js、React、Next.js、Vue)
714
+
715
+ このプロジェクトは実践的な問いから始まりました:*脆弱な一発スクリプトなしに、LLMがPhotoshopを確実に操作できるようにするにはどうすればいいか?* それは80のツール、信頼性の高いマルチステップワークフロー向けのレシピ/プロンプトレイヤー、そしてクリエイティブな作業にIDEが不要なローカルWebUIを備えたMCPサーバーへと成長しました。
716
+
717
+ **このコードベースが示すもの:** TypeScriptシステム設計、MCPプロトコル統合、クロスプラットフォームデスクトップ自動化(macOS AppleScript / Windows COM)、エージェントループのための構造化エラー回復、プロダクション品質のlocal-first UI(Vue 3 + Hono + SQLite)。
718
+
719
+ - [Portfolio](https://alisait.com) · [GitHub](https://github.com/alisaitteke) · [LinkedIn](https://www.linkedin.com/in/alisait/)
720
+
721
+ ## ライセンス
722
+
723
+ MIT
724
+
725
+ ## 匿名使用状況の解析
726
+
727
+ 製品改善のために、デフォルトで匿名の集計使用イベントが収集されます。いつでもオプトアウトできます。詳細:[`docs/anonymous-usage-analytics.md`](docs/anonymous-usage-analytics.md)
728
+
729
+ ## 謝辞
730
+
731
+ - [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)を使用して構築
732
+ - Adobe Photoshopスクリプティングコミュニティに触発されて制作