@alisaitteke/photoshop-mcp 1.7.9 → 1.7.13
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.
- package/AGENTS.md +1 -1
- package/README.de.md +2 -0
- package/README.es.md +2 -0
- package/README.ja.md +2 -0
- package/README.md +2 -0
- package/README.tr.md +2 -0
- package/README.zh-CN.md +2 -0
- package/dist/analytics/context.d.ts.map +1 -1
- package/dist/analytics/context.js +15 -2
- package/dist/analytics/context.js.map +1 -1
- package/dist/ui/store/db.d.ts.map +1 -1
- package/dist/ui/store/db.js +17 -7
- package/dist/ui/store/db.js.map +1 -1
- package/package.json +6 -3
package/AGENTS.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
**Prerequisites:** Photoshop running on Windows or macOS, Node.js 18+. This is unofficial and not affiliated with Adobe.
|
|
16
16
|
|
|
17
|
-
**Tool surface:**
|
|
17
|
+
**Tool surface:** 116 MCP tools — 100 atomic `photoshop_*` + 16 recipe `photoshop_recipe_*`; 23 MCP prompt templates (`ps.*`).
|
|
18
18
|
|
|
19
19
|
## Architecture (agent view)
|
|
20
20
|
|
package/README.de.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
21
|
|
|
22
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
23
|
+
|
|
22
24
|
Ein Model Context Protocol (MCP)-Server, der KI-Assistenten wie Claude und Cursor ermöglicht, Adobe Photoshop programmatisch zu steuern. Damit lassen sich Designs erstellen, Bilder bearbeiten und Photoshop-Workflows mit natürlicher Sprache automatisieren – direkt aus der IDE heraus oder über die mitgelieferte **eigenständige Web-UI**, die sowohl API-Schlüssel als auch CLI-Abonnementkonten (Claude Code / Gemini CLI) unterstützt. Die UI bietet außerdem einen opt-in **Action Plan (Beta)**-Modus, der alle Photoshop-Schritte in einem einzigen LLM-Aufruf plant und dann in einem einzigen Durchgang ausführt.
|
|
23
25
|
|
|
24
26
|
## Warum dieses Projekt existiert
|
package/README.es.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
21
|
|
|
22
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
23
|
+
|
|
22
24
|
Un servidor Model Context Protocol (MCP) que permite a asistentes de IA como Claude y Cursor controlar Adobe Photoshop de forma programática. Esto permite crear diseños, manipular imágenes y automatizar flujos de trabajo de Photoshop mediante comandos en lenguaje natural mientras se trabaja en el IDE — o a través de la **interfaz web independiente** incluida, que admite tanto claves de API como cuentas de suscripción CLI (Claude Code / Gemini CLI). La UI también ofrece un modo **Action Plan (beta)** opt-in que planifica cada paso de Photoshop en una sola llamada al LLM y los ejecuta en un único paso.
|
|
23
25
|
|
|
24
26
|
## Por qué existe esto
|
package/README.ja.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
21
|
|
|
22
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
23
|
+
|
|
22
24
|
モデルコンテキストプロトコル(MCP)サーバーで、ClaudeやCursorなどのAIアシスタントがAdobe Photoshopをプログラム的に操作できます。IDEから自然言語でデザイン作成・画像編集・ワークフロー自動化が可能です。同梱の**スタンドアロンWebUI**ではAPIキーとCLIサブスクリプションアカウント(Claude Code / Gemini CLI)の両方に対応しています。UIにはオプトインの**Action Plan(ベータ)**モードもあり、すべてのPhotoshopステップを1回のLLM呼び出しで計画し、一括実行できます。
|
|
23
25
|
|
|
24
26
|
## このプロジェクトが存在する理由
|
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
[](https://mcptoplist.com/server/io.github.alisaitteke%2Fphotoshop-mcp)
|
|
19
19
|
[](https://photoshop-mcp.com/)
|
|
20
20
|
|
|
21
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
22
|
+
|
|
21
23
|
**Chat with Photoshop like a colleague.** Describe what you want in plain words —
|
|
22
24
|
"remove this background", "resize these for Instagram" — and your AI assistant
|
|
23
25
|
does the clicking for you. Works with Cursor, Claude, or the built-in chat
|
package/README.tr.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
21
|
|
|
22
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
23
|
+
|
|
22
24
|
Model Context Protocol (MCP) sunucusu; Claude ve Cursor gibi yapay zeka asistanlarının Adobe Photoshop'u programatik olarak kontrol etmesini sağlar. Bu sayede IDE'nizden doğal dil komutlarıyla tasarım oluşturabilir, görselleri düzenleyebilir ve Photoshop iş akışlarını otomatikleştirebilirsiniz. Ayrıca hem API anahtarlarını hem de CLI abonelik hesaplarını (Claude Code / Gemini CLI) destekleyen dahili **bağımsız web UI** üzerinden de çalışabilirsiniz. UI, isteğe bağlı **Action Plan (beta)** modunu da sunar: tüm Photoshop adımları tek bir LLM çağrısında planlanır, ardından tek seferde yürütülür.
|
|
23
25
|
|
|
24
26
|
## Neden bu proje var
|
package/README.zh-CN.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
[](https://www.typescriptlang.org/)
|
|
20
20
|
[]()
|
|
21
21
|
|
|
22
|
+
[](https://glama.ai/mcp/servers/alisaitteke/photoshop-mcp)
|
|
23
|
+
|
|
22
24
|
一个模型上下文协议(MCP)服务器,使 Claude 和 Cursor 等 AI 助手能够以编程方式控制 Adobe Photoshop。通过这个工具,您可以在 IDE 中使用自然语言命令创建设计、处理图像并自动化 Photoshop 工作流——或者通过捆绑的**独立 Web UI** 进行操作,后者同时支持 API 密钥和 CLI 订阅账户(Claude Code / Gemini CLI)。该 UI 还提供可选的 **Action Plan(测试版)** 模式,可在一次 LLM 调用中规划所有 Photoshop 步骤,然后一次性执行。
|
|
23
25
|
|
|
24
26
|
## 为何创建此项目
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/analytics/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/analytics/context.ts"],"names":[],"mappings":"AAkBA,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQnE"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import { loadConfig } from '../ui/config.js';
|
|
2
2
|
import { isAnalyticsEnabled, isBetaTelemetryOptIn } from './identity.js';
|
|
3
|
+
/** Default matches `DEFAULT_CONFIG.actionPlanBeta` when UI SQLite is unavailable. */
|
|
4
|
+
const DEFAULT_ACTION_PLAN_ENABLED = true;
|
|
5
|
+
/**
|
|
6
|
+
* UI Action Plan lives in SQLite. MCP stdio must still boot when native
|
|
7
|
+
* `better-sqlite3` bindings were skipped (pnpm 10, Glama, missing toolchain).
|
|
8
|
+
*/
|
|
9
|
+
function readActionPlanEnabled() {
|
|
10
|
+
try {
|
|
11
|
+
return Boolean(loadConfig().actionPlanBeta);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return DEFAULT_ACTION_PLAN_ENABLED;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
3
17
|
export function getServerAnalyticsContext() {
|
|
4
|
-
const config = loadConfig();
|
|
5
18
|
const analyticsEnabled = isAnalyticsEnabled();
|
|
6
19
|
return {
|
|
7
20
|
privacy_mode: !analyticsEnabled,
|
|
8
21
|
analytics_enabled: analyticsEnabled,
|
|
9
22
|
beta_telemetry_opt_in: isBetaTelemetryOptIn(),
|
|
10
|
-
action_plan_enabled:
|
|
23
|
+
action_plan_enabled: readActionPlanEnabled(),
|
|
11
24
|
};
|
|
12
25
|
}
|
|
13
26
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/analytics/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/analytics/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEzE,qFAAqF;AACrF,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,OAAO;QACL,YAAY,EAAE,CAAC,gBAAgB;QAC/B,iBAAiB,EAAE,gBAAgB;QACnC,qBAAqB,EAAE,oBAAoB,EAAE;QAC7C,mBAAmB,EAAE,qBAAqB,EAAE;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/ui/store/db.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/ui/store/db.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAWzE,wBAAgB,KAAK,IAAI,YAAY,CAepC;AAED,wBAAgB,OAAO,IAAI,IAAI,CAM9B;AA+BD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
|
package/dist/ui/store/db.js
CHANGED
|
@@ -5,22 +5,32 @@ import { getPhotoshopMcpHomeDir } from '../../lib/export-paths.js';
|
|
|
5
5
|
const DATA_DIR = getPhotoshopMcpHomeDir();
|
|
6
6
|
const DB_PATH = join(DATA_DIR, 'data.db');
|
|
7
7
|
let instance = null;
|
|
8
|
+
let loadError = null;
|
|
8
9
|
export function getDB() {
|
|
9
10
|
if (instance)
|
|
10
11
|
return instance;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
if (loadError)
|
|
13
|
+
throw loadError;
|
|
14
|
+
try {
|
|
15
|
+
mkdirSync(dirname(DB_PATH), { recursive: true, mode: 0o700 });
|
|
16
|
+
const db = new Database(DB_PATH);
|
|
17
|
+
db.pragma('journal_mode = WAL');
|
|
18
|
+
db.pragma('foreign_keys = ON');
|
|
19
|
+
migrate(db);
|
|
20
|
+
instance = db;
|
|
21
|
+
return db;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
loadError = err instanceof Error ? err : new Error(String(err));
|
|
25
|
+
throw loadError;
|
|
26
|
+
}
|
|
18
27
|
}
|
|
19
28
|
export function closeDB() {
|
|
20
29
|
if (instance) {
|
|
21
30
|
instance.close();
|
|
22
31
|
instance = null;
|
|
23
32
|
}
|
|
33
|
+
loadError = null;
|
|
24
34
|
}
|
|
25
35
|
function migrate(db) {
|
|
26
36
|
db.exec(`
|
package/dist/ui/store/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/ui/store/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAA2C,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE1C,IAAI,QAAQ,GAAwB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/ui/store/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAA2C,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE1C,IAAI,QAAQ,GAAwB,IAAI,CAAC;AACzC,IAAI,SAAS,GAAiB,IAAI,CAAC;AAEnC,MAAM,UAAU,KAAK;IACnB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,SAAS;QAAE,MAAM,SAAS,CAAC;IAC/B,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,QAAQ,GAAG,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,SAAS,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,EAAgB;IAC/B,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alisaitteke/photoshop-mcp",
|
|
3
|
-
"version": "1.7.
|
|
4
|
-
"description": "MCP server for Adobe Photoshop —
|
|
3
|
+
"version": "1.7.13",
|
|
4
|
+
"description": "MCP server for Adobe Photoshop — 116 tools (generative AI + recipes), standalone web UI. Control Photoshop from Cursor, Claude, or natural language.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -114,5 +114,8 @@
|
|
|
114
114
|
"typescript": "^5.7.3",
|
|
115
115
|
"vitest": "^4.1.10"
|
|
116
116
|
},
|
|
117
|
-
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
|
|
117
|
+
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319",
|
|
118
|
+
"pnpm": {
|
|
119
|
+
"onlyBuiltDependencies": ["esbuild"]
|
|
120
|
+
}
|
|
118
121
|
}
|