@flownex-ai/mcp-gpt-image-2 0.1.0 → 0.1.3

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.
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "mcp-gpt-image-2-plugins",
3
3
  "description": "FlowNex AI plugins for Claude Code and Claude Cowork — image generation, presentation imagery, and more.",
4
- "owner": { "name": "FlowNex AI", "url": "https://flownexai.com" },
5
- "plugins": [{
6
- "name": "gpt-image-2",
7
- "source": { "source": "npm", "package": "@flownex-ai/mcp-gpt-image-2" },
8
- "description": "Image generation with OpenAI gpt-image-2 via MCP",
9
- "version": "0.1.0"
10
- }]
4
+ "owner": {
5
+ "name": "FlowNex AI",
6
+ "url": "https://flownexai.com"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "gpt-image-2",
11
+ "source": {
12
+ "source": "npm",
13
+ "package": "@flownex-ai/mcp-gpt-image-2"
14
+ },
15
+ "description": "Image generation with OpenAI gpt-image-2 via MCP",
16
+ "version": "0.1.3"
17
+ }
18
+ ]
11
19
  }
@@ -2,12 +2,22 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "gpt-image-2",
4
4
  "description": "Image generation with OpenAI gpt-image-2 — works in Claude Code and Claude Cowork",
5
- "version": "0.1.0",
6
- "author": { "name": "FlowNex AI", "url": "https://flownexai.com" },
5
+ "version": "0.1.3",
6
+ "author": {
7
+ "name": "FlowNex AI",
8
+ "url": "https://flownexai.com"
9
+ },
7
10
  "homepage": "https://github.com/FlowNex-AI/gpt-image-2-mcp",
8
11
  "repository": "https://github.com/FlowNex-AI/gpt-image-2-mcp",
9
12
  "license": "MIT",
10
- "keywords": ["openai", "gpt-image-2", "image-generation", "mcp", "cowork", "claude-code"],
13
+ "keywords": [
14
+ "openai",
15
+ "gpt-image-2",
16
+ "image-generation",
17
+ "mcp",
18
+ "cowork",
19
+ "claude-code"
20
+ ],
11
21
  "userConfig": {
12
22
  "OPENAI_API_KEY": {
13
23
  "type": "string",
package/.mcp.json CHANGED
@@ -3,11 +3,14 @@
3
3
  "gpt-image-2": {
4
4
  "command": "node",
5
5
  "args": ["${CLAUDE_PLUGIN_ROOT}/dist/index.js"],
6
+ "timeout": 300000,
6
7
  "env": {
7
8
  "OPENAI_API_KEY": "${user_config.OPENAI_API_KEY}",
8
9
  "OPENAI_IMAGE_MODEL": "${user_config.OPENAI_IMAGE_MODEL}",
9
10
  "MCP_GPT_IMAGE_2_OUTPUT_DIR": "${user_config.MCP_GPT_IMAGE_2_OUTPUT_DIR}",
10
- "MCP_GPT_IMAGE_2_INLINE_IMAGE": "${user_config.MCP_GPT_IMAGE_2_INLINE_IMAGE}"
11
+ "MCP_GPT_IMAGE_2_INLINE_IMAGE": "${user_config.MCP_GPT_IMAGE_2_INLINE_IMAGE}",
12
+ "MCP_TIMEOUT": "300000",
13
+ "MCP_SERVER_REQUEST_TIMEOUT": "300000"
11
14
  }
12
15
  }
13
16
  }
package/README.md CHANGED
@@ -26,26 +26,28 @@ Get one from [OpenAI Platform](https://platform.openai.com/api-keys). OpenAI gat
26
26
  ### A) In Claude Code (recommended)
27
27
 
28
28
  ```bash
29
- # 1. Add the marketplace (pulls .claude-plugin/marketplace.json from this repo)
29
+ # 1. Add the marketplace
30
30
  claude plugin marketplace add FlowNex-AI/gpt-image-2-mcp
31
31
 
32
- # 2. Install the plugin from that marketplace
32
+ # 2. Install (pulls @flownex-ai/mcp-gpt-image-2 from npm)
33
33
  claude plugin install gpt-image-2@mcp-gpt-image-2-plugins
34
34
  ```
35
35
 
36
- The plugin prompts for your `OPENAI_API_KEY` on install (declared via `userConfig` in `plugin.json`, stored in your system keychain). The bundled MCP server (`dist/index.js`) runs from the cloned repo — no npm publish needed.
36
+ The plugin prompts for your `OPENAI_API_KEY` on install (declared via `userConfig` in `plugin.json`, stored in the system keychain).
37
37
 
38
38
  Alternative: inside Claude Code, run `/plugin` for an interactive picker.
39
39
 
40
40
  ### B) In Claude Cowork
41
41
 
42
- Cowork reads the same plugin format:
42
+ Cowork installs plugins from npm. The package is published as **`@flownex-ai/mcp-gpt-image-2`**.
43
43
 
44
- 1. Open Cowork **Browse plugins** → **Upload custom plugin**, and point it at this repo (or its zipped release). Cowork picks up `.claude-plugin/plugin.json`, the bundled MCP server in `.mcp.json`, and the skills under `skills/`.
45
- 2. When prompted, paste your `OPENAI_API_KEY` (the same `userConfig` prompt as in Code).
46
- 3. The `generate-image` and `powerpoint-images` skills become available — try *"make me a hero image for slide 1 of my QBR deck"*.
44
+ 1. Open the Claude desktop app → **Cowork** tab.
45
+ 2. Sidebar **Customize** **Browse plugins** **Add custom plugin** (or **Install from npm**).
46
+ 3. Paste the package name: `@flownex-ai/mcp-gpt-image-2`
47
+ 4. When prompted, paste your `OPENAI_API_KEY` (driven by `userConfig` in `plugin.json`, stored in the system keychain).
48
+ 5. The `generate-image` and `powerpoint-images` skills become available — try *"make me a hero image for slide 1 of my QBR deck"*.
47
49
 
48
- For org-wide MDM deployments, drop this repo into the org-plugins directory documented in the Cowork enterprise admin guide.
50
+ For org-wide MDM deployments, place the unpacked plugin folder under `/Library/Application Support/Claude/org-plugins/` (macOS) or `C:\ProgramData\Claude\org-plugins\` (Windows) and allowlist the MCP server in your MDM policy.
49
51
 
50
52
  ### C) Manual MCP config (skip the plugin)
51
53
 
@@ -96,9 +98,11 @@ The tools will be available after restart.
96
98
 
97
99
  ## Tools
98
100
 
101
+ All generation/edit tools are **asynchronous**: they return a `jobId` in <1s and run the OpenAI call in the background. Poll `check_image_job(jobId)` every ~5s for the result. This avoids MCP `-32001 Request timed out` errors when generations take longer than 60s (e.g. `quality: "high"` at 2K can take 60–180s).
102
+
99
103
  ### `generate_image`
100
104
 
101
- Generate a new image from a text prompt.
105
+ Start a new image generation from a text prompt. Returns a `jobId` immediately.
102
106
 
103
107
  | Parameter | Type | Default | Description |
104
108
  |-----------|------|---------|-------------|
@@ -112,7 +116,7 @@ Generate a new image from a text prompt.
112
116
 
113
117
  ### `edit_image`
114
118
 
115
- Edit an existing image file. Same parameters as `generate_image`, plus:
119
+ Start editing an existing image file. Returns a `jobId` immediately. Same parameters as `generate_image`, plus:
116
120
 
117
121
  | Parameter | Type | Description |
118
122
  |-----------|------|-------------|
@@ -122,7 +126,17 @@ Edit an existing image file. Same parameters as `generate_image`, plus:
122
126
 
123
127
  ### `continue_editing`
124
128
 
125
- Continue editing the last generated/edited image. Same parameters as `edit_image` minus `imagePath` (uses the last image automatically).
129
+ Continue editing the last generated/edited image (also async). Same parameters as `edit_image` minus `imagePath`.
130
+
131
+ ### `check_image_job`
132
+
133
+ Poll the status of a job started by `generate_image`, `edit_image`, or `continue_editing`.
134
+
135
+ | Parameter | Type | Description |
136
+ |-----------|------|-------------|
137
+ | `jobId` | string | (required) The jobId returned by the start tool |
138
+
139
+ Returns `status: pending` (poll again in ~5s), `status: completed` with the saved file path + optional inline base64, or `status: failed` with an error message. Jobs are retained for 30 minutes after completion.
126
140
 
127
141
  ### `get_configuration_status`
128
142
 
package/dist/index.js CHANGED
@@ -29,6 +29,9 @@ const ALLOWED_IMAGE_EXTENSIONS = new Set([".png", ".jpg", ".jpeg", ".webp"]);
29
29
  const MAX_IMAGE_FILE_SIZE = 50 * 1024 * 1024; // 50 MB
30
30
  const MAX_NUMBER_OF_IMAGES = 4;
31
31
  const MAX_REFERENCE_IMAGES = 16;
32
+ const MAX_JOBS_RETAINED = 32;
33
+ const JOB_RETENTION_MS = 30 * 60 * 1000;
34
+ const POLL_HINT_SECONDS = 5;
32
35
  // ---------------------------------------------------------------------------
33
36
  // Helpers
34
37
  // ---------------------------------------------------------------------------
@@ -157,6 +160,8 @@ class GptImage2MCP {
157
160
  server;
158
161
  openai = null;
159
162
  lastImagePath = null;
163
+ jobs = new Map();
164
+ nextJobNum = 1;
160
165
  constructor() {
161
166
  this.server = new Server({ name: "gpt-image-2", version: VERSION }, { capabilities: { tools: {} } });
162
167
  this.setupHandlers();
@@ -182,7 +187,7 @@ class GptImage2MCP {
182
187
  tools: [
183
188
  {
184
189
  name: "generate_image",
185
- description: "Generate a NEW image from text prompt using OpenAI gpt-image-2. Use this ONLY when creating a completely new image, not when modifying an existing one.",
190
+ description: "Start generating a NEW image with OpenAI gpt-image-2. Returns a jobId IMMEDIATELY (sub-second). The actual generation runs in the background (10–180s depending on size/quality). You MUST then call check_image_job(jobId) every ~5 seconds until status is \"completed\" — the result (file path, base64) is returned by check_image_job, not by this tool. Use this ONLY when creating a brand-new image, not when modifying an existing one.",
186
191
  inputSchema: {
187
192
  type: "object",
188
193
  properties: {
@@ -197,7 +202,7 @@ class GptImage2MCP {
197
202
  },
198
203
  {
199
204
  name: "edit_image",
200
- description: "Edit a SPECIFIC existing image file with OpenAI gpt-image-2, optionally using additional reference images. Use this when you have the exact file path of an image to modify.",
205
+ description: "Start editing a SPECIFIC existing image file with OpenAI gpt-image-2, optionally using additional reference images. Returns a jobId IMMEDIATELY; call check_image_job(jobId) every ~5 seconds until status is \"completed\".",
201
206
  inputSchema: {
202
207
  type: "object",
203
208
  properties: {
@@ -225,7 +230,7 @@ class GptImage2MCP {
225
230
  },
226
231
  {
227
232
  name: "continue_editing",
228
- description: "Continue editing the LAST image that was generated or edited in this session, optionally using additional reference images.",
233
+ description: "Start editing the LAST image that was generated or edited in this session, optionally using additional reference images. Returns a jobId IMMEDIATELY; call check_image_job(jobId) every ~5 seconds until status is \"completed\".",
229
234
  inputSchema: {
230
235
  type: "object",
231
236
  properties: {
@@ -247,6 +252,20 @@ class GptImage2MCP {
247
252
  required: ["prompt"],
248
253
  },
249
254
  },
255
+ {
256
+ name: "check_image_job",
257
+ description: "Poll the status of an image generation/edit job started by generate_image, edit_image, or continue_editing. Returns { status: \"pending\" } while the OpenAI call is still running, { status: \"completed\", ... } with the saved file path (and inline base64 if enabled) when ready, or { status: \"failed\", error } on error. Call this every 5–10 seconds; a single image takes 10–180s end-to-end depending on size/quality.",
258
+ inputSchema: {
259
+ type: "object",
260
+ properties: {
261
+ jobId: {
262
+ type: "string",
263
+ description: "The jobId returned by generate_image / edit_image / continue_editing",
264
+ },
265
+ },
266
+ required: ["jobId"],
267
+ },
268
+ },
250
269
  {
251
270
  name: "get_configuration_status",
252
271
  description: "Check if OpenAI API key is configured and which model is active",
@@ -263,11 +282,13 @@ class GptImage2MCP {
263
282
  try {
264
283
  switch (request.params.name) {
265
284
  case "generate_image":
266
- return await this.generateImage(request);
285
+ return this.generateImage(request);
267
286
  case "edit_image":
268
- return await this.editImage(request);
287
+ return this.editImage(request);
269
288
  case "continue_editing":
270
- return await this.continueEditing(request);
289
+ return this.continueEditing(request);
290
+ case "check_image_job":
291
+ return this.checkImageJob(request);
271
292
  case "get_configuration_status":
272
293
  return this.getConfigurationStatus();
273
294
  case "get_last_image_info":
@@ -344,37 +365,91 @@ class GptImage2MCP {
344
365
  return { content };
345
366
  }
346
367
  // -------------------------------------------------------------------------
347
- // Tools: generate_image
368
+ // Job management
369
+ // -------------------------------------------------------------------------
370
+ createJobId() {
371
+ const id = `job_${String(this.nextJobNum++).padStart(4, "0")}_${randomId()}`;
372
+ return id;
373
+ }
374
+ pruneJobs() {
375
+ const now = Date.now();
376
+ for (const [id, job] of this.jobs) {
377
+ const finishedAt = job.endedAt ?? job.startedAt;
378
+ if (job.status !== "pending" && now - finishedAt > JOB_RETENTION_MS) {
379
+ this.jobs.delete(id);
380
+ }
381
+ }
382
+ if (this.jobs.size > MAX_JOBS_RETAINED) {
383
+ const sorted = [...this.jobs.entries()]
384
+ .filter(([, j]) => j.status !== "pending")
385
+ .sort((a, b) => (a[1].endedAt ?? 0) - (b[1].endedAt ?? 0));
386
+ const overflow = this.jobs.size - MAX_JOBS_RETAINED;
387
+ for (let i = 0; i < overflow && i < sorted.length; i++) {
388
+ this.jobs.delete(sorted[i][0]);
389
+ }
390
+ }
391
+ }
392
+ launchJob(kind, returnInlineImage, work) {
393
+ this.pruneJobs();
394
+ const id = this.createJobId();
395
+ const job = { status: "pending", startedAt: Date.now(), returnInlineImage, kind };
396
+ this.jobs.set(id, job);
397
+ void work()
398
+ .then((saved) => {
399
+ job.savedImages = saved;
400
+ job.status = "completed";
401
+ job.endedAt = Date.now();
402
+ if (saved.length > 0)
403
+ this.lastImagePath = saved[0].filePath;
404
+ })
405
+ .catch((err) => {
406
+ job.status = "failed";
407
+ job.endedAt = Date.now();
408
+ job.error = err instanceof Error ? err.message : String(err);
409
+ });
410
+ return id;
411
+ }
412
+ jobAcceptedResponse(jobId) {
413
+ const text = [
414
+ `jobId: ${jobId}`,
415
+ `status: pending`,
416
+ `Next: call check_image_job with jobId="${jobId}" every ~${POLL_HINT_SECONDS} seconds until status is "completed" or "failed". Typical end-to-end latency: 10–180s.`,
417
+ ].join("\n");
418
+ return { content: [{ type: "text", text }] };
419
+ }
420
+ // -------------------------------------------------------------------------
421
+ // Tools: generate_image (async)
348
422
  // -------------------------------------------------------------------------
349
- async generateImage(request) {
423
+ generateImage(request) {
350
424
  const args = request.params.arguments;
351
425
  const prompt = args.prompt;
352
426
  if (!prompt)
353
427
  throw new McpError(ErrorCode.InvalidParams, "prompt is required");
354
428
  const params = this.extractImageParams(args);
355
- const openai = this.initOpenAI();
429
+ // Validate API key up-front so the user gets a fast error rather than a
430
+ // jobId that immediately fails.
431
+ this.initOpenAI();
356
432
  const modelId = getModelId();
357
- const generateRequest = {
358
- model: modelId,
359
- prompt,
360
- size: params.size,
361
- quality: params.quality,
362
- n: params.numberOfImages,
363
- output_format: params.outputFormat,
364
- background: params.background,
365
- };
366
- const response = await openai.images.generate(generateRequest);
367
- const allSaved = await this.processResponse(response, "generated", params);
368
- if (allSaved.length === 0) {
369
- return { content: [{ type: "text", text: "No image was generated. Try rephrasing your prompt." }] };
370
- }
371
- this.lastImagePath = allSaved[0].filePath;
372
- return this.buildResponse(allSaved, params.returnInlineImage);
433
+ const jobId = this.launchJob("generated", params.returnInlineImage, async () => {
434
+ const openai = this.initOpenAI();
435
+ const generateRequest = {
436
+ model: modelId,
437
+ prompt,
438
+ size: params.size,
439
+ quality: params.quality,
440
+ n: params.numberOfImages,
441
+ output_format: params.outputFormat,
442
+ background: params.background,
443
+ };
444
+ const response = await openai.images.generate(generateRequest);
445
+ return this.processResponse(response, "generated", params);
446
+ });
447
+ return this.jobAcceptedResponse(jobId);
373
448
  }
374
449
  // -------------------------------------------------------------------------
375
- // Tools: edit_image
450
+ // Tools: edit_image (async)
376
451
  // -------------------------------------------------------------------------
377
- async editImage(request) {
452
+ editImage(request) {
378
453
  const args = request.params.arguments;
379
454
  const imagePath = args.imagePath;
380
455
  const prompt = args.prompt;
@@ -388,47 +463,48 @@ class GptImage2MCP {
388
463
  if (allPaths.length > MAX_REFERENCE_IMAGES) {
389
464
  throw new McpError(ErrorCode.InvalidParams, `Too many images (${allPaths.length}). Max: ${MAX_REFERENCE_IMAGES} total (main + references).`);
390
465
  }
391
- for (const p of allPaths) {
392
- await validateImagePath(p);
393
- }
394
- if (maskPath)
395
- await validateImagePath(maskPath);
396
466
  const params = this.extractImageParams(args);
397
- const openai = this.initOpenAI();
467
+ // Up-front API-key check; path validation runs inside the job (since it's
468
+ // async I/O) but we still throw fast for obvious errors.
469
+ this.initOpenAI();
398
470
  const modelId = getModelId();
399
- const imageFiles = await Promise.all(allPaths.map(async (p) => {
400
- const ext = path.extname(p).toLowerCase();
401
- const mime = extensionToMime(ext);
402
- return await toFile(createReadStream(p), path.basename(p), { type: mime });
403
- }));
404
- const editRequest = {
405
- model: modelId,
406
- image: imageFiles,
407
- prompt,
408
- size: params.size,
409
- quality: params.quality,
410
- n: params.numberOfImages,
411
- output_format: params.outputFormat,
412
- background: params.background,
413
- };
414
- if (maskPath) {
415
- const maskMime = extensionToMime(path.extname(maskPath).toLowerCase());
416
- editRequest.mask = await toFile(createReadStream(maskPath), path.basename(maskPath), {
417
- type: maskMime,
418
- });
419
- }
420
- const response = await openai.images.edit(editRequest);
421
- const saved = await this.processResponse(response, "edited", params);
422
- if (saved.length === 0) {
423
- return { content: [{ type: "text", text: "No edited image was produced. Try a different prompt." }] };
424
- }
425
- this.lastImagePath = saved[0].filePath;
426
- return this.buildResponse(saved, params.returnInlineImage);
471
+ const jobId = this.launchJob("edited", params.returnInlineImage, async () => {
472
+ for (const p of allPaths) {
473
+ await validateImagePath(p);
474
+ }
475
+ if (maskPath)
476
+ await validateImagePath(maskPath);
477
+ const openai = this.initOpenAI();
478
+ const imageFiles = await Promise.all(allPaths.map(async (p) => {
479
+ const ext = path.extname(p).toLowerCase();
480
+ const mime = extensionToMime(ext);
481
+ return await toFile(createReadStream(p), path.basename(p), { type: mime });
482
+ }));
483
+ const editRequest = {
484
+ model: modelId,
485
+ image: imageFiles,
486
+ prompt,
487
+ size: params.size,
488
+ quality: params.quality,
489
+ n: params.numberOfImages,
490
+ output_format: params.outputFormat,
491
+ background: params.background,
492
+ };
493
+ if (maskPath) {
494
+ const maskMime = extensionToMime(path.extname(maskPath).toLowerCase());
495
+ editRequest.mask = await toFile(createReadStream(maskPath), path.basename(maskPath), {
496
+ type: maskMime,
497
+ });
498
+ }
499
+ const response = await openai.images.edit(editRequest);
500
+ return this.processResponse(response, "edited", params);
501
+ });
502
+ return this.jobAcceptedResponse(jobId);
427
503
  }
428
504
  // -------------------------------------------------------------------------
429
- // Tools: continue_editing
505
+ // Tools: continue_editing (async)
430
506
  // -------------------------------------------------------------------------
431
- async continueEditing(request) {
507
+ continueEditing(request) {
432
508
  if (!this.lastImagePath) {
433
509
  throw new McpError(ErrorCode.InvalidRequest, "No previous image in this session. Use generate_image or edit_image first.");
434
510
  }
@@ -441,6 +517,72 @@ class GptImage2MCP {
441
517
  return this.editImage(editRequest);
442
518
  }
443
519
  // -------------------------------------------------------------------------
520
+ // Tools: check_image_job
521
+ // -------------------------------------------------------------------------
522
+ checkImageJob(request) {
523
+ const args = request.params.arguments;
524
+ const jobId = args.jobId;
525
+ if (!jobId)
526
+ throw new McpError(ErrorCode.InvalidParams, "jobId is required");
527
+ const job = this.jobs.get(jobId);
528
+ if (!job) {
529
+ throw new McpError(ErrorCode.InvalidParams, `Unknown jobId "${jobId}". Jobs are kept in memory for ${Math.floor(JOB_RETENTION_MS / 60000)} minutes after completion.`);
530
+ }
531
+ const elapsed = ((job.endedAt ?? Date.now()) - job.startedAt) / 1000;
532
+ if (job.status === "pending") {
533
+ return {
534
+ content: [
535
+ {
536
+ type: "text",
537
+ text: [
538
+ `jobId: ${jobId}`,
539
+ `status: pending`,
540
+ `elapsed: ${elapsed.toFixed(1)}s`,
541
+ `Call check_image_job again in ${POLL_HINT_SECONDS}s.`,
542
+ ].join("\n"),
543
+ },
544
+ ],
545
+ };
546
+ }
547
+ if (job.status === "failed") {
548
+ return {
549
+ content: [
550
+ {
551
+ type: "text",
552
+ text: [
553
+ `jobId: ${jobId}`,
554
+ `status: failed`,
555
+ `elapsed: ${elapsed.toFixed(1)}s`,
556
+ `error: ${job.error ?? "unknown"}`,
557
+ ].join("\n"),
558
+ },
559
+ ],
560
+ isError: true,
561
+ };
562
+ }
563
+ const saved = job.savedImages ?? [];
564
+ if (saved.length === 0) {
565
+ return {
566
+ content: [
567
+ {
568
+ type: "text",
569
+ text: `jobId: ${jobId}\nstatus: completed\nelapsed: ${elapsed.toFixed(1)}s\nNo image was produced. Try rephrasing your prompt.`,
570
+ },
571
+ ],
572
+ };
573
+ }
574
+ const result = this.buildResponse(saved, job.returnInlineImage);
575
+ const header = `jobId: ${jobId}\nstatus: completed\nelapsed: ${elapsed.toFixed(1)}s\n`;
576
+ const first = result.content[0];
577
+ if (first?.type === "text") {
578
+ first.text = header + (first.text ?? "");
579
+ }
580
+ else {
581
+ result.content.unshift({ type: "text", text: header.trimEnd() });
582
+ }
583
+ return result;
584
+ }
585
+ // -------------------------------------------------------------------------
444
586
  // Tools: get_configuration_status
445
587
  // -------------------------------------------------------------------------
446
588
  getConfigurationStatus() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.0";
1
+ export declare const VERSION = "0.1.3";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.1.0";
1
+ export const VERSION = "0.1.3";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flownex-ai/mcp-gpt-image-2",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "MCP server for OpenAI's gpt-image-2 image generation with size/quality control, multi-image support, and context-window-safe output",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: generate-image
3
3
  description: Generate or edit images using OpenAI gpt-image-2. Use this skill any time the user asks to create, generate, illustrate, design, mock up, or edit an image — from product shots and diagrams to marketing visuals and slide imagery. Works in Claude Code and Claude Cowork.
4
- allowed-tools: mcp__gpt-image-2__generate_image, mcp__gpt-image-2__edit_image, mcp__gpt-image-2__continue_editing, mcp__gpt-image-2__get_configuration_status, mcp__gpt-image-2__get_last_image_info
4
+ allowed-tools: mcp__gpt-image-2__generate_image, mcp__gpt-image-2__edit_image, mcp__gpt-image-2__continue_editing, mcp__gpt-image-2__check_image_job, mcp__gpt-image-2__get_configuration_status, mcp__gpt-image-2__get_last_image_info
5
5
  ---
6
6
 
7
7
  # Image Generation with OpenAI gpt-image-2
@@ -35,12 +35,27 @@ If you aren't sure the API key is configured, call `get_configuration_status`. I
35
35
  - **numberOfImages** — `1` (default). Use 2–4 to explore variations.
36
36
  - **returnInlineImage** — Consider setting to `false` in Claude Code to avoid context window overflow. The image is still saved to disk and can be viewed by the user.
37
37
 
38
+ ## Async job model (important)
39
+
40
+ `generate_image`, `edit_image`, and `continue_editing` are **asynchronous**. They return a `jobId` in under a second and run the actual OpenAI call (10–180s) in the background. To get the result you MUST poll:
41
+
42
+ 1. Call `generate_image` (or `edit_image` / `continue_editing`). Extract `jobId` from the response.
43
+ 2. Call `check_image_job({ jobId })` every ~5 seconds.
44
+ 3. When `status: completed`, the response contains the saved file path (and inline base64 if enabled). On `status: failed`, surface the error message to the user.
45
+
46
+ Do NOT spam-poll faster than every ~3 seconds. Typical wait times:
47
+ - `quality: "low"`, 1024x1024 → ~15–25s (3–5 polls)
48
+ - `quality: "medium"`, 1024x1024 → ~25–40s (5–8 polls)
49
+ - `quality: "high"`, 1536x1024 or larger → ~60–180s (12–36 polls)
50
+
51
+ This model removes MCP request-timeout errors entirely — every individual tool call is sub-second.
52
+
38
53
  ## Workflow
39
54
 
40
- 1. **Generate**: Use `generate_image` with a well-crafted narrative prompt.
41
- 2. **Review**: Check the saved file path in the response.
42
- 3. **Refine**: Use `continue_editing` to make adjustments. Be specific about what to change.
43
- 4. **Iterate**: Each `continue_editing` call builds on the previous result.
55
+ 1. **Start** the generation with `generate_image` (or `edit_image` / `continue_editing`). Grab the `jobId`.
56
+ 2. **Poll** `check_image_job` every ~5s until `completed`.
57
+ 3. **Refine**: Call `continue_editing` to make adjustments to the last result, then poll again. Be specific about what to change.
58
+ 4. **Iterate**: Each refinement is its own job; the jobIds are independent.
44
59
 
45
60
  ## Editing with References
46
61
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: powerpoint-images
3
3
  description: Use when creating images for PowerPoint, Keynote, or Google Slides presentations — hero slides, section dividers, accent illustrations, diagrams, or icon sets. Triggers on mentions of slides, decks, presentations, PowerPoint, Keynote, Google Slides, pitch deck, board deck, all-hands, QBR, town hall, sales deck, or "make me an image for slide X". A natural fit for Claude Cowork (knowledge workers building decks).
4
- allowed-tools: mcp__gpt-image-2__generate_image, mcp__gpt-image-2__edit_image, mcp__gpt-image-2__continue_editing, mcp__gpt-image-2__get_configuration_status, mcp__gpt-image-2__get_last_image_info
4
+ allowed-tools: mcp__gpt-image-2__generate_image, mcp__gpt-image-2__edit_image, mcp__gpt-image-2__continue_editing, mcp__gpt-image-2__check_image_job, mcp__gpt-image-2__get_configuration_status, mcp__gpt-image-2__get_last_image_info
5
5
  ---
6
6
 
7
7
  # Slide Images with OpenAI gpt-image-2
@@ -53,9 +53,9 @@ When you do request text, quote it exactly and specify the font style: *"the wor
53
53
 
54
54
  1. **Confirm the slide context first.** Aspect, palette, what text will overlay it, and whether it's hero / accent / icon. If the user didn't say, ask in one line or pick a sensible default and call it out.
55
55
  2. **Build a reusable style sentence** (color palette + art style + medium). Save it in your head for the whole deck.
56
- 3. **Generate** with `generate_image`. Default to `quality: "high"` for hero slides (worth the latency), `quality: "medium"` for accent illustrations.
57
- 4. **Refine** with `continue_editing` — typical asks: "move the subject right to leave the left third empty", "warmer color temperature", "remove the small text in the corner".
58
- 5. **Batch related slides.** When you need 4–8 spot illustrations for the same deck, call `generate_image` once per concept with `numberOfImages: 2` to pick the best of each pair, reusing the exact same style sentence each time.
56
+ 3. **Generate**. Call `generate_image` it returns a `jobId` immediately. Then poll `check_image_job({ jobId })` every ~5s. For deck heroes (`quality: "high"`, 1536x1024) expect 60–120s; for accents (`quality: "medium"`, 1024x1024) expect 25–40s.
57
+ 4. **Refine** with `continue_editing` (also async + polling) — typical asks: "move the subject right to leave the left third empty", "warmer color temperature", "remove the small text in the corner".
58
+ 5. **Batch related slides.** Kick off multiple `generate_image` jobs back-to-back (each returns a jobId in <1s), then poll them in turn. Reuse the exact same style sentence every time.
59
59
 
60
60
  ## Recommended defaults for slides
61
61