mcp-image 0.9.0 → 0.11.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.
- package/README.md +87 -8
- package/dist/api/errorClassification.d.ts +12 -0
- package/dist/api/errorClassification.d.ts.map +1 -0
- package/dist/api/errorClassification.js +20 -0
- package/dist/api/errorClassification.js.map +1 -0
- package/dist/api/geminiClient.d.ts +5 -29
- package/dist/api/geminiClient.d.ts.map +1 -1
- package/dist/api/geminiClient.js +25 -24
- package/dist/api/geminiClient.js.map +1 -1
- package/dist/api/geminiTextClient.d.ts +3 -27
- package/dist/api/geminiTextClient.d.ts.map +1 -1
- package/dist/api/geminiTextClient.js +20 -19
- package/dist/api/geminiTextClient.js.map +1 -1
- package/dist/api/imageClient.d.ts +43 -0
- package/dist/api/imageClient.d.ts.map +1 -0
- package/dist/api/imageClient.js +2 -0
- package/dist/api/imageClient.js.map +1 -0
- package/dist/api/openaiImageClient.d.ts +12 -0
- package/dist/api/openaiImageClient.d.ts.map +1 -0
- package/dist/api/openaiImageClient.js +195 -0
- package/dist/api/openaiImageClient.js.map +1 -0
- package/dist/api/openaiTextClient.d.ts +12 -0
- package/dist/api/openaiTextClient.d.ts.map +1 -0
- package/dist/api/openaiTextClient.js +131 -0
- package/dist/api/openaiTextClient.js.map +1 -0
- package/dist/api/textClient.d.ts +23 -0
- package/dist/api/textClient.d.ts.map +1 -0
- package/dist/api/textClient.js +2 -0
- package/dist/api/textClient.js.map +1 -0
- package/dist/business/fileManager.d.ts +1 -1
- package/dist/business/fileManager.d.ts.map +1 -1
- package/dist/business/fileManager.js +6 -4
- package/dist/business/fileManager.js.map +1 -1
- package/dist/business/inputValidator.d.ts.map +1 -1
- package/dist/business/inputValidator.js +3 -4
- package/dist/business/inputValidator.js.map +1 -1
- package/dist/business/responseBuilder.d.ts +1 -1
- package/dist/business/responseBuilder.d.ts.map +1 -1
- package/dist/business/responseBuilder.js +46 -27
- package/dist/business/responseBuilder.js.map +1 -1
- package/dist/business/structuredPromptGenerator.d.ts +7 -6
- package/dist/business/structuredPromptGenerator.d.ts.map +1 -1
- package/dist/business/structuredPromptGenerator.js +8 -7
- package/dist/business/structuredPromptGenerator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/server/errorHandler.d.ts.map +1 -1
- package/dist/server/errorHandler.js +20 -12
- package/dist/server/errorHandler.js.map +1 -1
- package/dist/server/mcpServer.d.ts +3 -3
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +41 -27
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/types/mcp.d.ts +11 -0
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/mcp.js +4 -0
- package/dist/types/mcp.js.map +1 -1
- package/dist/utils/config.d.ts +3 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +31 -8
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/errors.d.ts +15 -12
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +57 -11
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.d.ts +7 -5
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +42 -39
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mimeUtils.d.ts +56 -0
- package/dist/utils/mimeUtils.d.ts.map +1 -0
- package/dist/utils/mimeUtils.js +111 -0
- package/dist/utils/mimeUtils.js.map +1 -0
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +2 -3
- package/dist/utils/security.js.map +1 -1
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Image Generator 🍌
|
|
2
2
|
|
|
3
|
-
> AI image generation and editing MCP server for Cursor, Claude Code, Codex, and any MCP-compatible tool — powered by Nano Banana 2 and Nano Banana Pro (Google Gemini).
|
|
3
|
+
> AI image generation and editing MCP server for Cursor, Claude Code, Codex, and any MCP-compatible tool — powered by Nano Banana 2 and Nano Banana Pro (Google Gemini), with optional OpenAI GPT Image support.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/mcp-image)
|
|
6
6
|
[](https://www.npmjs.com/package/mcp-image)
|
|
@@ -27,7 +27,7 @@ You: "cat on a roof"
|
|
|
27
27
|
|
|
28
28
|
Your AI assistant interprets your intent — the style, purpose, and context behind your request. The MCP focuses on output quality by refining the prompt to meet a structured visual clarity standard and selecting appropriate generation settings. You just describe what you want.
|
|
29
29
|
|
|
30
|
-
The prompt optimizer uses a **Subject–Context–Style** framework (powered by Gemini 2.5 Flash) to fill in missing visual details — subject characteristics, environment, lighting, camera work — while preserving your original intent. It doesn't blindly add details: prompts that already meet the quality standard are left largely intact.
|
|
30
|
+
The prompt optimizer uses a **Subject–Context–Style** framework (powered by Gemini 2.5 Flash by default, or OpenAI Responses when `IMAGE_PROVIDER=openai`) to fill in missing visual details — subject characteristics, environment, lighting, camera work — while preserving your original intent. It doesn't blindly add details: prompts that already meet the quality standard are left largely intact.
|
|
31
31
|
|
|
32
32
|
**Example — what the optimizer does to a short prompt:**
|
|
33
33
|
|
|
@@ -37,7 +37,8 @@ The prompt optimizer uses a **Subject–Context–Style** framework (powered by
|
|
|
37
37
|
|
|
38
38
|
## Features
|
|
39
39
|
|
|
40
|
-
- **Built-in Prompt Optimization**: Your simple prompt is automatically enriched with photographic and artistic details — lighting, composition, atmosphere — using Gemini 2.5 Flash
|
|
40
|
+
- **Built-in Prompt Optimization**: Your simple prompt is automatically enriched with photographic and artistic details — lighting, composition, atmosphere — using Gemini 2.5 Flash by default, or OpenAI Responses when `IMAGE_PROVIDER=openai`. No prompt engineering skills required.
|
|
41
|
+
- **Optional OpenAI Provider**: Set `IMAGE_PROVIDER=openai` to generate and edit images with OpenAI GPT Image models such as `gpt-image-2`.
|
|
41
42
|
- **Three Quality Tiers**: Choose between fast iteration, balanced quality, or maximum fidelity with Nano Banana 2 (Gemini 3.1 Flash Image) and Nano Banana Pro (Gemini 3 Pro Image). [See Quality Presets](#quality-presets).
|
|
42
43
|
- **Image Editing**: Transform existing images with natural language instructions (image-to-image) while preserving original style and visual consistency.
|
|
43
44
|
- **High-Resolution Output**: Up to 4K image generation for professional-grade output with superior text rendering and fine details.
|
|
@@ -90,8 +91,9 @@ npx mcp-image skills install --path ~/.claude/skills
|
|
|
90
91
|
|
|
91
92
|
## Prerequisites
|
|
92
93
|
|
|
93
|
-
- **Node.js**
|
|
94
|
-
- **Gemini API Key** - Get yours at [Google AI Studio](https://aistudio.google.com/apikey)
|
|
94
|
+
- **Node.js** 22 or higher
|
|
95
|
+
- **Gemini API Key** - Get yours at [Google AI Studio](https://aistudio.google.com/apikey) for the default Gemini provider
|
|
96
|
+
- **OpenAI API Key** - Get yours from [OpenAI](https://platform.openai.com/api-keys) when using `IMAGE_PROVIDER=openai`
|
|
95
97
|
- An MCP-compatible AI tool: **Cursor**, **Claude Code**, **Codex**, or others
|
|
96
98
|
- Basic terminal/command line knowledge
|
|
97
99
|
|
|
@@ -101,6 +103,15 @@ npx mcp-image skills install --path ~/.claude/skills
|
|
|
101
103
|
|
|
102
104
|
Get your API key from [Google AI Studio](https://aistudio.google.com/apikey)
|
|
103
105
|
|
|
106
|
+
To use OpenAI instead, get an OpenAI API key and set:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
IMAGE_PROVIDER=openai
|
|
110
|
+
OPENAI_API_KEY=your_openai_api_key_here
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
OpenAI mode requires organization verification — see [Using the OpenAI provider](#using-the-openai-provider) below for setup details and feature differences.
|
|
114
|
+
|
|
104
115
|
### 2. MCP Configuration
|
|
105
116
|
|
|
106
117
|
#### For Codex
|
|
@@ -117,6 +128,19 @@ GEMINI_API_KEY = "your_gemini_api_key_here"
|
|
|
117
128
|
IMAGE_OUTPUT_DIR = "/absolute/path/to/images"
|
|
118
129
|
```
|
|
119
130
|
|
|
131
|
+
For OpenAI GPT Image from a local fork:
|
|
132
|
+
|
|
133
|
+
```toml
|
|
134
|
+
[mcp_servers.mcp-image]
|
|
135
|
+
command = "node"
|
|
136
|
+
args = ["/absolute/path/to/mcp-image/dist/index.js"]
|
|
137
|
+
|
|
138
|
+
[mcp_servers.mcp-image.env]
|
|
139
|
+
IMAGE_PROVIDER = "openai"
|
|
140
|
+
OPENAI_API_KEY = "your_openai_api_key_here"
|
|
141
|
+
IMAGE_OUTPUT_DIR = "/absolute/path/to/images"
|
|
142
|
+
```
|
|
143
|
+
|
|
120
144
|
#### For Cursor
|
|
121
145
|
|
|
122
146
|
Add to your Cursor settings:
|
|
@@ -138,6 +162,24 @@ Add to your Cursor settings:
|
|
|
138
162
|
}
|
|
139
163
|
```
|
|
140
164
|
|
|
165
|
+
For OpenAI GPT Image from a local fork:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"mcpServers": {
|
|
170
|
+
"mcp-image": {
|
|
171
|
+
"command": "node",
|
|
172
|
+
"args": ["/absolute/path/to/mcp-image/dist/index.js"],
|
|
173
|
+
"env": {
|
|
174
|
+
"IMAGE_PROVIDER": "openai",
|
|
175
|
+
"OPENAI_API_KEY": "your_openai_api_key_here",
|
|
176
|
+
"IMAGE_OUTPUT_DIR": "/absolute/path/to/images"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
141
183
|
#### For Claude Code
|
|
142
184
|
|
|
143
185
|
Run in your project directory to enable for that project:
|
|
@@ -153,6 +195,18 @@ Or add globally for all projects:
|
|
|
153
195
|
claude mcp add mcp-image --scope user --env GEMINI_API_KEY=your-api-key --env IMAGE_OUTPUT_DIR=/absolute/path/to/images -- npx -y mcp-image
|
|
154
196
|
```
|
|
155
197
|
|
|
198
|
+
For OpenAI GPT Image from a local fork:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm install
|
|
202
|
+
npm run build
|
|
203
|
+
claude mcp add mcp-image --scope user \
|
|
204
|
+
--env IMAGE_PROVIDER=openai \
|
|
205
|
+
--env OPENAI_API_KEY=your-openai-api-key \
|
|
206
|
+
--env IMAGE_OUTPUT_DIR=/absolute/path/to/images \
|
|
207
|
+
-- node /absolute/path/to/mcp-image/dist/index.js
|
|
208
|
+
```
|
|
209
|
+
|
|
156
210
|
⚠️ **Security Note**: Never commit your API key to version control. Keep it secure and use environment-specific configuration.
|
|
157
211
|
|
|
158
212
|
📁 **Path Requirements**:
|
|
@@ -199,6 +253,30 @@ claude mcp add mcp-image --env GEMINI_API_KEY=your-api-key --env IMAGE_QUALITY=b
|
|
|
199
253
|
|
|
200
254
|
Set `SKIP_PROMPT_ENHANCEMENT=true` to disable automatic prompt optimization and send your prompts directly to the image generator. Useful when you need full control over the exact prompt wording.
|
|
201
255
|
|
|
256
|
+
### Provider Configuration
|
|
257
|
+
|
|
258
|
+
| Variable | Default | Description |
|
|
259
|
+
|----------|---------|-------------|
|
|
260
|
+
| `IMAGE_PROVIDER` | `gemini` | `gemini` or `openai` |
|
|
261
|
+
| `GEMINI_API_KEY` | - | Required when `IMAGE_PROVIDER=gemini` |
|
|
262
|
+
| `OPENAI_API_KEY` | - | Required when `IMAGE_PROVIDER=openai` |
|
|
263
|
+
|
|
264
|
+
### Using the OpenAI provider
|
|
265
|
+
|
|
266
|
+
Set `IMAGE_PROVIDER=openai` to use OpenAI for both prompt enhancement and image generation. mcp-image currently uses `gpt-4o-mini` for prompt enhancement and `gpt-image-2` for image generation. These model choices are fixed by the server and are not configurable through environment variables.
|
|
267
|
+
|
|
268
|
+
OpenAI may require organization verification before allowing access to `gpt-image-2`. If image generation fails with a 403 permission or verification error, check your organization settings: https://platform.openai.com/settings/organization/general
|
|
269
|
+
|
|
270
|
+
OpenAI provider behavior:
|
|
271
|
+
|
|
272
|
+
- Supports text-to-image and image-to-image generation.
|
|
273
|
+
- Supports `aspectRatio`, mapped to the closest supported OpenAI image size.
|
|
274
|
+
- Supports `imageSize` values `1K`, `2K`, and `4K`.
|
|
275
|
+
- Maps `quality` as `fast -> low`, `balanced -> medium`, and `quality -> high`.
|
|
276
|
+
- Does not support `useGoogleSearch`; that option is only available with the Gemini provider.
|
|
277
|
+
|
|
278
|
+
Prompt enhancement uses a separate OpenAI Responses API call. Set `SKIP_PROMPT_ENHANCEMENT=true` to send prompts directly to the image model.
|
|
279
|
+
|
|
202
280
|
## Usage Examples
|
|
203
281
|
|
|
204
282
|
Once configured, just describe what you want in natural language:
|
|
@@ -243,8 +321,8 @@ Your prompt is automatically enhanced with rich details about lighting, material
|
|
|
243
321
|
### `generate_image` Tool
|
|
244
322
|
|
|
245
323
|
The server uses a two-stage process with separate models for each stage:
|
|
246
|
-
1. **Prompt Optimization** (Gemini 2.5 Flash): Refines your prompt using the Subject–Context–Style framework. Skippable via `SKIP_PROMPT_ENHANCEMENT`.
|
|
247
|
-
2. **Image Generation** (Nano Banana 2 or
|
|
324
|
+
1. **Prompt Optimization** (Gemini 2.5 Flash by default, or `gpt-4o-mini` via OpenAI Responses in OpenAI mode): Refines your prompt using the Subject–Context–Style framework. Skippable via `SKIP_PROMPT_ENHANCEMENT`.
|
|
325
|
+
2. **Image Generation** (Nano Banana 2/Pro by default, or `gpt-image-2` in OpenAI mode): Creates the final image. In Gemini mode the model varies by quality preset; in OpenAI mode the model is pinned and `quality` maps to OpenAI's `low`/`medium`/`high`.
|
|
248
326
|
|
|
249
327
|
#### Parameters
|
|
250
328
|
|
|
@@ -274,6 +352,7 @@ The server uses a two-stage process with separate models for each stage:
|
|
|
274
352
|
},
|
|
275
353
|
"metadata": {
|
|
276
354
|
"model": "gemini-3.1-flash-image-preview",
|
|
355
|
+
"provider": "gemini",
|
|
277
356
|
"processingTime": 5000,
|
|
278
357
|
"timestamp": "2026-01-01T12:00:00.000Z"
|
|
279
358
|
}
|
|
@@ -285,7 +364,7 @@ The server uses a two-stage process with separate models for each stage:
|
|
|
285
364
|
### Common Issues
|
|
286
365
|
|
|
287
366
|
**"API key not found"**
|
|
288
|
-
- Ensure `GEMINI_API_KEY` is set
|
|
367
|
+
- Ensure `GEMINI_API_KEY` is set when using Gemini, or `OPENAI_API_KEY` is set when `IMAGE_PROVIDER=openai`
|
|
289
368
|
- Verify the API key is valid and has image generation permissions
|
|
290
369
|
|
|
291
370
|
**"Input image file not found"**
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error classification helpers for API client implementations.
|
|
3
|
+
* Used by both Gemini and OpenAI clients to identify network failures
|
|
4
|
+
* and extract HTTP status codes from SDK errors.
|
|
5
|
+
*/
|
|
6
|
+
export interface ErrorWithCode extends Error {
|
|
7
|
+
code?: string;
|
|
8
|
+
status?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function isNetworkError(error: unknown): boolean;
|
|
11
|
+
export declare function extractStatusCode(error: unknown): number | undefined;
|
|
12
|
+
//# sourceMappingURL=errorClassification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorClassification.d.ts","sourceRoot":"","sources":["../../src/api/errorClassification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOtD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMpE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error classification helpers for API client implementations.
|
|
3
|
+
* Used by both Gemini and OpenAI clients to identify network failures
|
|
4
|
+
* and extract HTTP status codes from SDK errors.
|
|
5
|
+
*/
|
|
6
|
+
const NETWORK_ERROR_CODES = ['ECONNRESET', 'ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'];
|
|
7
|
+
export function isNetworkError(error) {
|
|
8
|
+
if (!(error instanceof Error)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return NETWORK_ERROR_CODES.some((code) => error.message.includes(code) || error.code === code);
|
|
12
|
+
}
|
|
13
|
+
export function extractStatusCode(error) {
|
|
14
|
+
if (error && typeof error === 'object' && 'status' in error) {
|
|
15
|
+
const status = error.status;
|
|
16
|
+
return typeof status === 'number' ? status : undefined;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=errorClassification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorClassification.js","sourceRoot":"","sources":["../../src/api/errorClassification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAU,CAAA;AAE7F,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAK,KAAuB,CAAC,IAAI,KAAK,IAAI,CACjF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAI,KAAuB,CAAC,MAAM,CAAA;QAC9C,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IACxD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -3,46 +3,22 @@
|
|
|
3
3
|
* Integrates with Google's Gemini AI API using the official SDK
|
|
4
4
|
* Supports automatic URL Context processing and feature parameters
|
|
5
5
|
*/
|
|
6
|
-
import type { ImageQuality } from '../types/mcp.js';
|
|
7
6
|
import type { Result } from '../types/result.js';
|
|
8
7
|
import type { Config } from '../utils/config.js';
|
|
9
|
-
import { GeminiAPIError
|
|
8
|
+
import { GeminiAPIError } from '../utils/errors.js';
|
|
9
|
+
import type { ImageApiParams, ImageClient, ImageGenerationMetadata } from './imageClient.js';
|
|
10
10
|
/**
|
|
11
11
|
* Metadata for generated images
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
14
|
-
model: string;
|
|
15
|
-
prompt: string;
|
|
16
|
-
mimeType: string;
|
|
17
|
-
timestamp: Date;
|
|
18
|
-
inputImageProvided: boolean;
|
|
19
|
-
modelVersion?: string;
|
|
20
|
-
responseId?: string;
|
|
21
|
-
}
|
|
13
|
+
export type GeminiGenerationMetadata = ImageGenerationMetadata;
|
|
22
14
|
/**
|
|
23
15
|
* Parameters for Gemini API image generation
|
|
24
16
|
*/
|
|
25
|
-
export
|
|
26
|
-
prompt: string;
|
|
27
|
-
inputImage?: string;
|
|
28
|
-
aspectRatio?: string;
|
|
29
|
-
imageSize?: string;
|
|
30
|
-
useGoogleSearch?: boolean;
|
|
31
|
-
quality?: ImageQuality;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Result of image generation
|
|
35
|
-
*/
|
|
36
|
-
export interface GeneratedImageResult {
|
|
37
|
-
imageData: Buffer;
|
|
38
|
-
metadata: GeminiGenerationMetadata;
|
|
39
|
-
}
|
|
17
|
+
export type GeminiApiParams = ImageApiParams;
|
|
40
18
|
/**
|
|
41
19
|
* Gemini API client interface
|
|
42
20
|
*/
|
|
43
|
-
export
|
|
44
|
-
generateImage(params: GeminiApiParams): Promise<Result<GeneratedImageResult, GeminiAPIError | NetworkError>>;
|
|
45
|
-
}
|
|
21
|
+
export type GeminiClient = ImageClient;
|
|
46
22
|
/**
|
|
47
23
|
* Creates a new Gemini API client
|
|
48
24
|
* @param config Configuration containing API key and other settings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"geminiClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAgB,MAAM,oBAAoB,CAAA;AAGjE,OAAO,KAAK,EAEV,cAAc,EACd,WAAW,EACX,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AAkHzB;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAA;AAE9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAA;AA8UtC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAevF"}
|
package/dist/api/geminiClient.js
CHANGED
|
@@ -7,6 +7,8 @@ import { GoogleGenAI } from '@google/genai';
|
|
|
7
7
|
import { GEMINI_MODELS } from '../types/mcp.js';
|
|
8
8
|
import { Err, Ok } from '../types/result.js';
|
|
9
9
|
import { GeminiAPIError, NetworkError } from '../utils/errors.js';
|
|
10
|
+
import { DEFAULT_MIME_TYPE, normalizeMimeType } from '../utils/mimeUtils.js';
|
|
11
|
+
import { extractStatusCode, isNetworkError } from './errorClassification.js';
|
|
10
12
|
/**
|
|
11
13
|
* Safely analyze response structure for debugging (removes sensitive data)
|
|
12
14
|
*/
|
|
@@ -84,7 +86,7 @@ class GeminiClientImpl {
|
|
|
84
86
|
{
|
|
85
87
|
inlineData: {
|
|
86
88
|
data: params.inputImage,
|
|
87
|
-
mimeType:
|
|
89
|
+
mimeType: params.inputImageMimeType ?? DEFAULT_MIME_TYPE,
|
|
88
90
|
},
|
|
89
91
|
},
|
|
90
92
|
{
|
|
@@ -140,11 +142,13 @@ class GeminiClientImpl {
|
|
|
140
142
|
const asRecord = rawResponse;
|
|
141
143
|
if (asRecord['error']) {
|
|
142
144
|
const error = asRecord['error'];
|
|
143
|
-
return Err(new GeminiAPIError(
|
|
144
|
-
|
|
145
|
-
status: error['status'],
|
|
146
|
-
details: error['details'] || responseStructure,
|
|
145
|
+
return Err(new GeminiAPIError('Gemini API returned an error response', {
|
|
146
|
+
provider: 'gemini',
|
|
147
147
|
stage: 'api_error',
|
|
148
|
+
upstreamMessage: typeof error['message'] === 'string' ? error['message'] : 'Unknown error',
|
|
149
|
+
statusCode: typeof error['status'] === 'number' ? error['status'] : undefined,
|
|
150
|
+
rawErrorCode: error['code'],
|
|
151
|
+
rawDetails: error['details'] || responseStructure,
|
|
148
152
|
}));
|
|
149
153
|
}
|
|
150
154
|
return Err(new GeminiAPIError('Invalid response structure from Gemini API', {
|
|
@@ -187,7 +191,7 @@ class GeminiClientImpl {
|
|
|
187
191
|
}));
|
|
188
192
|
}
|
|
189
193
|
const candidate = responseData.candidates[0];
|
|
190
|
-
if (!candidate
|
|
194
|
+
if (!candidate?.content?.parts) {
|
|
191
195
|
return Err(new GeminiAPIError('No valid content in response', {
|
|
192
196
|
stage: 'candidate_extraction',
|
|
193
197
|
suggestion: 'The API response was incomplete. Please try again',
|
|
@@ -244,7 +248,7 @@ class GeminiClientImpl {
|
|
|
244
248
|
}
|
|
245
249
|
// Convert base64 image data to Buffer
|
|
246
250
|
const imageBuffer = Buffer.from(imagePart.inlineData.data, 'base64');
|
|
247
|
-
const mimeType = imagePart.inlineData.mimeType ||
|
|
251
|
+
const mimeType = normalizeMimeType(imagePart.inlineData.mimeType || DEFAULT_MIME_TYPE);
|
|
248
252
|
// Create metadata
|
|
249
253
|
const metadata = {
|
|
250
254
|
model: modelName,
|
|
@@ -267,22 +271,25 @@ class GeminiClientImpl {
|
|
|
267
271
|
handleError(error, prompt) {
|
|
268
272
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
269
273
|
// Check if it's a network error
|
|
270
|
-
if (
|
|
271
|
-
return Err(new NetworkError(
|
|
274
|
+
if (isNetworkError(error)) {
|
|
275
|
+
return Err(new NetworkError('Network error during Gemini image generation', 'Check your internet connection and try again', error instanceof Error ? error : undefined));
|
|
272
276
|
}
|
|
273
277
|
// Check if it's an API-specific error
|
|
274
278
|
if (this.isAPIError(error)) {
|
|
275
|
-
return Err(new GeminiAPIError(
|
|
279
|
+
return Err(new GeminiAPIError('Failed to generate image with Gemini', {
|
|
280
|
+
provider: 'gemini',
|
|
281
|
+
prompt,
|
|
282
|
+
upstreamMessage: errorMessage,
|
|
283
|
+
suggestion: this.getAPIErrorSuggestion(errorMessage),
|
|
284
|
+
}, extractStatusCode(error)));
|
|
276
285
|
}
|
|
277
286
|
// Generic API error
|
|
278
|
-
return Err(new GeminiAPIError(
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
return false;
|
|
287
|
+
return Err(new GeminiAPIError('Failed to generate image with Gemini', {
|
|
288
|
+
provider: 'gemini',
|
|
289
|
+
prompt,
|
|
290
|
+
upstreamMessage: errorMessage,
|
|
291
|
+
suggestion: 'Check your API key, quota, and prompt validity. Try again with a different prompt',
|
|
292
|
+
}));
|
|
286
293
|
}
|
|
287
294
|
isAPIError(error) {
|
|
288
295
|
if (error instanceof Error) {
|
|
@@ -304,12 +311,6 @@ class GeminiClientImpl {
|
|
|
304
311
|
}
|
|
305
312
|
return 'Check your API configuration and try again';
|
|
306
313
|
}
|
|
307
|
-
extractStatusCode(error) {
|
|
308
|
-
if (error && typeof error === 'object' && 'status' in error) {
|
|
309
|
-
return typeof error.status === 'number' ? error.status : undefined;
|
|
310
|
-
}
|
|
311
|
-
return undefined;
|
|
312
|
-
}
|
|
313
314
|
}
|
|
314
315
|
/**
|
|
315
316
|
* Creates a new Gemini API client
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiClient.js","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geminiClient.js","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,36 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { Result } from '../types/result.js';
|
|
7
7
|
import type { Config } from '../utils/config.js';
|
|
8
|
-
import { GeminiAPIError
|
|
8
|
+
import { GeminiAPIError } from '../utils/errors.js';
|
|
9
|
+
import type { TextClient } from './textClient.js';
|
|
9
10
|
/**
|
|
10
11
|
* Options for text generation
|
|
11
12
|
*/
|
|
12
|
-
export
|
|
13
|
-
temperature?: number;
|
|
14
|
-
maxTokens?: number;
|
|
15
|
-
timeout?: number;
|
|
16
|
-
systemInstruction?: string;
|
|
17
|
-
inputImage?: string;
|
|
18
|
-
topP?: number;
|
|
19
|
-
topK?: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Interface for Gemini Text Client - pure API client
|
|
23
|
-
*/
|
|
24
|
-
export interface GeminiTextClient {
|
|
25
|
-
/**
|
|
26
|
-
* Generate text using Gemini API
|
|
27
|
-
* @param prompt The prompt to send to the API
|
|
28
|
-
* @param config Optional configuration for generation
|
|
29
|
-
* @returns Result containing generated text or error
|
|
30
|
-
*/
|
|
31
|
-
generateText(prompt: string, config?: GenerationConfig): Promise<Result<string, GeminiAPIError | NetworkError>>;
|
|
32
|
-
/**
|
|
33
|
-
* Validate connection to Gemini API
|
|
34
|
-
* @returns Result indicating if connection is successful
|
|
35
|
-
*/
|
|
36
|
-
validateConnection(): Promise<Result<boolean, GeminiAPIError | NetworkError>>;
|
|
37
|
-
}
|
|
13
|
+
export type GeminiTextClient = TextClient;
|
|
38
14
|
/**
|
|
39
15
|
* Creates a new Gemini Text Client for prompt generation
|
|
40
16
|
* @param config Configuration containing API key and settings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiTextClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiTextClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"geminiTextClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiTextClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAgB,MAAM,oBAAoB,CAAA;AAGjE,OAAO,KAAK,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAoRzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAY/F"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import { GoogleGenAI } from '@google/genai';
|
|
7
7
|
import { Err, Ok } from '../types/result.js';
|
|
8
8
|
import { GeminiAPIError, NetworkError } from '../utils/errors.js';
|
|
9
|
+
import { DEFAULT_MIME_TYPE } from '../utils/mimeUtils.js';
|
|
10
|
+
import { isNetworkError } from './errorClassification.js';
|
|
9
11
|
/**
|
|
10
12
|
* Default configuration for text generation
|
|
11
13
|
*/
|
|
@@ -49,10 +51,6 @@ class GeminiTextClientImpl {
|
|
|
49
51
|
*/
|
|
50
52
|
async callGeminiAPI(prompt, config) {
|
|
51
53
|
try {
|
|
52
|
-
// Generate content with timeout
|
|
53
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
54
|
-
setTimeout(() => reject(new Error('API call timeout')), config.timeout || 15000);
|
|
55
|
-
});
|
|
56
54
|
// Build contents based on whether input image is provided (multimodal support)
|
|
57
55
|
let contents;
|
|
58
56
|
if (config.inputImage) {
|
|
@@ -63,7 +61,7 @@ class GeminiTextClientImpl {
|
|
|
63
61
|
{
|
|
64
62
|
inlineData: {
|
|
65
63
|
data: config.inputImage,
|
|
66
|
-
mimeType:
|
|
64
|
+
mimeType: config.inputImageMimeType ?? DEFAULT_MIME_TYPE,
|
|
67
65
|
},
|
|
68
66
|
},
|
|
69
67
|
{
|
|
@@ -77,8 +75,8 @@ class GeminiTextClientImpl {
|
|
|
77
75
|
// Text-only request
|
|
78
76
|
contents = prompt;
|
|
79
77
|
}
|
|
80
|
-
// Call Gemini API
|
|
81
|
-
const
|
|
78
|
+
// Call Gemini API with timeout via AbortSignal
|
|
79
|
+
const response = await this.genai.models.generateContent({
|
|
82
80
|
model: this.modelName,
|
|
83
81
|
contents,
|
|
84
82
|
config: {
|
|
@@ -92,9 +90,9 @@ class GeminiTextClientImpl {
|
|
|
92
90
|
thinkingConfig: {
|
|
93
91
|
thinkingBudget: 0,
|
|
94
92
|
},
|
|
93
|
+
abortSignal: AbortSignal.timeout(config.timeout || 15000),
|
|
95
94
|
},
|
|
96
95
|
});
|
|
97
|
-
const response = await Promise.race([apiCall, timeoutPromise]);
|
|
98
96
|
// Extract text from response - handling both possible response structures
|
|
99
97
|
let responseText;
|
|
100
98
|
if (typeof response.text === 'string') {
|
|
@@ -135,22 +133,25 @@ class GeminiTextClientImpl {
|
|
|
135
133
|
handleError(error, context) {
|
|
136
134
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
137
135
|
// Check for network errors
|
|
138
|
-
if (
|
|
139
|
-
return Err(new NetworkError(`Network error during ${context}
|
|
136
|
+
if (isNetworkError(error)) {
|
|
137
|
+
return Err(new NetworkError(`Network error during Gemini ${context}`, 'Check your internet connection and try again'));
|
|
140
138
|
}
|
|
141
139
|
// Check for API errors
|
|
142
140
|
if (this.isAPIError(error)) {
|
|
143
|
-
return Err(new GeminiAPIError(`Failed during ${context}
|
|
141
|
+
return Err(new GeminiAPIError(`Failed during Gemini ${context}`, {
|
|
142
|
+
provider: 'gemini',
|
|
143
|
+
stage: context,
|
|
144
|
+
upstreamMessage: errorMessage,
|
|
145
|
+
suggestion: this.getAPIErrorSuggestion(errorMessage),
|
|
146
|
+
}));
|
|
144
147
|
}
|
|
145
148
|
// Generic error
|
|
146
|
-
return Err(new GeminiAPIError(`Failed during ${context}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
return false;
|
|
149
|
+
return Err(new GeminiAPIError(`Failed during Gemini ${context}`, {
|
|
150
|
+
provider: 'gemini',
|
|
151
|
+
stage: context,
|
|
152
|
+
upstreamMessage: errorMessage,
|
|
153
|
+
suggestion: 'Check your API configuration and try again',
|
|
154
|
+
}));
|
|
154
155
|
}
|
|
155
156
|
isAPIError(error) {
|
|
156
157
|
if (error instanceof Error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiTextClient.js","sourceRoot":"","sources":["../../src/api/geminiTextClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"geminiTextClient.js","sourceRoot":"","sources":["../../src/api/geminiTextClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AspectRatio, ImageQuality, ImageSize } from '../types/mcp.js';
|
|
2
|
+
import type { Result } from '../types/result.js';
|
|
3
|
+
import type { GeminiAPIError, ImageAPIError, NetworkError } from '../utils/errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* Provider-neutral metadata for generated images.
|
|
6
|
+
*/
|
|
7
|
+
export interface ImageGenerationMetadata {
|
|
8
|
+
model: string;
|
|
9
|
+
prompt: string;
|
|
10
|
+
mimeType: string;
|
|
11
|
+
timestamp: Date;
|
|
12
|
+
inputImageProvided: boolean;
|
|
13
|
+
provider?: string;
|
|
14
|
+
modelVersion?: string;
|
|
15
|
+
responseId?: string;
|
|
16
|
+
revisedPrompt?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Provider-neutral image generation/editing parameters.
|
|
20
|
+
*/
|
|
21
|
+
export interface ImageApiParams {
|
|
22
|
+
prompt: string;
|
|
23
|
+
inputImage?: string;
|
|
24
|
+
inputImageMimeType?: string;
|
|
25
|
+
aspectRatio?: AspectRatio;
|
|
26
|
+
imageSize?: ImageSize;
|
|
27
|
+
useGoogleSearch?: boolean;
|
|
28
|
+
quality?: ImageQuality;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result of image generation.
|
|
32
|
+
*/
|
|
33
|
+
export interface GeneratedImageResult {
|
|
34
|
+
imageData: Buffer;
|
|
35
|
+
metadata: ImageGenerationMetadata;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Provider-neutral image client.
|
|
39
|
+
*/
|
|
40
|
+
export interface ImageClient {
|
|
41
|
+
generateImage(params: ImageApiParams): Promise<Result<GeneratedImageResult, GeminiAPIError | ImageAPIError | NetworkError>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=imageClient.d.ts.map
|